Add setting to select cargo payment algorithm

See: #506
This commit is contained in:
Jonathan G Rennison
2023-04-29 13:00:33 +01:00
parent 211c1ba61d
commit e26bea6ce4
7 changed files with 40 additions and 3 deletions

View File

@@ -1071,13 +1071,18 @@ Money GetTransportedGoodsIncome(uint num_pieces, uint dist, uint16 transit_days,
static const int TIME_FACTOR_FRAC_BITS = 4;
static const int TIME_FACTOR_FRAC = 1 << TIME_FACTOR_FRAC_BITS;
if (_settings_game.economy.payment_algorithm == CPA_TRADITIONAL) transit_days = std::min<uint16>(transit_days, 0xFFu);
const int days1 = cs->transit_days[0];
const int days2 = cs->transit_days[1];
const int days_over_days1 = std::max( transit_days - days1, 0);
const int days_over_days2 = std::max(days_over_days1 - days2, 0);
int days_over_max = MIN_TIME_FACTOR - MAX_TIME_FACTOR;
if (days2 > -days_over_max) days_over_max += transit_days - days1;
else days_over_max += 2 * (transit_days - days1) - days2;
int days_over_max = 0;
if (_settings_game.economy.payment_algorithm == CPA_MODERN) {
days_over_max = MIN_TIME_FACTOR - MAX_TIME_FACTOR;
if (days2 > -days_over_max) days_over_max += transit_days - days1;
else days_over_max += 2 * (transit_days - days1) - days2;
}
/*
* The time factor is calculated based on the time it took