mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
(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)
This commit is contained in:
parent
c9d8fb8f07
commit
fccfada0b3
14
newgrf.c
14
newgrf.c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user