src/newgrf.cpp
changeset 7772 c89384e3f8de
parent 7757 3e63b119a5bf
child 7780 12ef69de4e60
--- a/src/newgrf.cpp	Sat Oct 20 21:05:18 2007 +0000
+++ b/src/newgrf.cpp	Sat Oct 20 21:39:50 2007 +0000
@@ -45,6 +45,8 @@
 #include "newgrf_commons.h"
 #include "newgrf_townname.h"
 #include "newgrf_industries.h"
+#include "table/landscape_sprite.h"
+#include "gfxinit.h"
 
 /* TTDPatch extended GRF format codec
  * (c) Petr Baudis 2004 (GPL'd)
@@ -3232,6 +3234,7 @@
 	/* TODO */
 
 	SpriteID replace = 0;
+	const SpriteID *index_tbl = NULL;
 
 	if (!check_length(len, 2, "GraphicsNew")) return;
 	buf++;
@@ -3256,11 +3259,13 @@
 			break;
 
 		case 0x06: // Foundations
-			if (num != 74) {
-				grfmsg(1, "GraphicsNew: Foundation graphics sprite count must be 74, skipping");
-				return;
+			switch (num) {
+				case 74: replace = SPR_SLOPES_BASE; break;
+				case 90: index_tbl = _slopes_action05_90; break;
+				default:
+					grfmsg(1, "GraphicsNew: Foundation graphics sprite count must be 74 or 90, skipping");
+					return;
 			}
-			replace = SPR_SLOPES_BASE;
 			break;
 
 		case 0x08: // Canal graphics
@@ -3326,6 +3331,12 @@
 			return;
 	}
 
+	if (index_tbl != NULL) {
+		grfmsg(2, "GraphicsNew: Loading %u sprites of type 0x%02X at indexed SpriteIDs", num, type);
+		LoadSpritesIndexed(_file_index, &_nfo_line, index_tbl);
+		return;
+	}
+
 	if (replace == 0) {
 		grfmsg(2, "GraphicsNew: Loading %u sprites of type 0x%02X at SpriteID 0x%04X", num, type, _cur_spriteid);
 	} else {