Add settings for town/industry cargo production scaling modes

This commit is contained in:
Jonathan G Rennison
2024-01-16 19:12:10 +00:00
parent 53d29852e4
commit 3ab31f5518
8 changed files with 103 additions and 3 deletions

View File

@@ -2701,7 +2701,16 @@ uint CargoScaler::ScaleAllowTrunc(uint num)
void UpdateCargoScalers()
{
_town_cargo_scaler.SetScale((_settings_game.economy.town_cargo_scale << 16) / 100);
_industry_cargo_scaler.SetScale((_settings_game.economy.industry_cargo_scale << 16) / 100);
_industry_inverse_cargo_scaler.SetScale((100 << 16) / std::max<uint>(1, _settings_game.economy.industry_cargo_scale));
uint town_scale = _settings_game.economy.town_cargo_scale;
if (_settings_game.economy.town_cargo_scale_mode == CSM_DAYLENGTH) {
town_scale = Clamp<uint>(town_scale * _settings_game.economy.day_length_factor, 1, 5000);
}
_town_cargo_scaler.SetScale((town_scale << 16) / 100);
uint industry_scale = _settings_game.economy.industry_cargo_scale;
if (_settings_game.economy.industry_cargo_scale_mode == CSM_DAYLENGTH) {
industry_scale = Clamp<uint>(industry_scale * _settings_game.economy.day_length_factor, 5, 3000);
}
_industry_cargo_scaler.SetScale((industry_scale << 16) / 100);
_industry_inverse_cargo_scaler.SetScale((100 << 16) / std::max<uint>(1, industry_scale));
}