diff options
Diffstat (limited to 'src/newgrf.cpp')
-rw-r--r-- | src/newgrf.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp index f8d5b788c..307fc48ed 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -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 @@ static void GraphicsNew(byte *buf, int len) /* TODO */ SpriteID replace = 0; + const SpriteID *index_tbl = NULL; if (!check_length(len, 2, "GraphicsNew")) return; buf++; @@ -3256,11 +3259,13 @@ static void GraphicsNew(byte *buf, int len) 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 @@ static void GraphicsNew(byte *buf, int len) 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 { |