Change cargo scaling settings to be linear instead of logarithmic

This commit is contained in:
Jonathan G Rennison
2024-01-16 18:02:34 +00:00
parent c8ff26f2b8
commit 1e0bb019a7
21 changed files with 190 additions and 96 deletions

View File

@@ -109,6 +109,10 @@ Prices _price;
Money _additional_cash_required;
static PriceMultipliers _price_base_multiplier;
CargoScaler _town_cargo_scaler;
CargoScaler _industry_cargo_scaler;
CargoScaler _industry_inverse_cargo_scaler;
extern int GetAmountOwnedBy(const Company *c, Owner owner);
/**
@@ -2689,3 +2693,15 @@ uint ScaleQuantity(uint amount, int cf, int fine, bool allow_trunc)
return amount;
}
uint CargoScaler::ScaleAllowTrunc(uint num)
{
return this->ScaleWithBias(num, Random() & 0xFFFF);
}
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));
}