TBTR: Show empty and full train weights in GUI, and weight ratios if enabled

This commit is contained in:
Jonathan G Rennison
2020-08-28 18:37:50 +01:00
parent e2de103d82
commit beaeda2990
10 changed files with 117 additions and 20 deletions

View File

@@ -314,12 +314,31 @@ public:
y += FONT_HEIGHT_NORMAL;
}
/* Draw vehicle performance info */
const bool original_acceleration = (_settings_game.vehicle.train_acceleration_model == AM_ORIGINAL ||
GetRailTypeInfo(this->virtual_train->railtype)->acceleration_type == 2);
const GroundVehicleCache *gcache = this->virtual_train->GetGroundVehicleCache();
SetDParam(2, this->virtual_train->GetDisplayMaxSpeed());
SetDParam(1, gcache->cached_power);
SetDParam(0, gcache->cached_weight);
SetDParam(3, gcache->cached_max_te / 1000);
DrawString(8, r.right, y, STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE);
DrawString(8, r.right, y, original_acceleration ? STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED : STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE);
uint32 full_cargo_weight = 0;
for (Train *train = this->virtual_train; train != nullptr; train = train->Next()) {
full_cargo_weight += train->GetCargoWeight(train->cargo_cap);
}
if (full_cargo_weight > 0 || _settings_client.gui.show_train_weight_ratios_in_details) {
y += FONT_HEIGHT_NORMAL;
uint full_weight = gcache->cached_weight + full_cargo_weight;
SetDParam(0, full_weight);
if (_settings_client.gui.show_train_weight_ratios_in_details) {
SetDParam(1, STR_VEHICLE_INFO_WEIGHT_RATIOS);
SetDParam(2, (100 * this->virtual_train->gcache.cached_power) / max<uint>(1, full_weight));
SetDParam(3, (this->virtual_train->gcache.cached_max_te / 10) / max<uint>(1, full_weight));
} else {
SetDParam(1, STR_EMPTY);
}
DrawString(8, r.right, y, STR_VEHICLE_INFO_FULL_WEIGHT_WITH_RATIOS);
}
/* Draw cargo summary */
CargoArray cargo_caps;
for (const Train *tmp = this->virtual_train; tmp != nullptr; tmp = tmp->Next()) {