From 8e26cfb157420959fe3cde0c511d81089335fb74 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Sun, 10 Dec 2006 19:00:06 +0000 Subject: (svn r7473) -Fix (r7269): Pass a cargo type to determine the freight weight multiplier instead of a vehicle. Fixes incorrect display of total train capacity. --- train.h | 2 +- train_cmd.c | 9 ++++----- train_gui.c | 6 +++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/train.h b/train.h index 318552656..aead2f2ca 100644 --- a/train.h +++ b/train.h @@ -222,6 +222,6 @@ uint CountArticulatedParts(EngineID engine_type); int CheckTrainInDepot(const Vehicle *v, bool needs_to_be_stopped); void CcCloneTrain(bool success, TileIndex tile, uint32 p1, uint32 p2); -byte FreightWagonMult(const Vehicle *v); +byte FreightWagonMult(CargoID cargo); #endif /* TRAIN_H */ diff --git a/train_cmd.c b/train_cmd.c index 0632532d7..11bf9ae10 100644 --- a/train_cmd.c +++ b/train_cmd.c @@ -42,14 +42,13 @@ static const byte _state_dir_table[4] = { 0x20, 8, 0x10, 4 }; /** Return the cargo weight multiplier to use for a rail vehicle - * @param v Vehicle (wagon) to get multiplier for + * @param cargo Cargo type to get multiplier for * @return Cargo weight multiplier */ -byte FreightWagonMult(const Vehicle *v) +byte FreightWagonMult(CargoID cargo) { - assert(v->type == VEH_Train); // XXX NewCargos introduces a specific "is freight" flag for this test. - if (v->cargo_type == CT_PASSENGERS || v->cargo_type == CT_MAIL) return 1; + if (cargo == CT_PASSENGERS || cargo == CT_MAIL) return 1; return _patches.freight_trains; } @@ -66,7 +65,7 @@ static void TrainCargoChanged(Vehicle* v) for (u = v; u != NULL; u = u->next) { const RailVehicleInfo *rvi = RailVehInfo(u->engine_type); - uint32 vweight = (_cargoc.weights[u->cargo_type] * u->cargo_count * FreightWagonMult(u)) / 16; + uint32 vweight = (_cargoc.weights[u->cargo_type] * u->cargo_count * FreightWagonMult(u->cargo_type)) / 16; // Vehicle weight is not added for articulated parts. if (!IsArticulatedPart(u)) { diff --git a/train_gui.c b/train_gui.c index cc2f4609b..f3e461bbc 100644 --- a/train_gui.c +++ b/train_gui.c @@ -844,7 +844,7 @@ static void TrainDetailsCargoTab(const Vehicle *v, int x, int y) SetDParam(1, num); SetDParam(2, v->cargo_source); SetDParam(3, _patches.freight_trains); - str = FreightWagonMult(v) > 1 ? STR_FROM_MULT : STR_8813_FROM; + str = FreightWagonMult(v->cargo_type) > 1 ? STR_FROM_MULT : STR_8813_FROM; } DrawString(x, y, str, 0); } @@ -870,7 +870,7 @@ static void TrainDetailsCapacityTab(const Vehicle *v, int x, int y) SetDParam(0, v->cargo_type); SetDParam(1, v->cargo_cap); SetDParam(2, _patches.freight_trains); - DrawString(x, y, FreightWagonMult(v) > 1 ? STR_CAPACITY_MULT : STR_013F_CAPACITY, 0); + DrawString(x, y, FreightWagonMult(v->cargo_type) > 1 ? STR_CAPACITY_MULT : STR_013F_CAPACITY, 0); } } @@ -1008,7 +1008,7 @@ static void DrawTrainDetailsWindow(Window *w) SetDParam(2, i); // {SHORTCARGO} #1 SetDParam(3, max_cargo[i]); // {SHORTCARGO} #2 SetDParam(4, _patches.freight_trains); - DrawString(x, y + 2, FreightWagonMult(v) > 1 ? STR_TOTAL_CAPACITY_MULT : STR_013F_TOTAL_CAPACITY, 0); + DrawString(x, y + 2, FreightWagonMult(i) > 1 ? STR_TOTAL_CAPACITY_MULT : STR_013F_TOTAL_CAPACITY, 0); } } } -- cgit v1.2.3-70-g09d2