diff options
author | peter1138 <peter1138@openttd.org> | 2007-05-12 07:05:34 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2007-05-12 07:05:34 +0000 |
commit | e16ea9b7582056a3483f5de6553573fccc792d15 (patch) | |
tree | aa8b73d935ad66bb61ddc8bd2026585301060743 | |
parent | aae8d359e609c9f47acd7aba9ca6305fa6a0682e (diff) | |
download | openttd-e16ea9b7582056a3483f5de6553573fccc792d15.tar.xz |
(svn r9828) -Codechange: [NewGRF] Add support for changing cargo capacity with callback 36. This is set on construction for ships and roadvehicles, and whenever carriages are attached for trains.
-rw-r--r-- | src/build_vehicle_gui.cpp | 11 | ||||
-rw-r--r-- | src/roadveh_cmd.cpp | 4 | ||||
-rw-r--r-- | src/ship_cmd.cpp | 4 | ||||
-rw-r--r-- | src/train_cmd.cpp | 2 |
4 files changed, 14 insertions, 7 deletions
diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index 6e66ea7ca..c7fb5f30e 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -386,7 +386,7 @@ static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const /* Wagon weight - (including cargo) */ uint weight = GetEngineProperty(engine_number, 0x16, rvi->weight); SetDParam(0, weight); - SetDParam(1, (GetCargo(rvi->cargo_type)->weight * rvi->capacity >> 4) + weight); + SetDParam(1, (GetCargo(rvi->cargo_type)->weight * GetEngineProperty(engine_number, 0x14, rvi->capacity) >> 4) + weight); DrawString(x, y, STR_PURCHASE_INFO_WEIGHT_CWEIGHT, 0); y += 10; @@ -461,7 +461,7 @@ static int DrawRoadVehPurchaseInfo(int x, int y, EngineID engine_number, const R /* Cargo type + capacity */ SetDParam(0, rvi->cargo_type); - SetDParam(1, rvi->capacity); + SetDParam(1, GetEngineProperty(engine_number, 0x0F, rvi->capacity)); SetDParam(2, refittable ? STR_9842_REFITTABLE : STR_EMPTY); DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, 0); y += 10; @@ -480,7 +480,7 @@ static int DrawShipPurchaseInfo(int x, int y, EngineID engine_number, const Ship /* Cargo type + capacity */ SetDParam(0, svi->cargo_type); - SetDParam(1, svi->capacity); + SetDParam(1, GetEngineProperty(engine_number, 0x0D, svi->capacity)); SetDParam(2, svi->refittable ? STR_9842_REFITTABLE : STR_EMPTY); DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, 0); y += 10; @@ -545,8 +545,9 @@ int DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number) switch (e->type) { case VEH_TRAIN: { const RailVehicleInfo *rvi = RailVehInfo(engine_number); + uint capacity = GetEngineProperty(engine_number, 0x14, rvi->capacity); - refitable = (EngInfo(engine_number)->refit_mask != 0) && (rvi->capacity > 0); + refitable = (EngInfo(engine_number)->refit_mask != 0) && (capacity > 0); if (rvi->railveh_type == RAILVEH_WAGON) { y = DrawRailWagonPurchaseInfo(x, y, engine_number, rvi); @@ -562,7 +563,7 @@ int DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number) int multihead = (rvi->railveh_type == RAILVEH_MULTIHEAD ? 1 : 0); SetDParam(0, rvi->cargo_type); - SetDParam(1, (rvi->capacity * (CountArticulatedParts(engine_number) + 1)) << multihead); + SetDParam(1, (capacity * (CountArticulatedParts(engine_number) + 1)) << multihead); SetDParam(2, refitable ? STR_9842_REFITTABLE : STR_EMPTY); } DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, 0); diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index d87688600..aff10c3f8 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -211,6 +211,8 @@ int32 CmdBuildRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) v->vehicle_flags = 0; if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SETBIT(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); + v->cargo_cap = GetVehicleProperty(v, 0x0F, rvi->capacity); + VehiclePositionChanged(v); InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); @@ -1849,7 +1851,7 @@ int32 CmdRefitRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) * carry twice as much mail/goods as normal cargo, and four times as * many passengers */ - capacity = rvi->capacity; + capacity = GetVehicleProperty(v, 0x0F, rvi->capacity); switch (old_cid) { case CT_PASSENGERS: break; case CT_MAIL: diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index 67b18b5e9..ef887873d 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -878,6 +878,8 @@ int32 CmdBuildShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) v->vehicle_flags = 0; if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SETBIT(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE); + v->cargo_cap = GetVehicleProperty(v, 0x0D, svi->capacity); + VehiclePositionChanged(v); InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile); @@ -1090,7 +1092,7 @@ int32 CmdRefitShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) } if (capacity == CALLBACK_FAILED) { - capacity = ShipVehInfo(v->engine_type)->capacity; + capacity = GetVehicleProperty(v, 0x0D, ShipVehInfo(v->engine_type)->capacity); } _returned_refit_capacity = capacity; diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 0b80bbb89..9d4bb36f1 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -220,6 +220,8 @@ void TrainConsistChanged(Vehicle* v) } } + u->cargo_cap = GetVehicleProperty(u, 0x14, rvi_u->capacity); + /* check the vehicle length (callback) */ uint16 veh_len = CALLBACK_FAILED; if (HASBIT(EngInfo(u->engine_type)->callbackmask, CBM_VEHICLE_LENGTH)) { |