mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r24273) -Fix: [NewGRF] GetReverseCargoTranslation() was unnecessary complicated and also returned the wrong thing for cargos not present in the translation table.
This commit is contained in:
parent
9522dbb1a9
commit
5a34b744b1
|
@ -126,18 +126,3 @@ CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile, bool usebit)
|
||||||
}
|
}
|
||||||
return CT_INVALID;
|
return CT_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 GetReverseCargoTranslation(CargoID cargo, const GRFFile *grffile)
|
|
||||||
{
|
|
||||||
/* Note: All grf versions use CargoBit here. Pre-version 7 do NOT use the 'climate dependent' ID. */
|
|
||||||
const CargoSpec *cs = CargoSpec::Get(cargo);
|
|
||||||
|
|
||||||
/* If the GRF contains a translation table (and the cargo is in the table)
|
|
||||||
* then get the cargo ID for the label */
|
|
||||||
for (uint i = 0; i < grffile->cargo_max; i++) {
|
|
||||||
if (cs->label == grffile->cargo_list[i]) return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* No matching label was found, so we return the 'climate independent' 'bitnum' */
|
|
||||||
return cs->bitnum;
|
|
||||||
}
|
|
||||||
|
|
|
@ -27,6 +27,5 @@ struct GRFFile;
|
||||||
SpriteID GetCustomCargoSprite(const CargoSpec *cs);
|
SpriteID GetCustomCargoSprite(const CargoSpec *cs);
|
||||||
uint16 GetCargoCallback(CallbackID callback, uint32 param1, uint32 param2, const CargoSpec *cs);
|
uint16 GetCargoCallback(CallbackID callback, uint32 param1, uint32 param2, const CargoSpec *cs);
|
||||||
CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile, bool usebit = false);
|
CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile, bool usebit = false);
|
||||||
uint8 GetReverseCargoTranslation(CargoID cargo, const GRFFile *grffile);
|
|
||||||
|
|
||||||
#endif /* NEWGRF_CARGO_H */
|
#endif /* NEWGRF_CARGO_H */
|
||||||
|
|
|
@ -657,7 +657,7 @@ bool IndustryTemporarilyRefusesCargo(Industry *ind, CargoID cargo_type)
|
||||||
const IndustrySpec *indspec = GetIndustrySpec(ind->type);
|
const IndustrySpec *indspec = GetIndustrySpec(ind->type);
|
||||||
if (HasBit(indspec->callback_mask, CBM_IND_REFUSE_CARGO)) {
|
if (HasBit(indspec->callback_mask, CBM_IND_REFUSE_CARGO)) {
|
||||||
uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO,
|
uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO,
|
||||||
0, GetReverseCargoTranslation(cargo_type, indspec->grf_prop.grffile),
|
0, indspec->grf_prop.grffile->cargo_map[cargo_type],
|
||||||
ind, ind->type, ind->location.tile);
|
ind, ind->type, ind->location.tile);
|
||||||
if (res != CALLBACK_FAILED) return !ConvertBooleanCallback(indspec->grf_prop.grffile, CBID_INDUSTRY_REFUSE_CARGO, res);
|
if (res != CALLBACK_FAILED) return !ConvertBooleanCallback(indspec->grf_prop.grffile, CBID_INDUSTRY_REFUSE_CARGO, res);
|
||||||
}
|
}
|
||||||
|
|
|
@ -958,7 +958,7 @@ void TriggerStationAnimation(BaseStation *st, TileIndex tile, StationAnimationTr
|
||||||
if (cargo_type == CT_INVALID) {
|
if (cargo_type == CT_INVALID) {
|
||||||
cargo = CT_INVALID;
|
cargo = CT_INVALID;
|
||||||
} else {
|
} else {
|
||||||
cargo = GetReverseCargoTranslation(cargo_type, ss->grf_prop.grffile);
|
cargo = ss->grf_prop.grffile->cargo_map[cargo_type];
|
||||||
}
|
}
|
||||||
StationAnimationBase::ChangeAnimationFrame(CBID_STATION_ANIM_START_STOP, ss, st, tile, (random_bits << 16) | Random(), (uint8)trigger | (cargo << 8));
|
StationAnimationBase::ChangeAnimationFrame(CBID_STATION_ANIM_START_STOP, ss, st, tile, (random_bits << 16) | Random(), (uint8)trigger | (cargo << 8));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue