diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index 2cd776202b..3cb651c459 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -755,11 +755,17 @@ static GUIEngineList::FilterFunction * const _filter_funcs[] = { &CargoAndEngineFilter, }; -static uint GetCargoWeight(const CargoArray &cap) +static uint GetCargoWeight(const CargoArray &cap, VehicleType vtype) { uint weight = 0; for (CargoID c = 0; c < NUM_CARGO; c++) { - if (cap[c] != 0) weight += CargoSpec::Get(c)->weight * cap[c] / 16; + if (cap[c] != 0) { + if (vtype == VEH_TRAIN) { + weight += CargoSpec::Get(c)->WeightOfNUnitsInTrain(cap[c]); + } else { + weight += CargoSpec::Get(c)->WeightOfNUnits(cap[c]); + } + } } return weight; } @@ -798,7 +804,7 @@ static int DrawRailWagonPurchaseInfo(int left, int right, int y, EngineID engine /* Wagon weight - (including cargo) */ uint weight = e->GetDisplayWeight(); SetDParam(0, weight); - SetDParam(1, GetCargoWeight(te.all_capacities) + weight); + SetDParam(1, GetCargoWeight(te.all_capacities, VEH_TRAIN) + weight); DrawString(left, right, y, STR_PURCHASE_INFO_WEIGHT_CWEIGHT); y += FONT_HEIGHT_NORMAL; @@ -891,7 +897,7 @@ static int DrawRoadVehPurchaseInfo(int left, int right, int y, EngineID engine_n /* Road vehicle weight - (including cargo) */ int16 weight = e->GetDisplayWeight(); SetDParam(0, weight); - SetDParam(1, GetCargoWeight(te.all_capacities) + weight); + SetDParam(1, GetCargoWeight(te.all_capacities, VEH_ROAD) + weight); DrawString(left, right, y, STR_PURCHASE_INFO_WEIGHT_CWEIGHT); y += FONT_HEIGHT_NORMAL;