mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-01-18 13:14:34 +00:00
(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.
This commit is contained in:
parent
ea518f8d96
commit
8e26cfb157
2
train.h
2
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 */
|
||||
|
@ -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)) {
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user