diff options
author | peter1138 <peter1138@openttd.org> | 2006-05-01 16:54:18 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2006-05-01 16:54:18 +0000 |
commit | 6942f235ccb74bcbf3d994377867d3b4f07d00df (patch) | |
tree | e14ea7c328102ef28a7a6121f049fae51aad5e0b | |
parent | 4e85de164ce83e6d23850bccf3c384bbcb12b630 (diff) | |
download | openttd-6942f235ccb74bcbf3d994377867d3b4f07d00df.tar.xz |
(svn r4651) - NewGRF: support loading of catenary sprites from NewGRF files. This actually works by replacing our hardcoded sprites.
-rw-r--r-- | newgrf.c | 18 |
1 files changed, 16 insertions, 2 deletions
@@ -21,6 +21,7 @@ #include "newgrf_engine.h" #include "vehicle.h" #include "newgrf_text.h" +#include "table/sprites.h" #include "newgrf_spritegroup.h" @@ -1890,6 +1891,7 @@ static void GraphicsNew(byte *buf, int len) uint8 type; uint16 num; + SpriteID replace = 0; check_length(len, 2, "GraphicsNew"); buf++; @@ -1905,16 +1907,28 @@ static void GraphicsNew(byte *buf, int len) _signal_base = _cur_spriteid; break; + case 0x05: /* Catenary graphics */ + if (num != 48) { + grfmsg(GMS_WARN, "GraphicsNews: Catenary graphics sprite count must be 48, skipping."); + return; + } + replace = SPR_ELRAIL_BASE + 3; + break; + default: grfmsg(GMS_NOTICE, "GraphicsNew: Custom graphics (type 0x%02X) sprite block of length %u (unimplemented, ignoring).\n", type, num); return; } - grfmsg(GMS_NOTICE, "GraphicsNew: Loading %u sprites of type 0x%02X at SpriteID 0x%04X", num, type, _cur_spriteid); + if (replace == 0) { + grfmsg(GMS_NOTICE, "GraphicsNew: Loading %u sprites of type 0x%02X at SpriteID 0x%04X", num, type, _cur_spriteid); + } else { + grfmsg(GMS_NOTICE, "GraphicsNew: Replacing %u sprites of type 0x%02X at SpriteID 0x%04X", num, type, replace); + } for (; num > 0; num--) { - LoadNextSprite(_cur_spriteid++, _file_index); + LoadNextSprite(replace == 0 ? _cur_spriteid++ : replace++, _file_index); _nfo_line++; } } |