mirror of https://github.com/OpenTTD/OpenTTD
Replaced max_loan with a function that calculates the max_loan from the max_loan_percentage (added some includes in where they were used)
And replaced other uses of max_loan with max_loan_percentage.pull/12974/head
parent
9cdd217e53
commit
42301884ce
|
@ -17,6 +17,7 @@
|
|||
#include "timer/timer_game_economy.h"
|
||||
#include "settings_type.h"
|
||||
#include "group.h"
|
||||
#include "currency.h"
|
||||
|
||||
static const Money COMPANY_MAX_LOAN_DEFAULT = INT64_MIN;
|
||||
|
||||
|
@ -189,6 +190,15 @@ struct Company : CompanyProperties, CompanyPool::PoolItem<&_company_pool> {
|
|||
static void PostDestructor(size_t index);
|
||||
};
|
||||
|
||||
/**
|
||||
* Function to get the max loan from the saved percentage in the settings (inline makes it avoid many unwanted errors)
|
||||
*/
|
||||
inline uint32_t GetMaxLoanFromPercentage()
|
||||
{
|
||||
return ((_settings_game.difficulty.max_loan_percentage / 100) * 300000) * GetCurrency().rate;
|
||||
}
|
||||
|
||||
|
||||
Money CalculateCompanyValue(const Company *c, bool including_loan = true);
|
||||
Money CalculateHostileTakeoverValue(const Company *c);
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include "sound_func.h"
|
||||
#include "autoreplace_func.h"
|
||||
#include "company_gui.h"
|
||||
#include "company_base.h"
|
||||
#include "signs_base.h"
|
||||
#include "subsidy_base.h"
|
||||
#include "subsidy_func.h"
|
||||
|
@ -762,7 +763,7 @@ bool AddInflation(bool check_year)
|
|||
void RecomputePrices()
|
||||
{
|
||||
/* Setup maximum loan as a rounded down multiple of LOAN_INTERVAL. */
|
||||
_economy.max_loan = ((uint64_t)_settings_game.difficulty.max_loan * _economy.inflation_prices >> 16) / LOAN_INTERVAL * LOAN_INTERVAL;
|
||||
_economy.max_loan = ((uint64_t)GetMaxLoanFromPercentage() * _economy.inflation_prices >> 16) / LOAN_INTERVAL * LOAN_INTERVAL;
|
||||
|
||||
/* Setup price bases */
|
||||
for (Price i = PR_BEGIN; i < PR_END; i++) {
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
#include "../timer/timer_game_calendar.h"
|
||||
#include "../timer/timer_game_economy.h"
|
||||
#include "../timer/timer_game_tick.h"
|
||||
#include "../company_base.h"
|
||||
|
||||
#include "saveload_internal.h"
|
||||
|
||||
|
@ -2293,7 +2294,7 @@ bool AfterLoadGame()
|
|||
* So taking the 16 bit fractional part into account there are plenty of bits left
|
||||
* for unmodified savegames ...
|
||||
*/
|
||||
uint64_t aimed_inflation = (_economy.old_max_loan_unround << 16 | _economy.old_max_loan_unround_fract) / _settings_game.difficulty.max_loan;
|
||||
uint64_t aimed_inflation = (_economy.old_max_loan_unround << 16 | _economy.old_max_loan_unround_fract) / GetMaxLoanFromPercentage();
|
||||
|
||||
/* ... well, just clamp it then. */
|
||||
if (aimed_inflation > MAX_INFLATION) aimed_inflation = MAX_INFLATION;
|
||||
|
|
|
@ -32,7 +32,7 @@ const SaveLoadCompat _settings_sl_compat[] = {
|
|||
SLC_NULL(1, SLV_97, SLV_110),
|
||||
SLC_VAR("difficulty.number_towns"),
|
||||
SLC_VAR("difficulty.industry_density"),
|
||||
SLC_VAR("difficulty.max_loan"),
|
||||
SLC_VAR("difficulty.max_loan_percentage"),
|
||||
SLC_VAR("difficulty.initial_interest"),
|
||||
SLC_VAR("difficulty.vehicle_costs"),
|
||||
SLC_VAR("difficulty.competitor_speed"),
|
||||
|
|
|
@ -1471,7 +1471,7 @@ static const OldChunks game_difficulty_chunk[] = {
|
|||
OCL_NULL( 2), // competitor_start_time
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, number_towns ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, industry_density ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, DifficultySettings, max_loan ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, DifficultySettings, max_loan_percentage ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, initial_interest ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, vehicle_costs ),
|
||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, competitor_speed ),
|
||||
|
@ -1490,7 +1490,7 @@ static const OldChunks game_difficulty_chunk[] = {
|
|||
static bool LoadOldGameDifficulty(LoadgameState *ls, int)
|
||||
{
|
||||
bool ret = LoadChunk(ls, &_settings_game.difficulty, game_difficulty_chunk);
|
||||
_settings_game.difficulty.max_loan *= 1000;
|
||||
_settings_game.difficulty.max_loan_percentage *= 1000;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ void HandleOldDiffCustom(bool savegame)
|
|||
continue;
|
||||
}
|
||||
|
||||
int32_t value = (int32_t)((name == "max_loan" ? 1000 : 1) * _old_diff_custom[i++]);
|
||||
int32_t value = (int32_t)((name == "max_loan_percentage" ? 1000 : 1) * _old_diff_custom[i++]);
|
||||
sd->AsIntSetting()->MakeValueValidAndWrite(savegame ? &_settings_game : &_settings_newgame, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -100,8 +100,7 @@ struct DifficultySettings {
|
|||
uint16_t competitors_interval; ///< the interval (in minutes) between adding competitors
|
||||
uint8_t number_towns; ///< the amount of towns
|
||||
uint8_t industry_density; ///< The industry density. @see IndustryDensity
|
||||
uint32_t max_loan; ///< the maximum initial loan
|
||||
uint32_t max_loan_percentage; ///< the percentage increase/decrease of the default maximum intial loan
|
||||
uint32_t max_loan_percentage; ///< the percentage of the maximum intial loan
|
||||
uint8_t initial_interest; ///< amount of interest (to pay over the loan)
|
||||
uint8_t vehicle_costs; ///< amount of money spent on vehicle running cost
|
||||
uint8_t competitor_speed; ///< the speed at which the AI builds
|
||||
|
@ -638,4 +637,5 @@ inline GameSettings &GetGameSettings()
|
|||
return (_game_mode == GM_MENU) ? _settings_newgame : _settings_game;
|
||||
}
|
||||
|
||||
|
||||
#endif /* SETTINGS_TYPE_H */
|
||||
|
|
|
@ -111,11 +111,10 @@ type = SLE_UINT32
|
|||
from = SLV_97
|
||||
flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_0_IS_SPECIAL
|
||||
def = 100
|
||||
min = 10
|
||||
min = 100
|
||||
max = 6000000
|
||||
pre_cb = [](auto &new_value) { new_value = (new_value + 10 / 2) / 10 * 10; return true; }
|
||||
post_cb = [](auto) { _settings_game.difficulty.max_loan = ((_settings_game.difficulty.max_loan_percentage/100)* 300000) * GetCurrency().rate;}
|
||||
interval = 10
|
||||
interval = 100
|
||||
str = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN
|
||||
strhelp = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE
|
||||
|
|
Loading…
Reference in New Issue