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 "timer/timer_game_economy.h"
|
||||||
#include "settings_type.h"
|
#include "settings_type.h"
|
||||||
#include "group.h"
|
#include "group.h"
|
||||||
|
#include "currency.h"
|
||||||
|
|
||||||
static const Money COMPANY_MAX_LOAN_DEFAULT = INT64_MIN;
|
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);
|
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 CalculateCompanyValue(const Company *c, bool including_loan = true);
|
||||||
Money CalculateHostileTakeoverValue(const Company *c);
|
Money CalculateHostileTakeoverValue(const Company *c);
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "sound_func.h"
|
#include "sound_func.h"
|
||||||
#include "autoreplace_func.h"
|
#include "autoreplace_func.h"
|
||||||
#include "company_gui.h"
|
#include "company_gui.h"
|
||||||
|
#include "company_base.h"
|
||||||
#include "signs_base.h"
|
#include "signs_base.h"
|
||||||
#include "subsidy_base.h"
|
#include "subsidy_base.h"
|
||||||
#include "subsidy_func.h"
|
#include "subsidy_func.h"
|
||||||
|
@ -762,7 +763,7 @@ bool AddInflation(bool check_year)
|
||||||
void RecomputePrices()
|
void RecomputePrices()
|
||||||
{
|
{
|
||||||
/* Setup maximum loan as a rounded down multiple of LOAN_INTERVAL. */
|
/* 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 */
|
/* Setup price bases */
|
||||||
for (Price i = PR_BEGIN; i < PR_END; i++) {
|
for (Price i = PR_BEGIN; i < PR_END; i++) {
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
#include "../timer/timer_game_calendar.h"
|
#include "../timer/timer_game_calendar.h"
|
||||||
#include "../timer/timer_game_economy.h"
|
#include "../timer/timer_game_economy.h"
|
||||||
#include "../timer/timer_game_tick.h"
|
#include "../timer/timer_game_tick.h"
|
||||||
|
#include "../company_base.h"
|
||||||
|
|
||||||
#include "saveload_internal.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
|
* So taking the 16 bit fractional part into account there are plenty of bits left
|
||||||
* for unmodified savegames ...
|
* 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. */
|
/* ... well, just clamp it then. */
|
||||||
if (aimed_inflation > MAX_INFLATION) aimed_inflation = MAX_INFLATION;
|
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_NULL(1, SLV_97, SLV_110),
|
||||||
SLC_VAR("difficulty.number_towns"),
|
SLC_VAR("difficulty.number_towns"),
|
||||||
SLC_VAR("difficulty.industry_density"),
|
SLC_VAR("difficulty.industry_density"),
|
||||||
SLC_VAR("difficulty.max_loan"),
|
SLC_VAR("difficulty.max_loan_percentage"),
|
||||||
SLC_VAR("difficulty.initial_interest"),
|
SLC_VAR("difficulty.initial_interest"),
|
||||||
SLC_VAR("difficulty.vehicle_costs"),
|
SLC_VAR("difficulty.vehicle_costs"),
|
||||||
SLC_VAR("difficulty.competitor_speed"),
|
SLC_VAR("difficulty.competitor_speed"),
|
||||||
|
|
|
@ -1471,7 +1471,7 @@ static const OldChunks game_difficulty_chunk[] = {
|
||||||
OCL_NULL( 2), // competitor_start_time
|
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, number_towns ),
|
||||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, industry_density ),
|
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, initial_interest ),
|
||||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, vehicle_costs ),
|
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, vehicle_costs ),
|
||||||
OCL_SVAR( OC_FILE_U16 | OC_VAR_U8, DifficultySettings, competitor_speed ),
|
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)
|
static bool LoadOldGameDifficulty(LoadgameState *ls, int)
|
||||||
{
|
{
|
||||||
bool ret = LoadChunk(ls, &_settings_game.difficulty, game_difficulty_chunk);
|
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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ void HandleOldDiffCustom(bool savegame)
|
||||||
continue;
|
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);
|
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
|
uint16_t competitors_interval; ///< the interval (in minutes) between adding competitors
|
||||||
uint8_t number_towns; ///< the amount of towns
|
uint8_t number_towns; ///< the amount of towns
|
||||||
uint8_t industry_density; ///< The industry density. @see IndustryDensity
|
uint8_t industry_density; ///< The industry density. @see IndustryDensity
|
||||||
uint32_t max_loan; ///< the maximum initial loan
|
uint32_t max_loan_percentage; ///< the percentage of the maximum intial loan
|
||||||
uint32_t max_loan_percentage; ///< the percentage increase/decrease of the default maximum intial loan
|
|
||||||
uint8_t initial_interest; ///< amount of interest (to pay over the 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 vehicle_costs; ///< amount of money spent on vehicle running cost
|
||||||
uint8_t competitor_speed; ///< the speed at which the AI builds
|
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;
|
return (_game_mode == GM_MENU) ? _settings_newgame : _settings_game;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* SETTINGS_TYPE_H */
|
#endif /* SETTINGS_TYPE_H */
|
||||||
|
|
|
@ -111,11 +111,10 @@ type = SLE_UINT32
|
||||||
from = SLV_97
|
from = SLV_97
|
||||||
flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_0_IS_SPECIAL
|
flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_0_IS_SPECIAL
|
||||||
def = 100
|
def = 100
|
||||||
min = 10
|
min = 100
|
||||||
max = 6000000
|
max = 6000000
|
||||||
pre_cb = [](auto &new_value) { new_value = (new_value + 10 / 2) / 10 * 10; return true; }
|
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 = 100
|
||||||
interval = 10
|
|
||||||
str = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN
|
str = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN
|
||||||
strhelp = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT
|
||||||
strval = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE
|
strval = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE
|
||||||
|
|
Loading…
Reference in New Issue