From ed8a66e3d187f95cfe026cf797839e5db631a620 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Fri, 13 Apr 2007 19:32:18 +0000 Subject: (svn r9620) -Codechange: apply cargo translation table to newstation variables 0x60..0x65 --- src/newgrf_cargo.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/newgrf_cargo.cpp') diff --git a/src/newgrf_cargo.cpp b/src/newgrf_cargo.cpp index c09cb10d2..788e2fbe5 100644 --- a/src/newgrf_cargo.cpp +++ b/src/newgrf_cargo.cpp @@ -94,3 +94,17 @@ uint16 GetCargoCallback(uint16 callback, uint32 param1, uint32 param2, const Car return group->g.callback.result; } + + +CargoID GetCargoTranslation(uint8 cargo, const GRFFile *grffile) +{ + /* Pre-version 7 uses the 'climate dependent' ID, i.e. cargo is the cargo ID */ + if (grffile->grf_version < 7) return HASBIT(_cargo_mask, cargo) ? cargo : (CargoID) CT_INVALID; + + /* If the GRF contains a translation table (and the cargo is in bounds) + * then get the cargo ID for the label */ + if (cargo < grffile->cargo_max) return GetCargoIDByLabel(grffile->cargo_list[cargo]); + + /* Else the cargo value is a 'climate independent' 'bitnum' */ + return GetCargoIDByBitnum(cargo); +} -- cgit v1.2.3-54-g00ecf