mirror of
https://github.com/OpenTTD/OpenTTD
synced 2026-01-23 20:24:12 +01:00
Fix: NewGRF Global variables 0D, 0E and 1E refer to wrong GRFFile. (#13986)
These variables used GrfProcessingState, which is only valid while loading GRFs, after which they always point to the last loaded GRFFile.
This commit is contained in:
@@ -458,11 +458,11 @@ bool GetGlobalVariable(uint8_t param, uint32_t *value, const GRFFile *grffile)
|
||||
}
|
||||
|
||||
case 0x0D: // TTD Version, 00=DOS, 01=Windows
|
||||
*value = _cur.grfconfig->palette & GRFP_USE_MASK;
|
||||
*value = GetGRFConfig(grffile->grfid)->palette & GRFP_USE_MASK;
|
||||
return true;
|
||||
|
||||
case 0x0E: // Y-offset for train sprites
|
||||
*value = _cur.grffile->traininfo_vehicle_pitch;
|
||||
*value = grffile->traininfo_vehicle_pitch;
|
||||
return true;
|
||||
|
||||
case 0x0F: // Rail track type cost factors
|
||||
@@ -509,7 +509,7 @@ bool GetGlobalVariable(uint8_t param, uint32_t *value, const GRFFile *grffile)
|
||||
|
||||
/* Add the local flags */
|
||||
assert(!bits.Test(GrfMiscBit::TrainWidth32Pixels));
|
||||
if (_cur.grffile->traininfo_vehicle_width == VEHICLEINFO_FULL_VEHICLE_WIDTH) bits.Set(GrfMiscBit::TrainWidth32Pixels);
|
||||
if (grffile->traininfo_vehicle_width == VEHICLEINFO_FULL_VEHICLE_WIDTH) bits.Set(GrfMiscBit::TrainWidth32Pixels);
|
||||
|
||||
*value = bits.base();
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user