diff options
author | miham <miham@openttd.org> | 2004-11-17 02:24:21 +0000 |
---|---|---|
committer | miham <miham@openttd.org> | 2004-11-17 02:24:21 +0000 |
commit | 4fb8338fa64b6fcd0a68a726d4f7448528ede655 (patch) | |
tree | 3cb9acac14988652515e6674a0303cf2ec22ea12 | |
parent | dd90693a4ca320734c3d5ea3612299f01aae9ad2 (diff) | |
download | openttd-4fb8338fa64b6fcd0a68a726d4f7448528ede655.tar.xz |
(svn r651) LoadNewGrfFile() now doesn't care about num_sprites and just loads whatever is
available. Fixes George's long vehicles. (pasky)
-rw-r--r-- | spritecache.c | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/spritecache.c b/spritecache.c index 4c7aeff71..179a8d814 100644 --- a/spritecache.c +++ b/spritecache.c @@ -308,9 +308,6 @@ static int LoadGrfFile(const char *filename, int load_index, int file_index) static int LoadNewGrfFile(const char *filename, int load_index, int file_index) { - /* XXX: Is it better to fervently follow the num_sprites information or - * be tolerant and comply with more/less sprites too? --pasky */ - int num_sprites = 0; int i; FioOpenFile(file_index, filename); @@ -321,6 +318,9 @@ static int LoadNewGrfFile(const char *filename, int load_index, int file_index) DEBUG(spritecache, 2) ("Reading newgrf-file ``%s'' [offset: %u]", filename, load_index); + /* Skip the first sprite; we don't care about how many sprites this + * does contain; newest TTDPatches and George's longvehicles don't + * neither, apparently. */ { int length; byte type; @@ -329,24 +329,16 @@ static int LoadNewGrfFile(const char *filename, int load_index, int file_index) type = FioReadByte(); if ((length == 4) && (type == 0xFF)) { - num_sprites = FioReadDword(); + FioReadDword(); } else { error("Custom .grf has invalid format."); } - - /* Ignore last sprite, it's only used to mark end-of-file */ - num_sprites--; - load_index++; } - if ((load_index + num_sprites) > NUM_SPRITES) - error("Too many sprites (%x). Recompile with higher NUM_SPRITES value or remove some custom GRF files.", - load_index + num_sprites); - - for (i = 0; i < num_sprites; i++) { - if (!LoadNextSprite(load_index + i, file_index)) - error("NEWGRF: Header was talking abount %d sprites, but only %d found..", - num_sprites, i); + for (i = 0; LoadNextSprite(load_index + i, file_index); i++) { + if (load_index + i >= NUM_SPRITES) + error("Too many sprites (%x). Recompile with higher NUM_SPRITES value or remove some custom GRF files.", + load_index + i); } /* Clean up. */ @@ -354,7 +346,7 @@ static int LoadNewGrfFile(const char *filename, int load_index, int file_index) memset(_replace_sprites_count, 0, 16 * sizeof(*_replace_sprites_count)); memset(_replace_sprites_offset, 0, 16 * sizeof(*_replace_sprites_offset)); - return num_sprites; + return i; } static void LoadGrfIndexed(const char *filename, const uint16 *index_tbl, int file_index) |