diff -r a900b80b48f2 -r c89384e3f8de src/newgrf.cpp --- 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 {