Settings: Split HandleSettingDescs into per-ini functions

pull/590/head
Jonathan G Rennison 10 months ago
parent c8501938b0
commit f8c8ba2670

@ -2265,7 +2265,7 @@ static void GRFSaveConfig(IniFile &ini, const char *grpname, const GRFConfig *li
}
/* Common handler for saving/loading variables to the configuration file */
static void HandleSettingDescs(IniFile &generic_ini, IniFile &private_ini, IniFile &secrets_ini, SettingDescProc *proc, SettingDescProcList *proc_list, bool only_startup = false)
static void HandleSettingDescs(IniFile &generic_ini, SettingDescProc *proc, SettingDescProcList *proc_list, bool only_startup = false)
{
proc(generic_ini, _misc_settings, "misc", nullptr, only_startup);
#if defined(_WIN32) && !defined(DEDICATED)
@ -2277,16 +2277,18 @@ static void HandleSettingDescs(IniFile &generic_ini, IniFile &private_ini, IniFi
for (auto &table : _generic_setting_tables) {
proc(generic_ini, table, "patches", &_settings_newgame, only_startup);
}
for (auto &table : _private_setting_tables) {
proc(private_ini, table, "patches", &_settings_newgame, only_startup);
}
for (auto &table : _secrets_setting_tables) {
proc(secrets_ini, table, "patches", &_settings_newgame, only_startup);
}
proc(generic_ini, _currency_settings, "currency", &_custom_currency, only_startup);
proc(generic_ini, _company_settings, "company", &_settings_client.company, only_startup);
}
static void HandlePrivateSettingDescs(IniFile &private_ini, SettingDescProc *proc, SettingDescProcList *proc_list, bool only_startup = false)
{
for (auto &table : _private_setting_tables) {
proc(private_ini, table, "patches", &_settings_newgame, only_startup);
}
if (!only_startup) {
proc_list(private_ini, "server_bind_addresses", _network_bind_list);
proc_list(private_ini, "servers", _network_host_list);
@ -2294,6 +2296,13 @@ static void HandleSettingDescs(IniFile &generic_ini, IniFile &private_ini, IniFi
}
}
static void HandleSecretsSettingDescs(IniFile &secrets_ini, SettingDescProc *proc, SettingDescProcList *proc_list, bool only_startup = false)
{
for (auto &table : _secrets_setting_tables) {
proc(secrets_ini, table, "patches", &_settings_newgame, only_startup);
}
}
/**
* Remove all entries from a settings table from an ini-file.
*
@ -2334,11 +2343,15 @@ void LoadFromConfig(bool startup)
IniFileVersion generic_version = LoadVersionFromConfig(generic_ini);
HandleSettingDescs(generic_ini, IniLoadSettings, IniLoadSettingList, startup);
/* Before the split of private/secrets, we have to look in the generic for these settings. */
if (generic_version < IFV_PRIVATE_SECRETS) {
HandleSettingDescs(generic_ini, generic_ini, generic_ini, IniLoadSettings, IniLoadSettingList, startup);
HandlePrivateSettingDescs(generic_ini, IniLoadSettings, IniLoadSettingList, startup);
HandleSecretsSettingDescs(generic_ini, IniLoadSettings, IniLoadSettingList, startup);
} else {
HandleSettingDescs(generic_ini, private_ini, secrets_ini, IniLoadSettings, IniLoadSettingList, startup);
HandlePrivateSettingDescs(private_ini, IniLoadSettings, IniLoadSettingList, startup);
HandleSecretsSettingDescs(secrets_ini, IniLoadSettings, IniLoadSettingList, startup);
}
/* Load basic settings only during bootstrap, load other settings not during bootstrap */
@ -2464,7 +2477,9 @@ void SaveToConfig()
}
}
HandleSettingDescs(generic_ini, private_ini, secrets_ini, IniSaveSettings, IniSaveSettingList);
HandleSettingDescs(generic_ini, IniSaveSettings, IniSaveSettingList);
HandlePrivateSettingDescs(private_ini, IniSaveSettings, IniSaveSettingList);
HandleSecretsSettingDescs(secrets_ini, IniSaveSettings, IniSaveSettingList);
GRFSaveConfig(generic_ini, "newgrf", _grfconfig_newgame);
GRFSaveConfig(generic_ini, "newgrf-static", _grfconfig_static);
AISaveConfig(generic_ini, "ai_players");

Loading…
Cancel
Save