1
0
Fork 0

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
AviationGamerX 2024-10-02 23:19:57 +03:00
parent 9cdd217e53
commit 42301884ce
8 changed files with 22 additions and 11 deletions

View File

@ -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);

View File

@ -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++) {

View File

@ -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;

View File

@ -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"),

View File

@ -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;
} }

View File

@ -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);
} }
} }

View File

@ -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 */

View File

@ -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