diff options
author | peter1138 <peter1138@openttd.org> | 2006-01-27 07:13:58 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2006-01-27 07:13:58 +0000 |
commit | fccfada0b3e024ab0152417e910c715b66394005 (patch) | |
tree | a3fa5e0789f4db675b5dd43f9c0d98bfa51fbad9 | |
parent | c9d8fb8f07e99b64d0e4e0cc12cd118a61073275 (diff) | |
download | openttd-fccfada0b3e024ab0152417e910c715b66394005.tar.xz |
(svn r3449) - NewGRF Fix: When changing the sprite ID of a vehicle, if it is not FD (custom graphics), the value needs to changed from a 16bit array offset to an array index. (fixes tropicstw.grf)
-rw-r--r-- | newgrf.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -272,6 +272,11 @@ static bool RailVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf FOR_EACH_OBJECT { uint8 spriteid = grf_load_byte(&buf); + /* TTD sprite IDs point to a location in a 16bit array, but we use it + * as an array index, so we need it to be half the original value. */ + if (spriteid < 0xFD) + spriteid >>= 1; + rvi[i].image_index = spriteid; } } break; @@ -481,6 +486,9 @@ static bool RoadVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf if (spriteid == 0xFF) spriteid = 0xFD; // cars have different custom id in the GRF file + if (spriteid < 0xFD) + spriteid >>= 1; + rvi[i].image_index = spriteid; } } break; @@ -582,6 +590,9 @@ static bool ShipVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf if (spriteid == 0xFF) spriteid = 0xFD; // ships have different custom id in the GRF file + if (spriteid < 0xFD) + spriteid >>= 1; + svi[i].image_index = spriteid; } } break; @@ -699,6 +710,9 @@ static bool AircraftVehicleChangeInfo(uint engine, int numinfo, int prop, byte * if (spriteid == 0xFF) spriteid = 0xFD; // ships have different custom id in the GRF file + if (spriteid < 0xFD) + spriteid >>= 1; + avi[i].image_index = spriteid; } } break; |