diff options
author | Patric Stout <truebrain@openttd.org> | 2021-07-09 21:16:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-09 21:16:03 +0200 |
commit | 8f5d0ecde39cbaf2ac1a6d27e82239bfc3bf1515 (patch) | |
tree | 232daba5b6f77f8ae33191c0b88dd21ef662a1c1 /src | |
parent | d9ca9ca55571829af88429147e20bf0734e07e2d (diff) | |
download | openttd-8f5d0ecde39cbaf2ac1a6d27e82239bfc3bf1515.tar.xz |
Codechange: split settings.ini over several files (#9421)
This reduced the load on compilers, as currently for example MacOS
doesn't like the huge settings-tables.
Additionally, nobody can find settings, as the list is massive and
unordered. By splitting it, it becomes a little bit more sensible.
Diffstat (limited to 'src')
21 files changed, 3926 insertions, 3535 deletions
diff --git a/src/saveload/linkgraph_sl.cpp b/src/saveload/linkgraph_sl.cpp index e1094326b..ae21de4c7 100644 --- a/src/saveload/linkgraph_sl.cpp +++ b/src/saveload/linkgraph_sl.cpp @@ -17,6 +17,7 @@ #include "../linkgraph/linkgraphschedule.h" #include "../network/network.h" #include "../settings_internal.h" +#include "../settings_table.h" #include "../safeguards.h" @@ -165,7 +166,6 @@ public: SaveLoadTable GetLinkGraphJobDesc() { static std::vector<SaveLoad> saveloads; - static const char *prefix = "linkgraph."; static const SaveLoad job_desc[] = { SLE_VAR(LinkGraphJob, join_date, SLE_INT32), @@ -184,7 +184,7 @@ SaveLoadTable GetLinkGraphJobDesc() /* Build the SaveLoad array on first call and don't touch it later on */ if (saveloads.size() == 0) { - GetSettingSaveLoadByPrefix(prefix, saveloads); + GetSaveLoadFromSettingTable(_linkgraph_settings, saveloads); for (auto &sl : saveloads) { sl.address_proc = proc; diff --git a/src/saveload/settings_sl.cpp b/src/saveload/settings_sl.cpp index 59b00e0f0..f19ff910c 100644 --- a/src/saveload/settings_sl.cpp +++ b/src/saveload/settings_sl.cpp @@ -151,7 +151,7 @@ struct OPTSChunkHandler : ChunkHandler { * a networking environment. This ensures for example that the local * autosave-frequency stays when joining a network-server */ PrepareOldDiffCustom(); - LoadSettings(_gameopt_settings, &_settings_game, _gameopt_sl_compat); + LoadSettings(_old_gameopt_settings, &_settings_game, _gameopt_sl_compat); HandleOldDiffCustom(true); } }; @@ -159,22 +159,51 @@ struct OPTSChunkHandler : ChunkHandler { struct PATSChunkHandler : ChunkHandler { PATSChunkHandler() : ChunkHandler('PATS', CH_TABLE) {} + /** + * Create a single table with all settings that should be stored/loaded + * in the savegame. + */ + SettingTable GetSettingTable() const + { + static const SettingTable saveload_settings_tables[] = { + _difficulty_settings, + _economy_settings, + _game_settings, + _linkgraph_settings, + _locale_settings, + _pathfinding_settings, + _script_settings, + _world_settings, + }; + static std::vector<SettingVariant> settings_table; + + if (settings_table.empty()) { + for (auto &saveload_settings_table : saveload_settings_tables) { + for (auto &saveload_setting : saveload_settings_table) { + settings_table.push_back(saveload_setting); + } + } + } + + return settings_table; + } + void Load() const override { /* Copy over default setting since some might not get loaded in * a networking environment. This ensures for example that the local * currency setting stays when joining a network-server */ - LoadSettings(_settings, &_settings_game, _settings_sl_compat); + LoadSettings(this->GetSettingTable(), &_settings_game, _settings_sl_compat); } void LoadCheck(size_t) const override { - LoadSettings(_settings, &_load_check_data.settings, _settings_sl_compat); + LoadSettings(this->GetSettingTable(), &_load_check_data.settings, _settings_sl_compat); } void Save() const override { - SaveSettings(_settings, &_settings_game); + SaveSettings(this->GetSettingTable(), &_settings_game); } }; diff --git a/src/settings.cpp b/src/settings.cpp index e3741c235..09223c585 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -72,8 +72,18 @@ static ErrorList _settings_error_list; ///< Errors while loading minimal setting static auto &GenericSettingTables() { static const SettingTable _generic_setting_tables[] = { - _settings, + _difficulty_settings, + _economy_settings, + _game_settings, + _gui_settings, + _linkgraph_settings, + _locale_settings, + _multimedia_settings, _network_settings, + _news_display_settings, + _pathfinding_settings, + _script_settings, + _world_settings, }; return _generic_setting_tables; } @@ -1207,7 +1217,7 @@ void LoadFromConfig(bool startup) GameLoadConfig(generic_ini, "game_scripts"); PrepareOldDiffCustom(); - IniLoadSettings(generic_ini, _gameopt_settings, "gameopt", &_settings_newgame, false); + IniLoadSettings(generic_ini, _old_gameopt_settings, "gameopt", &_settings_newgame, false); HandleOldDiffCustom(false); ValidateSettings(); @@ -1393,16 +1403,16 @@ static const SettingDesc *GetSettingFromName(const std::string_view name, const } /** - * Get the SaveLoad from all settings matching the prefix. - * @param prefix The prefix to look for. + * Get the SaveLoad for all settings in the settings table. + * @param settings The settings table to get the SaveLoad objects from. * @param saveloads A vector to store the result in. */ -void GetSettingSaveLoadByPrefix(std::string_view prefix, std::vector<SaveLoad> &saveloads) +void GetSaveLoadFromSettingTable(SettingTable settings, std::vector<SaveLoad> &saveloads) { - for (auto &desc : _settings) { + for (auto &desc : settings) { const SettingDesc *sd = GetSettingDesc(desc); if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue; - if (StrStartsWith(sd->name, prefix)) saveloads.push_back(sd->save); + saveloads.push_back(sd->save); } } diff --git a/src/settings_internal.h b/src/settings_internal.h index 304f1393a..a9083ce40 100644 --- a/src/settings_internal.h +++ b/src/settings_internal.h @@ -312,8 +312,10 @@ static constexpr const SettingDesc *GetSettingDesc(const SettingVariant &desc) return std::visit([](auto&& arg) -> const SettingDesc * { return &arg; }, desc); } +typedef span<const SettingVariant> SettingTable; + const SettingDesc *GetSettingFromName(const std::string_view name); -void GetSettingSaveLoadByPrefix(const std::string_view prefix, std::vector<SaveLoad> &saveloads); +void GetSaveLoadFromSettingTable(SettingTable settings, std::vector<SaveLoad> &saveloads); bool SetSettingValue(const IntSettingDesc *sd, int32 value, bool force_newgame = false); bool SetSettingValue(const StringSettingDesc *sd, const std::string value, bool force_newgame = false); diff --git a/src/settings_table.cpp b/src/settings_table.cpp index bc1e588cd..045d8e56c 100644 --- a/src/settings_table.cpp +++ b/src/settings_table.cpp @@ -49,16 +49,25 @@ #include "safeguards.h" -SettingTable _settings{ _settings_table }; -SettingTable _network_settings{ _network_settings_table }; -SettingTable _network_private_settings{ _network_private_settings_table }; -SettingTable _network_secrets_settings{ _network_secrets_settings_table }; - SettingTable _company_settings{ _company_settings_table }; SettingTable _currency_settings{ _currency_settings_table }; -SettingTable _gameopt_settings{ _gameopt_settings_table }; +SettingTable _difficulty_settings{ _difficulty_settings_table }; +SettingTable _multimedia_settings{ _multimedia_settings_table }; +SettingTable _economy_settings{ _economy_settings_table }; +SettingTable _game_settings{ _game_settings_table }; +SettingTable _gui_settings{ _gui_settings_table }; +SettingTable _linkgraph_settings{ _linkgraph_settings_table }; +SettingTable _locale_settings{ _locale_settings_table }; SettingTable _misc_settings{ _misc_settings_table }; +SettingTable _network_private_settings{ _network_private_settings_table }; +SettingTable _network_secrets_settings{ _network_secrets_settings_table }; +SettingTable _network_settings{ _network_settings_table }; +SettingTable _news_display_settings{ _news_display_settings_table }; +SettingTable _old_gameopt_settings{ _old_gameopt_settings_table }; +SettingTable _pathfinding_settings{ _pathfinding_settings_table }; +SettingTable _script_settings{ _script_settings_table }; SettingTable _window_settings{ _window_settings_table }; +SettingTable _world_settings{ _world_settings_table }; #if defined(_WIN32) && !defined(DEDICATED) SettingTable _win32_settings{ _win32_settings_table }; #endif /* _WIN32 */ diff --git a/src/settings_table.h b/src/settings_table.h index ace0ec7a2..d662b6a57 100644 --- a/src/settings_table.h +++ b/src/settings_table.h @@ -15,18 +15,25 @@ #include <array> #include "settings_internal.h" -typedef span<const SettingVariant> SettingTable; - -extern SettingTable _settings; -extern SettingTable _network_settings; -extern SettingTable _network_private_settings; -extern SettingTable _network_secrets_settings; - extern SettingTable _company_settings; extern SettingTable _currency_settings; -extern SettingTable _gameopt_settings; +extern SettingTable _difficulty_settings; +extern SettingTable _economy_settings; +extern SettingTable _game_settings; +extern SettingTable _gui_settings; +extern SettingTable _linkgraph_settings; +extern SettingTable _locale_settings; extern SettingTable _misc_settings; +extern SettingTable _multimedia_settings; +extern SettingTable _network_private_settings; +extern SettingTable _network_secrets_settings; +extern SettingTable _network_settings; +extern SettingTable _news_display_settings; +extern SettingTable _old_gameopt_settings; +extern SettingTable _pathfinding_settings; +extern SettingTable _script_settings; extern SettingTable _window_settings; +extern SettingTable _world_settings; #if defined(_WIN32) && !defined(DEDICATED) extern SettingTable _win32_settings; #endif /* _WIN32 */ diff --git a/src/table/settings/CMakeLists.txt b/src/table/settings/CMakeLists.txt index f4d3c209e..f00c72051 100644 --- a/src/table/settings/CMakeLists.txt +++ b/src/table/settings/CMakeLists.txt @@ -4,14 +4,24 @@ set(TABLE_BINARY_DIR ${GENERATED_BINARY_DIR}/table) set(TABLE_INI_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/company_settings.ini ${CMAKE_CURRENT_SOURCE_DIR}/currency_settings.ini - ${CMAKE_CURRENT_SOURCE_DIR}/gameopt_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/difficulty_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/economy_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/game_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/gui_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/linkgraph_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/locale_settings.ini ${CMAKE_CURRENT_SOURCE_DIR}/misc_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/multimedia_settings.ini ${CMAKE_CURRENT_SOURCE_DIR}/network_settings.ini ${CMAKE_CURRENT_SOURCE_DIR}/network_private_settings.ini ${CMAKE_CURRENT_SOURCE_DIR}/network_secrets_settings.ini - ${CMAKE_CURRENT_SOURCE_DIR}/settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/news_display_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/old_gameopt_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/pathfinding_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/script_settings.ini ${CMAKE_CURRENT_SOURCE_DIR}/win32_settings.ini ${CMAKE_CURRENT_SOURCE_DIR}/window_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/world_settings.ini ) if (HOST_BINARY_DIR) diff --git a/src/table/settings/currency_settings.ini b/src/table/settings/currency_settings.ini index 03c6425b2..4a0e73338 100644 --- a/src/table/settings/currency_settings.ini +++ b/src/table/settings/currency_settings.ini @@ -33,7 +33,6 @@ extra = 0 startup = false - [SDT_VAR] var = rate type = SLE_UINT16 diff --git a/src/table/settings/difficulty_settings.ini b/src/table/settings/difficulty_settings.ini new file mode 100644 index 000000000..18d2ea7bb --- /dev/null +++ b/src/table/settings/difficulty_settings.ini @@ -0,0 +1,286 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; Difficulty settings as stored in the main configuration file ("openttd.cfg") +; and in the savegame PATS chunk. + +[pre-amble] +const std::array<std::string, GAME_DIFFICULTY_NUM> _old_diff_settings{"max_no_competitors", "competitor_start_time", "number_towns", "industry_density", "max_loan", "initial_interest", "vehicle_costs", "competitor_speed", "competitor_intelligence", "vehicle_breakdowns", "subsidy_multiplier", "construction_cost", "terrain_type", "quantity_sea_lakes", "economy", "line_reverse_mode", "disasters", "town_council_tolerance"}; + +uint16 _old_diff_custom[GAME_DIFFICULTY_NUM]; +uint8 _old_diff_level; ///< Old difficulty level from old savegames + +static void DifficultyNoiseChange(int32 new_value); +static void MaxNoAIsChange(int32 new_value); + +static const SettingVariant _difficulty_settings_table[] = { +[post-amble] +}; +[templates] +SDTG_VAR = SDTG_VAR($name, $type, $flags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +; Saved settings variables. +; The next 18 entries are important for savegame compatibility. Do NOT remove those. See HandleOldDiffCustom() for more details. +[SDT_VAR] +var = difficulty.max_no_competitors +type = SLE_UINT8 +from = SLV_97 +def = 0 +min = 0 +max = MAX_COMPANIES - 1 +interval = 1 +post_cb = MaxNoAIsChange +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.competitor_start_time +type = SLE_UINT8 +from = SLV_97 +to = SLV_110 +def = 2 +min = 0 +max = 3 + +[SDT_VAR] +var = difficulty.number_towns +type = SLE_UINT8 +from = SLV_97 +flags = SF_NEWGAME_ONLY +def = 2 +min = 0 +max = 4 +interval = 1 +strval = STR_NUM_VERY_LOW +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.industry_density +type = SLE_UINT8 +from = SLV_97 +flags = SF_GUI_DROPDOWN +def = ID_END - 1 +min = 0 +max = ID_END - 1 +interval = 1 +str = STR_CONFIG_SETTING_INDUSTRY_DENSITY +strhelp = STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT +strval = STR_FUNDING_ONLY +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.max_loan +type = SLE_UINT32 +from = SLV_97 +flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_CURRENCY +def = 300000 +min = 0 +max = 2000000000 +interval = 50000 +str = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN +strhelp = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT +strval = STR_JUST_CURRENCY_LONG +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.initial_interest +type = SLE_UINT8 +from = SLV_97 +flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO +def = 2 +min = 2 +max = 4 +interval = 1 +str = STR_CONFIG_SETTING_INTEREST_RATE +strhelp = STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT +strval = STR_CONFIG_SETTING_PERCENTAGE + +[SDT_VAR] +var = difficulty.vehicle_costs +type = SLE_UINT8 +from = SLV_97 +flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_RUNNING_COSTS +strhelp = STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT +strval = STR_SEA_LEVEL_LOW +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.competitor_speed +type = SLE_UINT8 +from = SLV_97 +flags = SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 4 +interval = 1 +str = STR_CONFIG_SETTING_CONSTRUCTION_SPEED +strhelp = STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT +strval = STR_AI_SPEED_VERY_SLOW +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.competitor_intelligence +type = SLE_UINT8 +from = SLV_97 +to = SLV_110 +def = 0 +min = 0 +max = 2 + +[SDT_VAR] +var = difficulty.vehicle_breakdowns +type = SLE_UINT8 +from = SLV_97 +flags = SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS +strhelp = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT +strval = STR_DISASTER_NONE +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.subsidy_multiplier +type = SLE_UINT8 +from = SLV_97 +flags = SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 3 +interval = 1 +str = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER +strhelp = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT +strval = STR_SUBSIDY_X1_5 + +[SDT_VAR] +var = difficulty.subsidy_duration +type = SLE_UINT16 +from = SLV_CUSTOM_SUBSIDY_DURATION +flags = SF_GUI_0_IS_SPECIAL +def = 1 +min = 0 +max = 5000 +interval = 1 +str = STR_CONFIG_SETTING_SUBSIDY_DURATION +strhelp = STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT +strval = STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE + +[SDT_VAR] +var = difficulty.construction_cost +type = SLE_UINT8 +from = SLV_97 +flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_CONSTRUCTION_COSTS +strhelp = STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT +strval = STR_SEA_LEVEL_LOW +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.terrain_type +type = SLE_UINT8 +from = SLV_97 +flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY +def = 1 +min = 0 +max = 5 +interval = 1 +str = STR_CONFIG_SETTING_TERRAIN_TYPE +strhelp = STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT +strval = STR_TERRAIN_TYPE_VERY_FLAT +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.quantity_sea_lakes +type = SLE_UINT8 +from = SLV_97 +flags = SF_NEWGAME_ONLY +def = 0 +min = 0 +max = 4 +interval = 1 +strval = STR_SEA_LEVEL_VERY_LOW +cat = SC_BASIC + +[SDT_BOOL] +var = difficulty.economy +from = SLV_97 +def = false +str = STR_CONFIG_SETTING_RECESSIONS +strhelp = STR_CONFIG_SETTING_RECESSIONS_HELPTEXT + +[SDT_BOOL] +var = difficulty.line_reverse_mode +from = SLV_97 +def = false +str = STR_CONFIG_SETTING_TRAIN_REVERSING +strhelp = STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT + +[SDT_BOOL] +var = difficulty.disasters +from = SLV_97 +def = false +str = STR_CONFIG_SETTING_DISASTERS +strhelp = STR_CONFIG_SETTING_DISASTERS_HELPTEXT +cat = SC_BASIC + +[SDT_VAR] +var = difficulty.town_council_tolerance +type = SLE_UINT8 +from = SLV_97 +flags = SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_CITY_APPROVAL +strhelp = STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT +strval = STR_CITY_APPROVAL_PERMISSIVE +post_cb = DifficultyNoiseChange + +[SDTG_VAR] +name = ""diff_level"" +var = _old_diff_level +type = SLE_UINT8 +flags = SF_NOT_IN_CONFIG +from = SLV_97 +to = SLV_178 +def = 3 +min = 0 +max = 3 +cat = SC_BASIC + diff --git a/src/table/settings/economy_settings.ini b/src/table/settings/economy_settings.ini new file mode 100644 index 000000000..9ffd9edb7 --- /dev/null +++ b/src/table/settings/economy_settings.ini @@ -0,0 +1,294 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; Economy settings as stored in the main configuration file ("openttd.cfg") +; and in the savegame PATS chunk. + +[pre-amble] +static void TownFoundingChanged(int32 new_value); + +static const SettingVariant _economy_settings_table[] = { +[post-amble] +}; +[templates] +SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +[SDT_VAR] +var = economy.town_layout +type = SLE_UINT8 +from = SLV_59 +flags = SF_GUI_DROPDOWN +def = TL_ORIGINAL +min = TL_BEGIN +max = NUM_TLS - 1 +interval = 1 +str = STR_CONFIG_SETTING_TOWN_LAYOUT +strhelp = STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT +strval = STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT +post_cb = TownFoundingChanged + +[SDT_BOOL] +var = economy.allow_town_roads +from = SLV_113 +flags = SF_NO_NETWORK +def = true +str = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS +strhelp = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT + +[SDT_VAR] +var = economy.found_town +type = SLE_UINT8 +from = SLV_128 +flags = SF_GUI_DROPDOWN +def = TF_FORBIDDEN +min = TF_BEGIN +max = TF_END - 1 +interval = 1 +str = STR_CONFIG_SETTING_TOWN_FOUNDING +strhelp = STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT +strval = STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN +post_cb = TownFoundingChanged +cat = SC_BASIC + +[SDT_BOOL] +var = economy.allow_town_level_crossings +from = SLV_143 +flags = SF_NO_NETWORK +def = true +str = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS +strhelp = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT + +[SDT_VAR] +var = economy.town_cargogen_mode +type = SLE_UINT8 +from = SLV_TOWN_CARGOGEN +flags = SF_GUI_DROPDOWN +def = TCGM_BITCOUNT +min = TCGM_BEGIN +max = TCGM_END - 1 +interval = 1 +str = STR_CONFIG_SETTING_TOWN_CARGOGENMODE +strhelp = STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT +strval = STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL +cat = SC_ADVANCED + +[SDT_BOOL] +var = economy.station_noise_level +from = SLV_96 +flags = SF_NO_NETWORK +def = false +str = STR_CONFIG_SETTING_NOISE_LEVEL +strhelp = STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT +post_cb = [](auto new_value) { InvalidateWindowClassesData(WC_TOWN_VIEW, new_value); } + +[SDT_BOOL] +var = economy.inflation +flags = SF_NO_NETWORK +def = false +str = STR_CONFIG_SETTING_INFLATION +strhelp = STR_CONFIG_SETTING_INFLATION_HELPTEXT +cat = SC_BASIC + +[SDT_BOOL] +var = economy.multiple_industry_per_town +def = false +str = STR_CONFIG_SETTING_MULTIPINDTOWN +strhelp = STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT + +[SDT_BOOL] +var = economy.bribe +def = true +str = STR_CONFIG_SETTING_BRIBE +strhelp = STR_CONFIG_SETTING_BRIBE_HELPTEXT +post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); } +cat = SC_BASIC + +[SDT_BOOL] +var = economy.exclusive_rights +from = SLV_79 +def = true +str = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE +strhelp = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT +post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); } +cat = SC_BASIC + +[SDT_BOOL] +var = economy.fund_buildings +from = SLV_165 +def = true +str = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS +strhelp = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT +post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); } +cat = SC_BASIC + +[SDT_BOOL] +var = economy.fund_roads +from = SLV_160 +def = true +str = STR_CONFIG_SETTING_ALLOW_FUND_ROAD +strhelp = STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT +post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); } +cat = SC_BASIC + +[SDT_BOOL] +var = economy.give_money +from = SLV_79 +def = true +str = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY +strhelp = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT +cat = SC_BASIC + +[SDT_VAR] +var = economy.type +type = SLE_UINT8 +flags = SF_GUI_DROPDOWN +def = ET_SMOOTH +min = ET_BEGIN +max = ET_END - 1 +str = STR_CONFIG_SETTING_ECONOMY_TYPE +strhelp = STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT +strval = STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL +post_cb = [](auto) { InvalidateWindowClassesData(WC_INDUSTRY_VIEW); } +cat = SC_BASIC + +[SDT_BOOL] +var = economy.allow_shares +def = false +str = STR_CONFIG_SETTING_ALLOW_SHARES +strhelp = STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT +post_cb = [](auto) { InvalidateWindowClassesData(WC_COMPANY); } + +[SDT_VAR] +var = economy.min_years_for_shares +type = SLE_UINT8 +from = SLV_TRADING_AGE +def = 6 +min = 0 +max = 255 +interval = 1 +str = STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES +strhelp = STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT +strval = STR_JUST_INT +cat = SC_EXPERT + +[SDT_VAR] +var = economy.feeder_payment_share +type = SLE_UINT8 +from = SLV_134 +def = 75 +min = 0 +max = 100 +str = STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE +strhelp = STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT +strval = STR_CONFIG_SETTING_PERCENTAGE +cat = SC_EXPERT + +[SDT_VAR] +var = economy.town_growth_rate +type = SLE_UINT8 +from = SLV_54 +flags = SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 4 +str = STR_CONFIG_SETTING_TOWN_GROWTH +strhelp = STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT +strval = STR_CONFIG_SETTING_TOWN_GROWTH_NONE + +[SDT_VAR] +var = economy.larger_towns +type = SLE_UINT8 +from = SLV_54 +flags = SF_GUI_0_IS_SPECIAL +def = 4 +min = 0 +max = 255 +interval = 1 +str = STR_CONFIG_SETTING_LARGER_TOWNS +strhelp = STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT +strval = STR_CONFIG_SETTING_LARGER_TOWNS_VALUE + +[SDT_VAR] +var = economy.initial_city_size +type = SLE_UINT8 +from = SLV_56 +def = 2 +min = 1 +max = 10 +interval = 1 +str = STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER +strhelp = STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT +strval = STR_JUST_COMMA + +[SDT_BOOL] +var = economy.mod_road_rebuild +from = SLV_77 +def = true +cat = SC_EXPERT + +[SDT_VAR] +var = economy.dist_local_authority +type = SLE_UINT8 +def = 20 +min = 5 +max = 60 +cat = SC_EXPERT + +[SDT_VAR] +var = economy.town_noise_population[0] +type = SLE_UINT16 +from = SLV_96 +def = 800 +min = 200 +max = 65535 +cat = SC_EXPERT + +[SDT_VAR] +var = economy.town_noise_population[1] +type = SLE_UINT16 +from = SLV_96 +def = 2000 +min = 400 +max = 65535 +cat = SC_EXPERT + +[SDT_VAR] +var = economy.town_noise_population[2] +type = SLE_UINT16 +from = SLV_96 +def = 4000 +min = 800 +max = 65535 +cat = SC_EXPERT + +[SDT_BOOL] +var = economy.infrastructure_maintenance +from = SLV_166 +def = false +str = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE +strhelp = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT +post_cb = [](auto) { InvalidateWindowClassesData(WC_COMPANY_INFRASTRUCTURE); } +cat = SC_BASIC diff --git a/src/table/settings/game_settings.ini b/src/table/settings/game_settings.ini new file mode 100644 index 000000000..2a51279e5 --- /dev/null +++ b/src/table/settings/game_settings.ini @@ -0,0 +1,421 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; Game settings as stored in the main configuration file ("openttd.cfg") +; and in the savegame PATS chunk. +; Game settings are everything related to vehicles, stations, orders, etc. + +[pre-amble] +static std::initializer_list<const char*> _roadsides{"left", "right"}; + +static void StationSpreadChanged(int32 new_value); +static void UpdateConsists(int32 new_value); +static void TrainAccelerationModelChanged(int32 new_value); +static void RoadVehAccelerationModelChanged(int32 new_value); +static void TrainSlopeSteepnessChanged(int32 new_value); +static void RoadVehSlopeSteepnessChanged(int32 new_value); +static bool CheckRoadSide(int32 &new_value); +static bool CheckDynamicEngines(int32 &new_value); +static void StationCatchmentChanged(int32 new_value); +static void MaxVehiclesChanged(int32 new_value); + +static const SettingVariant _game_settings_table[] = { +[post-amble] +}; +[templates] +SDTG_BOOL = SDTG_BOOL($name, $flags, $var, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTG_VAR = SDTG_VAR($name, $type, $flags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTC_BOOL = SDTC_BOOL( $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDT_OMANY = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +[SDT_BOOL] +var = order.no_servicing_if_no_breakdowns +def = true +str = STR_CONFIG_SETTING_NOSERVICE +strhelp = STR_CONFIG_SETTING_NOSERVICE_HELPTEXT + +[SDT_BOOL] +var = order.improved_load +flags = SF_NO_NETWORK +def = true +cat = SC_EXPERT + +[SDT_BOOL] +var = order.selectgoods +def = true +cat = SC_EXPERT + +[SDT_BOOL] +var = order.serviceathelipad +def = true +str = STR_CONFIG_SETTING_SERVICEATHELIPAD +strhelp = STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT +cat = SC_EXPERT + +[SDT_BOOL] +var = order.gradual_loading +from = SLV_40 +flags = SF_NO_NETWORK +def = true +cat = SC_EXPERT + +[SDT_BOOL] +var = station.never_expire_airports +flags = SF_NO_NETWORK +def = false +str = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS +strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT + +[SDT_VAR] +var = station.station_spread +type = SLE_UINT8 +def = 12 +min = 4 +max = 64 +str = STR_CONFIG_SETTING_STATION_SPREAD +strhelp = STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT +strval = STR_CONFIG_SETTING_TILE_LENGTH +post_cb = StationSpreadChanged +cat = SC_BASIC + +[SDT_BOOL] +var = station.modified_catchment +def = true +str = STR_CONFIG_SETTING_CATCHMENT +strhelp = STR_CONFIG_SETTING_CATCHMENT_HELPTEXT +post_cb = StationCatchmentChanged +cat = SC_EXPERT + +[SDT_BOOL] +var = station.serve_neutral_industries +def = true +from = SLV_SERVE_NEUTRAL_INDUSTRIES +str = STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES +strhelp = STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT +post_cb = StationCatchmentChanged + +[SDT_BOOL] +var = station.adjacent_stations +from = SLV_62 +def = true +cat = SC_EXPERT + +[SDT_BOOL] +var = station.distant_join_stations +from = SLV_106 +def = true +str = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS +strhelp = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT +post_cb = [](auto) { CloseWindowById(WC_SELECT_STATION, 0); } + +[SDT_OMANY] +var = vehicle.road_side +type = SLE_UINT8 +from = SLV_97 +flags = SF_GUI_DROPDOWN | SF_NO_NETWORK +def = 1 +max = 1 +full = _roadsides +str = STR_CONFIG_SETTING_ROAD_SIDE +strhelp = STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT +strval = STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT +pre_cb = CheckRoadSide +cat = SC_BASIC + +[SDT_VAR] +var = vehicle.train_acceleration_model +type = SLE_UINT8 +flags = SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 1 +interval = 1 +str = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL +strhelp = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT +strval = STR_CONFIG_SETTING_ORIGINAL +post_cb = TrainAccelerationModelChanged + +[SDT_VAR] +var = vehicle.roadveh_acceleration_model +type = SLE_UINT8 +from = SLV_139 +flags = SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 1 +interval = 1 +str = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL +strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT +strval = STR_CONFIG_SETTING_ORIGINAL +post_cb = RoadVehAccelerationModelChanged + +[SDT_VAR] +var = vehicle.train_slope_steepness +type = SLE_UINT8 +from = SLV_133 +def = 3 +min = 0 +max = 10 +interval = 1 +str = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS +strhelp = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT +strval = STR_CONFIG_SETTING_PERCENTAGE +post_cb = TrainSlopeSteepnessChanged +cat = SC_EXPERT + +[SDT_VAR] +var = vehicle.roadveh_slope_steepness +type = SLE_UINT8 +from = SLV_139 +def = 7 +min = 0 +max = 10 +interval = 1 +str = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS +strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT +strval = STR_CONFIG_SETTING_PERCENTAGE +post_cb = RoadVehSlopeSteepnessChanged +cat = SC_EXPERT + +[SDT_VAR] +var = vehicle.max_train_length +type = SLE_UINT8 +from = SLV_159 +def = 7 +min = 1 +max = 64 +interval = 1 +str = STR_CONFIG_SETTING_TRAIN_LENGTH +strhelp = STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT +strval = STR_CONFIG_SETTING_TILE_LENGTH +cat = SC_BASIC + +[SDT_VAR] +var = vehicle.smoke_amount +type = SLE_UINT8 +from = SLV_145 +flags = SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_SMOKE_AMOUNT +strhelp = STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT +strval = STR_CONFIG_SETTING_NONE + +[SDT_BOOL] +var = vehicle.never_expire_vehicles +flags = SF_NO_NETWORK +def = false +str = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES +strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT + +[SDT_VAR] +var = vehicle.max_trains +type = SLE_UINT16 +def = 500 +min = 0 +max = 5000 +str = STR_CONFIG_SETTING_MAX_TRAINS +strhelp = STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT +strval = STR_JUST_COMMA +post_cb = MaxVehiclesChanged +cat = SC_BASIC + +[SDT_VAR] +var = vehicle.max_roadveh +type = SLE_UINT16 +def = 500 +min = 0 +max = 5000 +str = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES +strhelp = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT +strval = STR_JUST_COMMA +post_cb = MaxVehiclesChanged +cat = SC_BASIC + +[SDT_VAR] +var = vehicle.max_aircraft +type = SLE_UINT16 +def = 200 +min = 0 +max = 5000 +str = STR_CONFIG_SETTING_MAX_AIRCRAFT +strhelp = STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT +strval = STR_JUST_COMMA +post_cb = MaxVehiclesChanged +cat = SC_BASIC + +[SDT_VAR] +var = vehicle.max_ships +type = SLE_UINT16 +def = 300 +min = 0 +max = 5000 +str = STR_CONFIG_SETTING_MAX_SHIPS +strhelp = STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT +strval = STR_JUST_COMMA +post_cb = MaxVehiclesChanged +cat = SC_BASIC + +[SDT_BOOL] +var = vehicle.wagon_speed_limits +flags = SF_NO_NETWORK +def = true +str = STR_CONFIG_SETTING_WAGONSPEEDLIMITS +strhelp = STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT +post_cb = UpdateConsists + +[SDT_BOOL] +var = vehicle.disable_elrails +from = SLV_38 +flags = SF_NO_NETWORK +def = false +str = STR_CONFIG_SETTING_DISABLE_ELRAILS +strhelp = STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT +post_cb = SettingsDisableElrail +cat = SC_EXPERT + +[SDT_VAR] +var = vehicle.freight_trains +type = SLE_UINT8 +from = SLV_39 +flags = SF_NO_NETWORK +def = 1 +min = 1 +max = 255 +interval = 1 +str = STR_CONFIG_SETTING_FREIGHT_TRAINS +strhelp = STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT +strval = STR_JUST_COMMA +post_cb = UpdateConsists + +[SDT_VAR] +var = vehicle.plane_speed +type = SLE_UINT8 +from = SLV_90 +flags = SF_NO_NETWORK +def = 4 +min = 1 +max = 4 +str = STR_CONFIG_SETTING_PLANE_SPEED +strhelp = STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT +strval = STR_CONFIG_SETTING_PLANE_SPEED_VALUE + +[SDT_BOOL] +var = vehicle.dynamic_engines +from = SLV_95 +flags = SF_NO_NETWORK +def = true +pre_cb = CheckDynamicEngines +cat = SC_EXPERT + +[SDT_VAR] +var = vehicle.plane_crashes +type = SLE_UINT8 +from = SLV_138 +flags = SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_PLANE_CRASHES +strhelp = STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT +strval = STR_CONFIG_SETTING_PLANE_CRASHES_NONE +cat = SC_BASIC + +[SDT_VAR] +var = vehicle.extend_vehicle_life +type = SLE_UINT8 +def = 0 +min = 0 +max = 100 +cat = SC_EXPERT + +## Old vehicle settings. + +[SDTG_BOOL] +name = """" +flags = SF_NO_NETWORK +var = _old_vds.servint_ispercent +def = false +to = SLV_120 + +[SDTG_VAR] +name = """" +type = SLE_UINT16 +flags = SF_GUI_0_IS_SPECIAL +var = _old_vds.servint_trains +def = 150 +min = 5 +max = 800 +to = SLV_120 + +[SDTG_VAR] +name = """" +type = SLE_UINT16 +flags = SF_GUI_0_IS_SPECIAL +var = _old_vds.servint_roadveh +def = 150 +min = 5 +max = 800 +to = SLV_120 + +[SDTG_VAR] +name = """" +type = SLE_UINT16 +flags = SF_GUI_0_IS_SPECIAL +var = _old_vds.servint_ships +def = 360 +min = 5 +max = 800 +to = SLV_120 + +[SDTG_VAR] +name = """" +type = SLE_UINT16 +flags = SF_GUI_0_IS_SPECIAL +var = _old_vds.servint_aircraft +def = 150 +min = 5 +max = 800 +to = SLV_120 + +## These were once in the "gui" section, but they really are related to orders. + +[SDTC_BOOL] +var = gui.sg_full_load_any +from = SLV_22 +to = SLV_93 +def = true + +[SDTC_BOOL] +var = gui.sg_new_nonstop +from = SLV_22 +to = SLV_93 +def = false diff --git a/src/table/settings/gui_settings.ini b/src/table/settings/gui_settings.ini new file mode 100644 index 000000000..427402660 --- /dev/null +++ b/src/table/settings/gui_settings.ini @@ -0,0 +1,858 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; GUI settings as stored in the main configuration file ("openttd.cfg"). + +[pre-amble] +static void v_PositionMainToolbar(int32 new_value); +static void v_PositionStatusbar(int32 new_value); +static void RedrawSmallmap(int32 new_value); +static void CloseSignalGUI(int32 new_value); +static void InvalidateCompanyLiveryWindow(int32 new_value); +static void InvalidateNewGRFChangeWindows(int32 new_value); +static void ZoomMinMaxChanged(int32 new_value); +static void SpriteZoomMinChanged(int32 new_value); + +static std::initializer_list<const char*> _autosave_interval{"off", "monthly", "quarterly", "half year", "yearly"}; +static std::initializer_list<const char*> _osk_activation{"disabled", "double", "single", "immediately"}; +static std::initializer_list<const char*> _savegame_date{"long", "short", "iso"}; + +static const SettingVariant _gui_settings_table[] = { +[post-amble] +}; +[templates] +SDTC_BOOL = SDTC_BOOL( $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTC_VAR = SDTC_VAR( $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +[SDTC_OMANY] +var = gui.autosave +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 4 +full = _autosave_interval +str = STR_CONFIG_SETTING_AUTOSAVE +strhelp = STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT +strval = STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.threaded_saves +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +cat = SC_EXPERT + +[SDTC_OMANY] +var = gui.date_format_in_default_names +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _savegame_date +str = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES +strhelp = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT +strval = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG + +[SDTC_BOOL] +var = gui.show_finances +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SHOWFINANCES +strhelp = STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT +cat = SC_BASIC + +[SDTC_VAR] +var = gui.auto_scrolling +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 3 +str = STR_CONFIG_SETTING_AUTOSCROLL +strhelp = STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT +strval = STR_CONFIG_SETTING_AUTOSCROLL_DISABLED +cat = SC_BASIC + +[SDTC_VAR] +ifdef = __EMSCRIPTEN__ +var = gui.scroll_mode +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 3 +str = STR_CONFIG_SETTING_SCROLLMODE +strhelp = STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT +strval = STR_CONFIG_SETTING_SCROLLMODE_DEFAULT +cat = SC_BASIC + +[SDTC_VAR] +ifndef = __EMSCRIPTEN__ +var = gui.scroll_mode +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 3 +str = STR_CONFIG_SETTING_SCROLLMODE +strhelp = STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT +strval = STR_CONFIG_SETTING_SCROLLMODE_DEFAULT +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.smooth_scroll +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_SMOOTH_SCROLLING +strhelp = STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT + +[SDTC_BOOL] +var = gui.right_mouse_wnd_close +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE +strhelp = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT +cat = SC_BASIC + +; We might need to emulate a right mouse button on mac +[SDTC_VAR] +ifdef = __APPLE__ +var = gui.right_mouse_btn_emulation +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU +strhelp = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT +strval = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.measure_tooltip +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_MEASURE_TOOLTIP +strhelp = STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT +cat = SC_BASIC + +[SDTC_VAR] +var = gui.errmsg_duration +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 5 +min = 0 +max = 20 +str = STR_CONFIG_SETTING_ERRMSG_DURATION +strhelp = STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT +strval = STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE + +[SDTC_VAR] +var = gui.hover_delay_ms +type = SLE_UINT16 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL +def = 250 +min = 50 +max = 6000 +interval = 50 +str = STR_CONFIG_SETTING_HOVER_DELAY +strhelp = STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT +strval = STR_CONFIG_SETTING_HOVER_DELAY_VALUE + +[SDTC_OMANY] +var = gui.osk_activation +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +str = STR_CONFIG_SETTING_OSK_ACTIVATION +strhelp = STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT +strval = STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED +flags = SF_GUI_DROPDOWN +full = _osk_activation +def = 1 +min = 0 +max = 3 +cat = SC_BASIC + +[SDTC_VAR] +var = gui.toolbar_pos +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_TOOLBAR_POS +strhelp = STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT +strval = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT +post_cb = v_PositionMainToolbar +cat = SC_BASIC + +[SDTC_VAR] +var = gui.statusbar_pos +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_STATUSBAR_POS +strhelp = STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT +strval = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT +post_cb = v_PositionStatusbar +cat = SC_BASIC + +[SDTC_VAR] +var = gui.window_snap_radius +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL +def = 10 +min = 1 +max = 32 +str = STR_CONFIG_SETTING_SNAP_RADIUS +strhelp = STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT +strval = STR_CONFIG_SETTING_SNAP_RADIUS_VALUE +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.window_soft_limit +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL +def = 20 +min = 5 +max = 255 +interval = 1 +str = STR_CONFIG_SETTING_SOFT_LIMIT +strhelp = STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT +strval = STR_CONFIG_SETTING_SOFT_LIMIT_VALUE +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.zoom_min +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = ZOOM_LVL_MIN +min = ZOOM_LVL_MIN +max = ZOOM_LVL_OUT_4X +str = STR_CONFIG_SETTING_ZOOM_MIN +strhelp = STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT +strval = STR_CONFIG_SETTING_ZOOM_LVL_MIN +post_cb = ZoomMinMaxChanged +startup = true + +[SDTC_VAR] +var = gui.zoom_max +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = ZOOM_LVL_MAX +min = ZOOM_LVL_OUT_8X +max = ZOOM_LVL_MAX +str = STR_CONFIG_SETTING_ZOOM_MAX +strhelp = STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT +strval = STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X +post_cb = ZoomMinMaxChanged +startup = true + +[SDTC_VAR] +var = gui.sprite_zoom_min +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = ZOOM_LVL_MIN +min = ZOOM_LVL_MIN +max = ZOOM_LVL_OUT_4X +str = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN +strhelp = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT +strval = STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN +post_cb = SpriteZoomMinChanged + +[SDTC_BOOL] +var = gui.population_in_label +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_POPULATION_IN_LABEL +strhelp = STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT +post_cb = [](auto) { UpdateAllTownVirtCoords(); } + +[SDTC_BOOL] +var = gui.link_terraform_toolbar +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR +strhelp = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT + +[SDTC_VAR] +var = gui.smallmap_land_colour +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR +strhelp = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT +strval = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN +post_cb = RedrawSmallmap + +[SDTC_VAR] +var = gui.liveries +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_LIVERIES +strhelp = STR_CONFIG_SETTING_LIVERIES_HELPTEXT +strval = STR_CONFIG_SETTING_LIVERIES_NONE +post_cb = InvalidateCompanyLiveryWindow + +[SDTC_VAR] +var = gui.starting_colour +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = COLOUR_END +min = 0 +max = COLOUR_END +str = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR +strhelp = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT +strval = STR_COLOUR_DARK_BLUE + +[SDTC_BOOL] +var = gui.auto_remove_signals +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS +strhelp = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT +cat = SC_ADVANCED + +[SDTC_BOOL] +var = gui.prefer_teamchat +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_PREFER_TEAMCHAT +strhelp = STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT +cat = SC_BASIC + +[SDTC_VAR] +var = gui.scrollwheel_scrolling +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING +strhelp = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT +strval = STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM +cat = SC_BASIC + +[SDTC_VAR] +var = gui.scrollwheel_multiplier +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 5 +min = 1 +max = 15 +interval = 1 +str = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER +strhelp = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT +strval = STR_JUST_COMMA +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.pause_on_newgame +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME +strhelp = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT +cat = SC_BASIC + +[SDTC_VAR] +var = gui.advanced_vehicle_list +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS +strhelp = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT +strval = STR_CONFIG_SETTING_COMPANIES_OFF + +[SDTC_BOOL] +var = gui.timetable_in_ticks +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS +strhelp = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT +post_cb = [](auto) { InvalidateWindowClassesData(WC_VEHICLE_TIMETABLE, VIWD_MODIFY_ORDERS); } +cat = SC_EXPERT + +[SDTC_BOOL] +var = gui.timetable_arrival_departure +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE +strhelp = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT +post_cb = [](auto) { InvalidateWindowClassesData(WC_VEHICLE_TIMETABLE, VIWD_MODIFY_ORDERS); } + +[SDTC_BOOL] +var = gui.quick_goto +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_QUICKGOTO +strhelp = STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT +cat = SC_BASIC + +[SDTC_VAR] +var = gui.loading_indicators +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_LOADING_INDICATORS +strhelp = STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT +strval = STR_CONFIG_SETTING_COMPANIES_OFF +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC + +[SDTC_VAR] +var = gui.default_rail_type +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE +strhelp = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT +strval = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.enable_signal_gui +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI +strhelp = STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT +post_cb = CloseSignalGUI +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.coloured_news_year +type = SLE_INT32 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 2000 +min = MIN_YEAR +max = MAX_YEAR +interval = 1 +str = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR +strhelp = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT +strval = STR_JUST_INT +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.drag_signals_density +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 4 +min = 1 +max = 20 +str = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY +strhelp = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT +strval = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE +post_cb = [](auto) { InvalidateWindowData(WC_BUILD_SIGNAL, 0); } +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.drag_signals_fixed_distance +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE +strhelp = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.semaphore_build_before +type = SLE_INT32 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 1950 +min = MIN_YEAR +max = MAX_YEAR +interval = 1 +str = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE +strhelp = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT +strval = STR_JUST_INT +post_cb = ResetSignalVariant + +[SDTC_BOOL] +var = gui.vehicle_income_warn +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_WARN_INCOME_LESS +strhelp = STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT +cat = SC_BASIC + +[SDTC_VAR] +var = gui.order_review_system +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_ORDER_REVIEW +strhelp = STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT +strval = STR_CONFIG_SETTING_ORDER_REVIEW_OFF +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.lost_vehicle_warn +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_WARN_LOST_VEHICLE +strhelp = STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT + +[SDTC_BOOL] +var = gui.new_nonstop +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT +strhelp = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT +cat = SC_BASIC + +[SDTC_VAR] +var = gui.stop_location +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_STOP_LOCATION +strhelp = STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT +strval = STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.keep_all_autosave +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false + +[SDTC_BOOL] +var = gui.autosave_on_exit +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.autosave_on_network_disconnect +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.max_num_autosaves +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 16 +min = 0 +max = 255 + +[SDTC_BOOL] +var = gui.auto_euro +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true + +[SDTC_VAR] +var = gui.news_message_timeout +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 2 +min = 1 +max = 255 + +[SDTC_BOOL] +var = gui.show_track_reservation +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION +strhelp = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC + +[SDTC_VAR] +var = gui.default_signal_type +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE +strhelp = STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT +strval = STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL +cat = SC_BASIC + +[SDTC_VAR] +var = gui.cycle_signal_types +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES +strhelp = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT +strval = STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL + +[SDTC_VAR] +var = gui.station_numtracks +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 1 +min = 1 +max = 7 + +[SDTC_VAR] +var = gui.station_platlength +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 5 +min = 1 +max = 7 +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.station_dragdrop +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.station_show_coverage +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.persistent_buildingtools +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS +strhelp = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.expenses_layout +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_EXPENSES_LAYOUT +strhelp = STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT +post_cb = [](auto) { MarkWholeScreenDirty(); } + +[SDTC_VAR] +var = gui.station_gui_group_order +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 5 +interval = 1 + +[SDTC_VAR] +var = gui.station_gui_sort_by +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 3 +interval = 1 + +[SDTC_VAR] +var = gui.station_gui_sort_order +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 1 +interval = 1 + +[SDTC_VAR] +var = gui.missing_strings_threshold +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 25 +min = 1 +max = UINT8_MAX +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.graph_line_thickness +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 3 +min = 1 +max = 5 +str = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS +strhelp = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT +strval = STR_JUST_COMMA +post_cb = [](auto) { MarkWholeScreenDirty(); } + +[SDTC_BOOL] +var = gui.show_newgrf_name +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_SHOW_NEWGRF_NAME +strhelp = STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_ADVANCED + +; For the dedicated build we'll enable dates in logs by default. +[SDTC_BOOL] +ifdef = DEDICATED +var = gui.show_date_in_logs +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true + +[SDTC_BOOL] +ifndef = DEDICATED +var = gui.show_date_in_logs +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false + +[SDTC_VAR] +var = gui.settings_restriction_mode +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 2 + +[SDTC_VAR] +var = gui.developer +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 1 +min = 0 +max = 2 +cat = SC_EXPERT + +[SDTC_BOOL] +var = gui.newgrf_developer_tools +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +post_cb = InvalidateNewGRFChangeWindows +cat = SC_EXPERT + +[SDTC_BOOL] +var = gui.ai_developer_tools +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +post_cb = [](auto) { InvalidateWindowClassesData(WC_AI_SETTINGS); } +cat = SC_EXPERT + +[SDTC_BOOL] +var = gui.scenario_developer +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +post_cb = InvalidateNewGRFChangeWindows + +[SDTC_BOOL] +var = gui.newgrf_show_old_versions +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.newgrf_default_palette +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 1 +post_cb = UpdateNewGRFConfigPalette +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.console_backlog_timeout +type = SLE_UINT16 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 100 +min = 10 +max = 65500 + +[SDTC_VAR] +var = gui.console_backlog_length +type = SLE_UINT16 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 100 +min = 10 +max = 65500 + +[SDTC_VAR] +var = gui.refresh_rate +type = SLE_UINT16 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 60 +min = 10 +max = 1000 +cat = SC_EXPERT +startup = true + +[SDTC_VAR] +var = gui.fast_forward_speed_limit +type = SLE_UINT16 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_NO_NETWORK +def = 2500 +min = 0 +max = 50000 +interval = 10 +str = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT +strhelp = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT +strval = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL +cat = SC_BASIC + +[SDTC_VAR] +var = gui.network_chat_box_width_pct +type = SLE_UINT16 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 40 +min = 10 +max = 100 +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.network_chat_box_height +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 25 +min = 5 +max = 255 +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.network_chat_timeout +type = SLE_UINT16 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 20 +min = 1 +max = 65535 +cat = SC_EXPERT + diff --git a/src/table/settings/linkgraph_settings.ini b/src/table/settings/linkgraph_settings.ini new file mode 100644 index 000000000..04ef32d62 --- /dev/null +++ b/src/table/settings/linkgraph_settings.ini @@ -0,0 +1,168 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; Linkgraph settings as stored in the main configuration file ("openttd.cfg") +; and in the savegame PATS chunk and in the linkgraph chunks for each job running. + +[pre-amble] +static const SettingVariant _linkgraph_settings_table[] = { +[post-amble] +}; +[templates] +SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +[SDT_VAR] +var = linkgraph.recalc_interval +type = SLE_UINT16 +from = SLV_183 +def = 4 +min = 2 +max = 32 +interval = 2 +str = STR_CONFIG_SETTING_LINKGRAPH_INTERVAL +strval = STR_JUST_COMMA +strhelp = STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT +extra = offsetof(LinkGraphSettings, recalc_interval) + +[SDT_VAR] +var = linkgraph.recalc_time +type = SLE_UINT16 +from = SLV_183 +def = 16 +min = 1 +max = 4096 +interval = 1 +str = STR_CONFIG_SETTING_LINKGRAPH_TIME +strval = STR_JUST_COMMA +strhelp = STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT +extra = offsetof(LinkGraphSettings, recalc_time) + +[SDT_VAR] +var = linkgraph.distribution_pax +type = SLE_UINT8 +from = SLV_183 +flags = SF_GUI_DROPDOWN +def = DT_MANUAL +min = DT_MIN +max = DT_MAX +interval = 1 +str = STR_CONFIG_SETTING_DISTRIBUTION_PAX +strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL +strhelp = STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT +extra = offsetof(LinkGraphSettings, distribution_pax) + +[SDT_VAR] +var = linkgraph.distribution_mail +type = SLE_UINT8 +from = SLV_183 +flags = SF_GUI_DROPDOWN +def = DT_MANUAL +min = DT_MIN +max = DT_MAX +interval = 1 +str = STR_CONFIG_SETTING_DISTRIBUTION_MAIL +strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL +strhelp = STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT +extra = offsetof(LinkGraphSettings, distribution_mail) + +[SDT_VAR] +var = linkgraph.distribution_armoured +type = SLE_UINT8 +from = SLV_183 +flags = SF_GUI_DROPDOWN +def = DT_MANUAL +min = DT_MIN +max = DT_MAX +interval = 1 +str = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED +strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL +strhelp = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT +extra = offsetof(LinkGraphSettings, distribution_armoured) + +[SDT_VAR] +var = linkgraph.distribution_default +type = SLE_UINT8 +from = SLV_183 +flags = SF_GUI_DROPDOWN +def = DT_MANUAL +min = DT_BEGIN +max = DT_MAX_NONSYMMETRIC +interval = 1 +str = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT +strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL +strhelp = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT +extra = offsetof(LinkGraphSettings, distribution_default) + +[SDT_VAR] +var = linkgraph.accuracy +type = SLE_UINT8 +from = SLV_183 +def = 16 +min = 2 +max = 64 +interval = 1 +str = STR_CONFIG_SETTING_LINKGRAPH_ACCURACY +strval = STR_JUST_COMMA +strhelp = STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT +extra = offsetof(LinkGraphSettings, accuracy) + +[SDT_VAR] +var = linkgraph.demand_distance +type = SLE_UINT8 +from = SLV_183 +def = 100 +min = 0 +max = 255 +interval = 5 +str = STR_CONFIG_SETTING_DEMAND_DISTANCE +strval = STR_CONFIG_SETTING_PERCENTAGE +strhelp = STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT +extra = offsetof(LinkGraphSettings, demand_distance) + +[SDT_VAR] +var = linkgraph.demand_size +type = SLE_UINT8 +from = SLV_183 +def = 100 +min = 0 +max = 100 +interval = 5 +str = STR_CONFIG_SETTING_DEMAND_SIZE +strval = STR_CONFIG_SETTING_PERCENTAGE +strhelp = STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT +extra = offsetof(LinkGraphSettings, demand_size) + +[SDT_VAR] +var = linkgraph.short_path_saturation +type = SLE_UINT8 +from = SLV_183 +def = 80 +min = 0 +max = 250 +interval = 5 +str = STR_CONFIG_SETTING_SHORT_PATH_SATURATION +strval = STR_CONFIG_SETTING_PERCENTAGE +strhelp = STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT +extra = offsetof(LinkGraphSettings, short_path_saturation) diff --git a/src/table/settings/locale_settings.ini b/src/table/settings/locale_settings.ini new file mode 100644 index 000000000..777ae15cf --- /dev/null +++ b/src/table/settings/locale_settings.ini @@ -0,0 +1,177 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; Locale settings as stored in the main configuration file ("openttd.cfg") and +; in the savegame PATS chunk. These settings are not sync'd over the network. + +[pre-amble] +uint8 _old_units; ///< Old units from old savegames + +static std::initializer_list<const char*> _locale_currencies{"GBP", "USD", "EUR", "YEN", "ATS", "BEF", "CHF", "CZK", "DEM", "DKK", "ESP", "FIM", "FRF", "GRD", "HUF", "ISK", "ITL", "NLG", "NOK", "PLN", "RON", "RUR", "SIT", "SEK", "YTL", "SKK", "BRL", "EEK", "custom"}; +static std::initializer_list<const char*> _locale_units{"imperial", "metric", "si", "gameunits"}; + +static const SettingVariant _locale_settings_table[] = { +[post-amble] +}; +[templates] +SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $var, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup), +SDT_SSTR = SDT_SSTR(GameSettings, $var, $type, $flags, $def, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDTG_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); +SDT_OMANY = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +[SDT_OMANY] +var = locale.currency +type = SLE_UINT8 +from = SLV_97 +flags = SF_NO_NETWORK_SYNC +def = 0 +max = CURRENCY_END - 1 +full = _locale_currencies +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC + +[SDTG_OMANY] +name = ""units"" +var = _old_units +type = SLE_UINT8 +from = SLV_97 +to = SLV_184 +flags = SF_NOT_IN_CONFIG +def = 1 +max = 2 +full = _locale_units +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC + +[SDT_OMANY] +var = locale.units_velocity +type = SLE_UINT8 +from = SLV_184 +flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 3 +full = _locale_units +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL + +[SDT_OMANY] +var = locale.units_power +type = SLE_UINT8 +from = SLV_184 +flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 2 +full = _locale_units +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL + +[SDT_OMANY] +var = locale.units_weight +type = SLE_UINT8 +from = SLV_184 +flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 2 +full = _locale_units +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL + +[SDT_OMANY] +var = locale.units_volume +type = SLE_UINT8 +from = SLV_184 +flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 2 +full = _locale_units +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL + +[SDT_OMANY] +var = locale.units_force +type = SLE_UINT8 +from = SLV_184 +flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _locale_units +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL + +[SDT_OMANY] +var = locale.units_height +type = SLE_UINT8 +from = SLV_184 +flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 2 +full = _locale_units +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC +str = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT +strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT +strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL + +[SDT_SSTR] +var = locale.digit_group_separator +type = SLE_STRQ +from = SLV_118 +flags = SF_NO_NETWORK_SYNC +def = nullptr +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC + +[SDT_SSTR] +var = locale.digit_group_separator_currency +type = SLE_STRQ +from = SLV_118 +flags = SF_NO_NETWORK_SYNC +def = nullptr +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC + +[SDT_SSTR] +var = locale.digit_decimal_separator +type = SLE_STRQ +from = SLV_126 +flags = SF_NO_NETWORK_SYNC +def = nullptr +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC diff --git a/src/table/settings/multimedia_settings.ini b/src/table/settings/multimedia_settings.ini new file mode 100644 index 000000000..14c6b7b30 --- /dev/null +++ b/src/table/settings/multimedia_settings.ini @@ -0,0 +1,148 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; Multimedia (sound / music) settings as stored in the main configuration file ("openttd.cfg"). + +[pre-amble] + +static const SettingVariant _multimedia_settings_table[] = { +[post-amble] +}; +[templates] +SDTC_BOOL = SDTC_BOOL( $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTC_LIST = SDTC_LIST( $var, $type, $flags, $def, $from, $to, $cat, $extra, $startup), +SDTC_VAR = SDTC_VAR( $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +[SDTC_BOOL] +var = sound.news_ticker +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_TICKER +strhelp = STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT + +[SDTC_BOOL] +var = sound.news_full +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_NEWS +strhelp = STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT + +[SDTC_BOOL] +var = sound.new_year +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_NEW_YEAR +strhelp = STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT + +[SDTC_BOOL] +var = sound.confirm +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_CONFIRM +strhelp = STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT + +[SDTC_BOOL] +var = sound.click_beep +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_CLICK +strhelp = STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT + +[SDTC_BOOL] +var = sound.disaster +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_DISASTER +strhelp = STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT + +[SDTC_BOOL] +var = sound.vehicle +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_VEHICLE +strhelp = STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT + +[SDTC_BOOL] +var = sound.ambient +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_AMBIENT +strhelp = STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT + +[SDTC_VAR] +var = music.playlist +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 5 +interval = 1 +cat = SC_BASIC + +[SDTC_VAR] +var = music.music_vol +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 50 +min = 0 +max = 127 +interval = 1 +cat = SC_BASIC + +[SDTC_VAR] +var = music.effect_vol +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 100 +min = 0 +max = 127 +interval = 1 +cat = SC_BASIC + +[SDTC_LIST] +var = music.custom_1 +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = nullptr +cat = SC_BASIC + +[SDTC_LIST] +var = music.custom_2 +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = nullptr +cat = SC_BASIC + +[SDTC_BOOL] +var = music.playing +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = true +cat = SC_BASIC + +[SDTC_BOOL] +var = music.shuffle +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +cat = SC_BASIC diff --git a/src/table/settings/news_display_settings.ini b/src/table/settings/news_display_settings.ini new file mode 100644 index 000000000..e3a23d355 --- /dev/null +++ b/src/table/settings/news_display_settings.ini @@ -0,0 +1,201 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; News display settings as stored in the main configuration file ("openttd.cfg"). + +[pre-amble] +static std::initializer_list<const char*> _news_display{ "off", "summarized", "full"}; + +static const SettingVariant _news_display_settings_table[] = { +[post-amble] +}; +[templates] +SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +[SDTC_OMANY] +var = news_display.arrival_player +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN +strhelp = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.arrival_other +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER +strhelp = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.accident +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS +strhelp = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.company_info +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION +strhelp = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.open +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN +strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.close +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE +strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.economy +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES +strhelp = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.production_player +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY +strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.production_other +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 0 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER +strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.production_nobody +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 0 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED +strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.advice +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_ADVICE +strhelp = STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.new_vehicles +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES +strhelp = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.acceptance +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE +strhelp = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.subsidies +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_SUBSIDIES +strhelp = STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + +[SDTC_OMANY] +var = news_display.general +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 2 +max = 2 +full = _news_display +str = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION +strhelp = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT +strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF + diff --git a/src/table/settings/gameopt_settings.ini b/src/table/settings/old_gameopt_settings.ini index 83e7c6395..4e8e46716 100644 --- a/src/table/settings/gameopt_settings.ini +++ b/src/table/settings/old_gameopt_settings.ini @@ -14,25 +14,10 @@ ; be saved in their new place. [pre-amble] -const std::array<std::string, GAME_DIFFICULTY_NUM> _old_diff_settings{"max_no_competitors", "competitor_start_time", "number_towns", "industry_density", "max_loan", "initial_interest", "vehicle_costs", "competitor_speed", "competitor_intelligence", "vehicle_breakdowns", "subsidy_multiplier", "construction_cost", "terrain_type", "quantity_sea_lakes", "economy", "line_reverse_mode", "disasters", "town_council_tolerance"}; -uint16 _old_diff_custom[GAME_DIFFICULTY_NUM]; -uint8 _old_diff_level; ///< Old difficulty level from old savegames -uint8 _old_units; ///< Old units from old savegames - -/* Most of these strings are used both for gameopt-backward compatibility - * and the settings tables. The rest is here for consistency. */ -static std::initializer_list<const char*> _locale_currencies{"GBP", "USD", "EUR", "YEN", "ATS", "BEF", "CHF", "CZK", "DEM", "DKK", "ESP", "FIM", "FRF", "GRD", "HUF", "ISK", "ITL", "NLG", "NOK", "PLN", "RON", "RUR", "SIT", "SEK", "YTL", "SKK", "BRL", "EEK", "custom"}; -static std::initializer_list<const char*> _locale_units{"imperial", "metric", "si", "gameunits"}; static std::initializer_list<const char*> _town_names{"english", "french", "german", "american", "latin", "silly", "swedish", "dutch", "finnish", "polish", "slovak", "norwegian", "hungarian", "austrian", "romanian", "czech", "swiss", "danish", "turkish", "italian", "catalan"}; static std::initializer_list<const char*> _climates{"temperate", "arctic", "tropic", "toyland"}; -static std::initializer_list<const char*> _autosave_interval{"off", "monthly", "quarterly", "half year", "yearly"}; -static std::initializer_list<const char*> _roadsides{"left", "right"}; -static std::initializer_list<const char*> _savegame_date{"long", "short", "iso"}; -static std::initializer_list<const char*> _osk_activation{"disabled", "double", "single", "immediately"}; -static std::initializer_list<const char*> _settings_profiles{"easy", "medium", "hard"}; -static std::initializer_list<const char*> _news_display{ "off", "summarized", "full"}; - -static const SettingVariant _gameopt_settings_table[] = { + +static const SettingVariant _old_gameopt_settings_table[] = { /* In version 4 a new difficulty setting has been added to the difficulty settings, * town attitude towards demolishing. Needs special handling because some dimwit thought * it funny to have the GameDifficulty struct be an array while it is a struct of diff --git a/src/table/settings/pathfinding_settings.ini b/src/table/settings/pathfinding_settings.ini new file mode 100644 index 000000000..322090001 --- /dev/null +++ b/src/table/settings/pathfinding_settings.ini @@ -0,0 +1,617 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; Pathfinding settings as stored in the main configuration file ("openttd.cfg") +; and in the savegame PATS chunk. + +[pre-amble] +static void InvalidateShipPathCache(int32 new_value); + +static const SettingVariant _pathfinding_settings_table[] = { +[post-amble] +}; +[templates] +SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +[SDT_BOOL] +var = pf.forbid_90_deg +def = false +str = STR_CONFIG_SETTING_FORBID_90_DEG +strhelp = STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT +post_cb = InvalidateShipPathCache +cat = SC_EXPERT + +[SDT_BOOL] +var = pf.roadveh_queue +def = true +cat = SC_EXPERT + +[SDT_BOOL] +var = pf.new_pathfinding_all +to = SLV_87 +def = false +cat = SC_EXPERT + +[SDT_BOOL] +var = pf.yapf.ship_use_yapf +from = SLV_28 +to = SLV_87 +def = false +cat = SC_EXPERT + +[SDT_BOOL] +var = pf.yapf.road_use_yapf +from = SLV_28 +to = SLV_87 +def = true +cat = SC_EXPERT + +[SDT_BOOL] +var = pf.yapf.rail_use_yapf +from = SLV_28 +to = SLV_87 +def = true +cat = SC_EXPERT + +[SDT_VAR] +var = pf.pathfinder_for_trains +type = SLE_UINT8 +from = SLV_87 +flags = SF_GUI_DROPDOWN +def = 2 +min = 1 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS +strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT +strval = STR_CONFIG_SETTING_PATHFINDER_NPF +cat = SC_EXPERT + +[SDT_VAR] +var = pf.pathfinder_for_roadvehs +type = SLE_UINT8 +from = SLV_87 +flags = SF_GUI_DROPDOWN +def = 2 +min = 1 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES +strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT +strval = STR_CONFIG_SETTING_PATHFINDER_NPF +cat = SC_EXPERT + +[SDT_VAR] +var = pf.pathfinder_for_ships +type = SLE_UINT8 +from = SLV_87 +flags = SF_GUI_DROPDOWN +def = 2 +min = 1 +max = 2 +interval = 1 +str = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS +strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT +strval = STR_CONFIG_SETTING_PATHFINDER_NPF +post_cb = InvalidateShipPathCache +cat = SC_EXPERT + +[SDT_BOOL] +var = pf.reverse_at_signals +from = SLV_159 +def = false +str = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS +strhelp = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT + +[SDT_VAR] +var = pf.wait_oneway_signal +type = SLE_UINT8 +def = 15 +min = 2 +max = 255 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.wait_twoway_signal +type = SLE_UINT8 +def = 41 +min = 2 +max = 255 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.wait_for_pbs_path +type = SLE_UINT8 +from = SLV_100 +def = 30 +min = 2 +max = 255 +cat = SC_EXPERT + +[SDT_BOOL] +var = pf.reserve_paths +from = SLV_100 +def = false +cat = SC_EXPERT + +[SDT_VAR] +var = pf.path_backoff_interval +type = SLE_UINT8 +from = SLV_100 +def = 20 +min = 1 +max = 255 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_max_search_nodes +type = SLE_UINT +def = 10000 +min = 500 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_rail_firstred_penalty +type = SLE_UINT +def = 10 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_rail_firstred_exit_penalty +type = SLE_UINT +def = 100 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_rail_lastred_penalty +type = SLE_UINT +def = 10 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_rail_station_penalty +type = SLE_UINT +def = 1 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_rail_slope_penalty +type = SLE_UINT +def = 1 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_rail_curve_penalty +type = SLE_UINT +def = 1 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_rail_depot_reverse_penalty +type = SLE_UINT +def = 50 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_rail_pbs_cross_penalty +type = SLE_UINT +from = SLV_100 +def = 3 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_rail_pbs_signal_back_penalty +type = SLE_UINT +from = SLV_100 +def = 15 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_buoy_penalty +type = SLE_UINT +def = 2 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_water_curve_penalty +type = SLE_UINT +def = 1 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_road_curve_penalty +type = SLE_UINT +def = 1 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_crossing_penalty +type = SLE_UINT +def = 3 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_road_drive_through_penalty +type = SLE_UINT +from = SLV_47 +def = 8 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_road_dt_occupied_penalty +type = SLE_UINT +from = SLV_130 +def = 8 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.npf_road_bay_occupied_penalty +type = SLE_UINT +from = SLV_130 +def = 15 * NPF_TILE_LENGTH +min = 0 +max = 100000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.npf.maximum_go_to_depot_penalty +type = SLE_UINT +from = SLV_131 +def = 20 * NPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_BOOL] +var = pf.yapf.disable_node_optimization +from = SLV_28 +def = false +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.max_search_nodes +type = SLE_UINT +from = SLV_28 +def = 10000 +min = 500 +max = 1000000 +cat = SC_EXPERT + +[SDT_BOOL] +var = pf.yapf.rail_firstred_twoway_eol +from = SLV_28 +def = false +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_firstred_penalty +type = SLE_UINT +from = SLV_28 +def = 10 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_firstred_exit_penalty +type = SLE_UINT +from = SLV_28 +def = 100 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_lastred_penalty +type = SLE_UINT +from = SLV_28 +def = 10 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_lastred_exit_penalty +type = SLE_UINT +from = SLV_28 +def = 100 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_station_penalty +type = SLE_UINT +from = SLV_28 +def = 10 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_slope_penalty +type = SLE_UINT +from = SLV_28 +def = 2 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_curve45_penalty +type = SLE_UINT +from = SLV_28 +def = 1 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_curve90_penalty +type = SLE_UINT +from = SLV_28 +def = 6 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_depot_reverse_penalty +type = SLE_UINT +from = SLV_28 +def = 50 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_crossing_penalty +type = SLE_UINT +from = SLV_28 +def = 3 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_look_ahead_max_signals +type = SLE_UINT +from = SLV_28 +def = 10 +min = 1 +max = 100 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_look_ahead_signal_p0 +type = SLE_INT +from = SLV_28 +def = 500 +min = -1000000 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_look_ahead_signal_p1 +type = SLE_INT +from = SLV_28 +def = -100 +min = -1000000 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_look_ahead_signal_p2 +type = SLE_INT +from = SLV_28 +def = 5 +min = -1000000 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_pbs_cross_penalty +type = SLE_UINT +from = SLV_100 +def = 3 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_pbs_station_penalty +type = SLE_UINT +from = SLV_100 +def = 8 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_pbs_signal_back_penalty +type = SLE_UINT +from = SLV_100 +def = 15 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_doubleslip_penalty +type = SLE_UINT +from = SLV_100 +def = 1 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_longer_platform_penalty +type = SLE_UINT +from = SLV_33 +def = 8 * YAPF_TILE_LENGTH +min = 0 +max = 20000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_longer_platform_per_tile_penalty +type = SLE_UINT +from = SLV_33 +def = 0 * YAPF_TILE_LENGTH +min = 0 +max = 20000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_shorter_platform_penalty +type = SLE_UINT +from = SLV_33 +def = 40 * YAPF_TILE_LENGTH +min = 0 +max = 20000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.rail_shorter_platform_per_tile_penalty +type = SLE_UINT +from = SLV_33 +def = 0 * YAPF_TILE_LENGTH +min = 0 +max = 20000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.road_slope_penalty +type = SLE_UINT +from = SLV_33 +def = 2 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.road_curve_penalty +type = SLE_UINT +from = SLV_33 +def = 1 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.road_crossing_penalty +type = SLE_UINT +from = SLV_33 +def = 3 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.road_stop_penalty +type = SLE_UINT +from = SLV_47 +def = 8 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.road_stop_occupied_penalty +type = SLE_UINT +from = SLV_130 +def = 8 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.road_stop_bay_occupied_penalty +type = SLE_UINT +from = SLV_130 +def = 15 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.maximum_go_to_depot_penalty +type = SLE_UINT +from = SLV_131 +def = 20 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.ship_curve45_penalty +type = SLE_UINT +from = SLV_SHIP_CURVE_PENALTY +def = 1 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT + +[SDT_VAR] +var = pf.yapf.ship_curve90_penalty +type = SLE_UINT +from = SLV_SHIP_CURVE_PENALTY +def = 6 * YAPF_TILE_LENGTH +min = 0 +max = 1000000 +cat = SC_EXPERT diff --git a/src/table/settings/script_settings.ini b/src/table/settings/script_settings.ini new file mode 100644 index 000000000..2d3531939 --- /dev/null +++ b/src/table/settings/script_settings.ini @@ -0,0 +1,112 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; Script settings as stored in the main configuration file ("openttd.cfg") +; and in the savegame PATS chunk. + +[pre-amble] +static std::initializer_list<const char*> _settings_profiles{"easy", "medium", "hard"}; + +static const SettingVariant _script_settings_table[] = { +[post-amble] +}; +[templates] +SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDT_OMANY = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +[SDT_OMANY] +var = script.settings_profile +type = SLE_UINT8 +from = SLV_178 +flags = SF_GUI_DROPDOWN +def = SP_EASY +min = SP_EASY +max = SP_HARD +full = _settings_profiles +str = STR_CONFIG_SETTING_AI_PROFILE +strhelp = STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT +strval = STR_CONFIG_SETTING_AI_PROFILE_EASY +cat = SC_BASIC + +[SDT_VAR] +var = script.script_max_opcode_till_suspend +type = SLE_UINT32 +from = SLV_107 +flags = SF_NEWGAME_ONLY +def = 10000 +min = 500 +max = 250000 +interval = 2500 +str = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES +strhelp = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT +strval = STR_JUST_COMMA +cat = SC_EXPERT + +[SDT_VAR] +var = script.script_max_memory_megabytes +type = SLE_UINT32 +from = SLV_SCRIPT_MEMLIMIT +flags = SF_NEWGAME_ONLY +def = 1024 +min = 8 +max = 8192 +interval = 8 +str = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY +strhelp = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT +strval = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE +cat = SC_EXPERT + +[SDT_BOOL] +var = ai.ai_in_multiplayer +def = true +str = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER +strhelp = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT +cat = SC_BASIC + +[SDT_BOOL] +var = ai.ai_disable_veh_train +def = false +str = STR_CONFIG_SETTING_AI_BUILDS_TRAINS +strhelp = STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT + +[SDT_BOOL] +var = ai.ai_disable_veh_roadveh +def = false +str = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES +strhelp = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT + +[SDT_BOOL] +var = ai.ai_disable_veh_aircraft +def = false +str = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT +strhelp = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT + +[SDT_BOOL] +var = ai.ai_disable_veh_ship +def = false +str = STR_CONFIG_SETTING_AI_BUILDS_SHIPS +strhelp = STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT diff --git a/src/table/settings/settings.ini b/src/table/settings/settings.ini deleted file mode 100644 index 984668e51..000000000 --- a/src/table/settings/settings.ini +++ /dev/null @@ -1,3487 +0,0 @@ -; This file is part of OpenTTD. -; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. -; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. -; - -; Settings as stored in the main configuration file ("openttd.cfg") and in the -; savegame PATS chunk (if not flagged not to). - -[pre-amble] -/* Begin - Callback Functions for the various settings */ -static void v_PositionMainToolbar(int32 new_value); -static void v_PositionStatusbar(int32 new_value); -static void RedrawSmallmap(int32 new_value); -static void StationSpreadChanged(int32 new_value); -static void CloseSignalGUI(int32 new_value); -static void UpdateConsists(int32 new_value); -static void TrainAccelerationModelChanged(int32 new_value); -static void RoadVehAccelerationModelChanged(int32 new_value); -static void TrainSlopeSteepnessChanged(int32 new_value); -static void RoadVehSlopeSteepnessChanged(int32 new_value); -static void TownFoundingChanged(int32 new_value); -static void DifficultyNoiseChange(int32 new_value); -static void MaxNoAIsChange(int32 new_value); -static bool CheckRoadSide(int32 &new_value); -static bool CheckMaxHeightLevel(int32 &new_value); -static bool CheckFreeformEdges(int32 &new_value); -static void UpdateFreeformEdges(int32 new_value); -static bool CheckDynamicEngines(int32 &new_value); -static void StationCatchmentChanged(int32 new_value); -static void InvalidateCompanyLiveryWindow(int32 new_value); -static void InvalidateNewGRFChangeWindows(int32 new_value); -static void ZoomMinMaxChanged(int32 new_value); -static void SpriteZoomMinChanged(int32 new_value); -static void MaxVehiclesChanged(int32 new_value); -static void InvalidateShipPathCache(int32 new_value); - -/* End - Callback Functions for the various settings */ - -/* Some settings do not need to be synchronised when playing in multiplayer. - * These include for example the GUI settings and will not be saved with the - * savegame. - * It is also a bit tricky since you would think that service_interval - * for example does not need to be synched. Every client assigns the - * service_interval value to the v->service_interval, meaning that every client - * assigns its own value. If the setting was company-based, that would mean that - * vehicles could decide on different moments that they are heading back to a - * service depot, causing desyncs on a massive scale. */ -static const SettingVariant _settings_table[] = { -[post-amble] -}; -[templates] -SDTG_BOOL = SDTG_BOOL($name, $flags, $var, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), -SDTG_VAR = SDTG_VAR($name, $type, $flags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), -SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $var, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), -SDTC_BOOL = SDTC_BOOL( $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), -SDTC_LIST = SDTC_LIST( $var, $type, $flags, $def, $from, $to, $cat, $extra, $startup), -SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), -SDTC_SSTR = SDTC_SSTR( $var, $type, $flags, $def, $length, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), -SDTC_VAR = SDTC_VAR( $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), -SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), -SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup), -SDT_SSTR = SDT_SSTR(GameSettings, $var, $type, $flags, $def, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), -SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), - -[validation] -SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); -SDTG_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); -SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); -SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size"); -SDT_OMANY = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); -SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); - -[defaults] -flags = SF_NONE -interval = 0 -str = STR_NULL -strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT -strval = STR_NULL -pre_cb = nullptr -post_cb = nullptr -load = nullptr -from = SL_MIN_VERSION -to = SL_MAX_VERSION -cat = SC_ADVANCED -extra = 0 -startup = false - - - -; Saved settings variables. -; The next 18 entries are important for savegame compatibility. Do NOT remove those. See HandleOldDiffCustom() for more details. -[SDT_VAR] -var = difficulty.max_no_competitors -type = SLE_UINT8 -from = SLV_97 -def = 0 -min = 0 -max = MAX_COMPANIES - 1 -interval = 1 -post_cb = MaxNoAIsChange -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.competitor_start_time -type = SLE_UINT8 -from = SLV_97 -to = SLV_110 -def = 2 -min = 0 -max = 3 - -[SDT_VAR] -var = difficulty.number_towns -type = SLE_UINT8 -from = SLV_97 -flags = SF_NEWGAME_ONLY -def = 2 -min = 0 -max = 4 -interval = 1 -strval = STR_NUM_VERY_LOW -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.industry_density -type = SLE_UINT8 -from = SLV_97 -flags = SF_GUI_DROPDOWN -def = ID_END - 1 -min = 0 -max = ID_END - 1 -interval = 1 -str = STR_CONFIG_SETTING_INDUSTRY_DENSITY -strhelp = STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT -strval = STR_FUNDING_ONLY -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.max_loan -type = SLE_UINT32 -from = SLV_97 -flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_CURRENCY -def = 300000 -min = 0 -max = 2000000000 -interval = 50000 -str = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN -strhelp = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT -strval = STR_JUST_CURRENCY_LONG -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.initial_interest -type = SLE_UINT8 -from = SLV_97 -flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO -def = 2 -min = 2 -max = 4 -interval = 1 -str = STR_CONFIG_SETTING_INTEREST_RATE -strhelp = STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT -strval = STR_CONFIG_SETTING_PERCENTAGE - -[SDT_VAR] -var = difficulty.vehicle_costs -type = SLE_UINT8 -from = SLV_97 -flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_RUNNING_COSTS -strhelp = STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT -strval = STR_SEA_LEVEL_LOW -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.competitor_speed -type = SLE_UINT8 -from = SLV_97 -flags = SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 4 -interval = 1 -str = STR_CONFIG_SETTING_CONSTRUCTION_SPEED -strhelp = STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT -strval = STR_AI_SPEED_VERY_SLOW -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.competitor_intelligence -type = SLE_UINT8 -from = SLV_97 -to = SLV_110 -def = 0 -min = 0 -max = 2 - -[SDT_VAR] -var = difficulty.vehicle_breakdowns -type = SLE_UINT8 -from = SLV_97 -flags = SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS -strhelp = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT -strval = STR_DISASTER_NONE -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.subsidy_multiplier -type = SLE_UINT8 -from = SLV_97 -flags = SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 3 -interval = 1 -str = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER -strhelp = STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT -strval = STR_SUBSIDY_X1_5 - -[SDT_VAR] -var = difficulty.subsidy_duration -type = SLE_UINT16 -from = SLV_CUSTOM_SUBSIDY_DURATION -flags = SF_GUI_0_IS_SPECIAL -def = 1 -min = 0 -max = 5000 -interval = 1 -str = STR_CONFIG_SETTING_SUBSIDY_DURATION -strhelp = STR_CONFIG_SETTING_SUBSIDY_DURATION_HELPTEXT -strval = STR_CONFIG_SETTING_SUBSIDY_DURATION_VALUE - -[SDT_VAR] -var = difficulty.construction_cost -type = SLE_UINT8 -from = SLV_97 -flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_CONSTRUCTION_COSTS -strhelp = STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT -strval = STR_SEA_LEVEL_LOW -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.terrain_type -type = SLE_UINT8 -from = SLV_97 -flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY -def = 1 -min = 0 -max = 5 -interval = 1 -str = STR_CONFIG_SETTING_TERRAIN_TYPE -strhelp = STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT -strval = STR_TERRAIN_TYPE_VERY_FLAT -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.quantity_sea_lakes -type = SLE_UINT8 -from = SLV_97 -flags = SF_NEWGAME_ONLY -def = 0 -min = 0 -max = 4 -interval = 1 -strval = STR_SEA_LEVEL_VERY_LOW -cat = SC_BASIC - -[SDT_BOOL] -var = difficulty.economy -from = SLV_97 -def = false -str = STR_CONFIG_SETTING_RECESSIONS -strhelp = STR_CONFIG_SETTING_RECESSIONS_HELPTEXT - -[SDT_BOOL] -var = difficulty.line_reverse_mode -from = SLV_97 -def = false -str = STR_CONFIG_SETTING_TRAIN_REVERSING -strhelp = STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT - -[SDT_BOOL] -var = difficulty.disasters -from = SLV_97 -def = false -str = STR_CONFIG_SETTING_DISASTERS -strhelp = STR_CONFIG_SETTING_DISASTERS_HELPTEXT -cat = SC_BASIC - -[SDT_VAR] -var = difficulty.town_council_tolerance -type = SLE_UINT8 -from = SLV_97 -flags = SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_CITY_APPROVAL -strhelp = STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT -strval = STR_CITY_APPROVAL_PERMISSIVE -post_cb = DifficultyNoiseChange - -[SDTG_VAR] -name = ""diff_level"" -var = _old_diff_level -type = SLE_UINT8 -flags = SF_NOT_IN_CONFIG -from = SLV_97 -to = SLV_178 -def = 3 -min = 0 -max = 3 -cat = SC_BASIC - -; There are only 21 predefined town_name values (0-20), but you can have more with newgrf action F so allow -; these bigger values (21-255). Invalid values will fallback to english on use and (undefined string) in GUI. -[SDT_OMANY] -var = game_creation.town_name -type = SLE_UINT8 -from = SLV_97 -flags = SF_NO_NETWORK -def = 0 -max = 255 -full = _town_names -cat = SC_BASIC - -[SDT_OMANY] -var = game_creation.landscape -type = SLE_UINT8 -from = SLV_97 -flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY -def = 0 -max = 3 -full = _climates -load = ConvertLandscape -str = STR_CONFIG_SETTING_LANDSCAPE -strhelp = STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT -strval = STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE -cat = SC_BASIC - -[SDT_OMANY] -var = vehicle.road_side -type = SLE_UINT8 -from = SLV_97 -flags = SF_GUI_DROPDOWN | SF_NO_NETWORK -def = 1 -max = 1 -full = _roadsides -str = STR_CONFIG_SETTING_ROAD_SIDE -strhelp = STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT -strval = STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT -pre_cb = CheckRoadSide -cat = SC_BASIC - -; Construction - -[SDT_VAR] -var = construction.map_height_limit -type = SLE_UINT8 -from = SLV_194 -flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_0_IS_SPECIAL -def = 0 -min = MIN_MAP_HEIGHT_LIMIT -max = MAX_MAP_HEIGHT_LIMIT -interval = 1 -str = STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT -strhelp = STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT -strval = STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE -pre_cb = CheckMaxHeightLevel -post_cb = [](auto) { InvalidateWindowClassesData(WC_SMALLMAP, 2); } -cat = SC_ADVANCED - -[SDT_VAR] -var = game_creation.heightmap_height -type = SLE_UINT8 -from = SLV_MAPGEN_SETTINGS_REVAMP -flags = SF_NEWGAME_ONLY -def = MAP_HEIGHT_LIMIT_AUTO_MINIMUM -min = MIN_HEIGHTMAP_HEIGHT -max = MAX_MAP_HEIGHT_LIMIT -interval = 1 - -[SDT_BOOL] -var = construction.build_on_slopes -flags = SF_NO_NETWORK -def = true -cat = SC_EXPERT - -[SDT_VAR] -var = construction.command_pause_level -type = SLE_UINT8 -from = SLV_154 -flags = SF_GUI_DROPDOWN | SF_NO_NETWORK -def = 1 -min = 0 -max = 3 -interval = 1 -str = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL -strhelp = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT -strval = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS - -[SDT_VAR] -var = construction.terraform_per_64k_frames -type = SLE_UINT32 -from = SLV_156 -def = 64 << 16 -min = 0 -max = 1 << 30 -interval = 1 -cat = SC_EXPERT - -[SDT_VAR] -var = construction.terraform_frame_burst -type = SLE_UINT16 -from = SLV_156 -def = 4096 -min = 0 -max = 1 << 15 -interval = 1 -cat = SC_EXPERT - -[SDT_VAR] -var = construction.clear_per_64k_frames -type = SLE_UINT32 -from = SLV_156 -def = 64 << 16 -min = 0 -max = 1 << 30 -interval = 1 -cat = SC_EXPERT - -[SDT_VAR] -var = construction.clear_frame_burst -type = SLE_UINT16 -from = SLV_156 -def = 4096 -min = 0 -max = 1 << 15 -interval = 1 -cat = SC_EXPERT - -[SDT_VAR] -var = construction.tree_per_64k_frames -type = SLE_UINT32 -from = SLV_175 -def = 64 << 16 -min = 0 -max = 1 << 30 -interval = 1 -cat = SC_EXPERT - -[SDT_VAR] -var = construction.tree_frame_burst -type = SLE_UINT16 -from = SLV_175 -def = 4096 -min = 0 -max = 1 << 15 -interval = 1 -cat = SC_EXPERT - -[SDT_BOOL] -var = construction.autoslope -from = SLV_75 -def = true -str = STR_CONFIG_SETTING_AUTOSLOPE -strhelp = STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT -cat = SC_EXPERT - -[SDT_BOOL] -var = construction.extra_dynamite -def = true -str = STR_CONFIG_SETTING_EXTRADYNAMITE -strhelp = STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT - -[SDT_VAR] -var = construction.max_bridge_length -type = SLE_UINT16 -from = SLV_159 -flags = SF_NO_NETWORK -def = 64 -min = 1 -max = MAX_MAP_SIZE -interval = 1 -str = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH -strhelp = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT -strval = STR_CONFIG_SETTING_TILE_LENGTH - -[SDT_VAR] -var = construction.max_bridge_height -type = SLE_UINT8 -from = SLV_194 -flags = SF_NO_NETWORK -def = 12 -min = 1 -max = MAX_TILE_HEIGHT -interval = 1 -str = STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT -strhelp = STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT -strval = STR_JUST_COMMA -cat = SC_EXPERT - -[SDT_VAR] -var = construction.max_tunnel_length -type = SLE_UINT16 -from = SLV_159 -flags = SF_NO_NETWORK -def = 64 -min = 1 -max = MAX_MAP_SIZE -interval = 1 -str = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH -strhelp = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT -strval = STR_CONFIG_SETTING_TILE_LENGTH - -[SDT_VAR] -var = construction.train_signal_side -type = SLE_UINT8 -flags = SF_GUI_DROPDOWN | SF_NO_NETWORK -def = 1 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_SIGNALSIDE -strhelp = STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT -strval = STR_CONFIG_SETTING_SIGNALSIDE_LEFT -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - -[SDT_BOOL] -var = station.never_expire_airports -flags = SF_NO_NETWORK -def = false -str = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS -strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT - -[SDT_VAR] -var = economy.town_layout -type = SLE_UINT8 -from = SLV_59 -flags = SF_GUI_DROPDOWN -def = TL_ORIGINAL -min = TL_BEGIN -max = NUM_TLS - 1 -interval = 1 -str = STR_CONFIG_SETTING_TOWN_LAYOUT -strhelp = STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT -strval = STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT -post_cb = TownFoundingChanged - -[SDT_BOOL] -var = economy.allow_town_roads -from = SLV_113 -flags = SF_NO_NETWORK -def = true -str = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS -strhelp = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT - -[SDT_VAR] -var = economy.found_town -type = SLE_UINT8 -from = SLV_128 -flags = SF_GUI_DROPDOWN -def = TF_FORBIDDEN -min = TF_BEGIN -max = TF_END - 1 -interval = 1 -str = STR_CONFIG_SETTING_TOWN_FOUNDING -strhelp = STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT -strval = STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN -post_cb = TownFoundingChanged -cat = SC_BASIC - -[SDT_BOOL] -var = economy.allow_town_level_crossings -from = SLV_143 -flags = SF_NO_NETWORK -def = true -str = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS -strhelp = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT - -[SDT_VAR] -var = economy.town_cargogen_mode -type = SLE_UINT8 -from = SLV_TOWN_CARGOGEN -flags = SF_GUI_DROPDOWN -def = TCGM_BITCOUNT -min = TCGM_BEGIN -max = TCGM_END - 1 -interval = 1 -str = STR_CONFIG_SETTING_TOWN_CARGOGENMODE -strhelp = STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT -strval = STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL -cat = SC_ADVANCED - -; link graph - -[SDT_VAR] -var = linkgraph.recalc_interval -type = SLE_UINT16 -from = SLV_183 -def = 4 -min = 2 -max = 32 -interval = 2 -str = STR_CONFIG_SETTING_LINKGRAPH_INTERVAL -strval = STR_JUST_COMMA -strhelp = STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT -extra = offsetof(LinkGraphSettings, recalc_interval) - -[SDT_VAR] -var = linkgraph.recalc_time -type = SLE_UINT16 -from = SLV_183 -def = 16 -min = 1 -max = 4096 -interval = 1 -str = STR_CONFIG_SETTING_LINKGRAPH_TIME -strval = STR_JUST_COMMA -strhelp = STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT -extra = offsetof(LinkGraphSettings, recalc_time) - - -[SDT_VAR] -var = linkgraph.distribution_pax -type = SLE_UINT8 -from = SLV_183 -flags = SF_GUI_DROPDOWN -def = DT_MANUAL -min = DT_MIN -max = DT_MAX -interval = 1 -str = STR_CONFIG_SETTING_DISTRIBUTION_PAX -strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL -strhelp = STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT -extra = offsetof(LinkGraphSettings, distribution_pax) - - -[SDT_VAR] -var = linkgraph.distribution_mail -type = SLE_UINT8 -from = SLV_183 -flags = SF_GUI_DROPDOWN -def = DT_MANUAL -min = DT_MIN -max = DT_MAX -interval = 1 -str = STR_CONFIG_SETTING_DISTRIBUTION_MAIL -strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL -strhelp = STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT -extra = offsetof(LinkGraphSettings, distribution_mail) - - -[SDT_VAR] -var = linkgraph.distribution_armoured -type = SLE_UINT8 -from = SLV_183 -flags = SF_GUI_DROPDOWN -def = DT_MANUAL -min = DT_MIN -max = DT_MAX -interval = 1 -str = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED -strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL -strhelp = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT -extra = offsetof(LinkGraphSettings, distribution_armoured) - - -[SDT_VAR] -var = linkgraph.distribution_default -type = SLE_UINT8 -from = SLV_183 -flags = SF_GUI_DROPDOWN -def = DT_MANUAL -min = DT_BEGIN -max = DT_MAX_NONSYMMETRIC -interval = 1 -str = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT -strval = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL -strhelp = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT -extra = offsetof(LinkGraphSettings, distribution_default) - - -[SDT_VAR] -var = linkgraph.accuracy -type = SLE_UINT8 -from = SLV_183 -def = 16 -min = 2 -max = 64 -interval = 1 -str = STR_CONFIG_SETTING_LINKGRAPH_ACCURACY -strval = STR_JUST_COMMA -strhelp = STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT -extra = offsetof(LinkGraphSettings, accuracy) - - -[SDT_VAR] -var = linkgraph.demand_distance -type = SLE_UINT8 -from = SLV_183 -def = 100 -min = 0 -max = 255 -interval = 5 -str = STR_CONFIG_SETTING_DEMAND_DISTANCE -strval = STR_CONFIG_SETTING_PERCENTAGE -strhelp = STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT -extra = offsetof(LinkGraphSettings, demand_distance) - - -[SDT_VAR] -var = linkgraph.demand_size -type = SLE_UINT8 -from = SLV_183 -def = 100 -min = 0 -max = 100 -interval = 5 -str = STR_CONFIG_SETTING_DEMAND_SIZE -strval = STR_CONFIG_SETTING_PERCENTAGE -strhelp = STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT -extra = offsetof(LinkGraphSettings, demand_size) - - -[SDT_VAR] -var = linkgraph.short_path_saturation -type = SLE_UINT8 -from = SLV_183 -def = 80 -min = 0 -max = 250 -interval = 5 -str = STR_CONFIG_SETTING_SHORT_PATH_SATURATION -strval = STR_CONFIG_SETTING_PERCENTAGE -strhelp = STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT -extra = offsetof(LinkGraphSettings, short_path_saturation) - - -; Vehicles - -[SDT_VAR] -var = vehicle.train_acceleration_model -type = SLE_UINT8 -flags = SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 1 -interval = 1 -str = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL -strhelp = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT -strval = STR_CONFIG_SETTING_ORIGINAL -post_cb = TrainAccelerationModelChanged - -[SDT_VAR] -var = vehicle.roadveh_acceleration_model -type = SLE_UINT8 -from = SLV_139 -flags = SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 1 -interval = 1 -str = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL -strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT -strval = STR_CONFIG_SETTING_ORIGINAL -post_cb = RoadVehAccelerationModelChanged - -[SDT_VAR] -var = vehicle.train_slope_steepness -type = SLE_UINT8 -from = SLV_133 -def = 3 -min = 0 -max = 10 -interval = 1 -str = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS -strhelp = STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT -strval = STR_CONFIG_SETTING_PERCENTAGE -post_cb = TrainSlopeSteepnessChanged -cat = SC_EXPERT - -[SDT_VAR] -var = vehicle.roadveh_slope_steepness -type = SLE_UINT8 -from = SLV_139 -def = 7 -min = 0 -max = 10 -interval = 1 -str = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS -strhelp = STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT -strval = STR_CONFIG_SETTING_PERCENTAGE -post_cb = RoadVehSlopeSteepnessChanged -cat = SC_EXPERT - -[SDT_BOOL] -var = pf.forbid_90_deg -def = false -str = STR_CONFIG_SETTING_FORBID_90_DEG -strhelp = STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT -post_cb = InvalidateShipPathCache -cat = SC_EXPERT - -[SDT_VAR] -var = vehicle.max_train_length -type = SLE_UINT8 -from = SLV_159 -def = 7 -min = 1 -max = 64 -interval = 1 -str = STR_CONFIG_SETTING_TRAIN_LENGTH -strhelp = STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT -strval = STR_CONFIG_SETTING_TILE_LENGTH -cat = SC_BASIC - -[SDT_VAR] -var = vehicle.smoke_amount -type = SLE_UINT8 -from = SLV_145 -flags = SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_SMOKE_AMOUNT -strhelp = STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT -strval = STR_CONFIG_SETTING_NONE - -; path finder - -[SDT_BOOL] -var = pf.roadveh_queue -def = true -cat = SC_EXPERT - -[SDT_BOOL] -var = pf.new_pathfinding_all -to = SLV_87 -def = false -cat = SC_EXPERT - -[SDT_BOOL] -var = pf.yapf.ship_use_yapf -from = SLV_28 -to = SLV_87 -def = false -cat = SC_EXPERT - -[SDT_BOOL] -var = pf.yapf.road_use_yapf -from = SLV_28 -to = SLV_87 -def = true -cat = SC_EXPERT - -[SDT_BOOL] -var = pf.yapf.rail_use_yapf -from = SLV_28 -to = SLV_87 -def = true -cat = SC_EXPERT - -## -[SDT_VAR] -var = pf.pathfinder_for_trains -type = SLE_UINT8 -from = SLV_87 -flags = SF_GUI_DROPDOWN -def = 2 -min = 1 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS -strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT -strval = STR_CONFIG_SETTING_PATHFINDER_NPF -cat = SC_EXPERT - -[SDT_VAR] -var = pf.pathfinder_for_roadvehs -type = SLE_UINT8 -from = SLV_87 -flags = SF_GUI_DROPDOWN -def = 2 -min = 1 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES -strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT -strval = STR_CONFIG_SETTING_PATHFINDER_NPF -cat = SC_EXPERT - -[SDT_VAR] -var = pf.pathfinder_for_ships -type = SLE_UINT8 -from = SLV_87 -flags = SF_GUI_DROPDOWN -def = 2 -min = 1 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS -strhelp = STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT -strval = STR_CONFIG_SETTING_PATHFINDER_NPF -post_cb = InvalidateShipPathCache -cat = SC_EXPERT - -[SDT_BOOL] -var = vehicle.never_expire_vehicles -flags = SF_NO_NETWORK -def = false -str = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES -strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT - -[SDT_VAR] -var = vehicle.max_trains -type = SLE_UINT16 -def = 500 -min = 0 -max = 5000 -str = STR_CONFIG_SETTING_MAX_TRAINS -strhelp = STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT -strval = STR_JUST_COMMA -post_cb = MaxVehiclesChanged -cat = SC_BASIC - -[SDT_VAR] -var = vehicle.max_roadveh -type = SLE_UINT16 -def = 500 -min = 0 -max = 5000 -str = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES -strhelp = STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT -strval = STR_JUST_COMMA -post_cb = MaxVehiclesChanged -cat = SC_BASIC - -[SDT_VAR] -var = vehicle.max_aircraft -type = SLE_UINT16 -def = 200 -min = 0 -max = 5000 -str = STR_CONFIG_SETTING_MAX_AIRCRAFT -strhelp = STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT -strval = STR_JUST_COMMA -post_cb = MaxVehiclesChanged -cat = SC_BASIC - -[SDT_VAR] -var = vehicle.max_ships -type = SLE_UINT16 -def = 300 -min = 0 -max = 5000 -str = STR_CONFIG_SETTING_MAX_SHIPS -strhelp = STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT -strval = STR_JUST_COMMA -post_cb = MaxVehiclesChanged -cat = SC_BASIC - -[SDTG_BOOL] -name = """" -flags = SF_NO_NETWORK -var = _old_vds.servint_ispercent -def = false -to = SLV_120 - -[SDTG_VAR] -name = """" -type = SLE_UINT16 -flags = SF_GUI_0_IS_SPECIAL -var = _old_vds.servint_trains -def = 150 -min = 5 -max = 800 -to = SLV_120 - -[SDTG_VAR] -name = """" -type = SLE_UINT16 -flags = SF_GUI_0_IS_SPECIAL -var = _old_vds.servint_roadveh -def = 150 -min = 5 -max = 800 -to = SLV_120 - -[SDTG_VAR] -name = """" -type = SLE_UINT16 -flags = SF_GUI_0_IS_SPECIAL -var = _old_vds.servint_ships -def = 360 -min = 5 -max = 800 -to = SLV_120 - -[SDTG_VAR] -name = """" -type = SLE_UINT16 -flags = SF_GUI_0_IS_SPECIAL -var = _old_vds.servint_aircraft -def = 150 -min = 5 -max = 800 -to = SLV_120 - -[SDT_BOOL] -var = order.no_servicing_if_no_breakdowns -def = true -str = STR_CONFIG_SETTING_NOSERVICE -strhelp = STR_CONFIG_SETTING_NOSERVICE_HELPTEXT - -[SDT_BOOL] -var = vehicle.wagon_speed_limits -flags = SF_NO_NETWORK -def = true -str = STR_CONFIG_SETTING_WAGONSPEEDLIMITS -strhelp = STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT -post_cb = UpdateConsists - -[SDT_BOOL] -var = vehicle.disable_elrails -from = SLV_38 -flags = SF_NO_NETWORK -def = false -str = STR_CONFIG_SETTING_DISABLE_ELRAILS -strhelp = STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT -post_cb = SettingsDisableElrail -cat = SC_EXPERT - -[SDT_VAR] -var = vehicle.freight_trains -type = SLE_UINT8 -from = SLV_39 -flags = SF_NO_NETWORK -def = 1 -min = 1 -max = 255 -interval = 1 -str = STR_CONFIG_SETTING_FREIGHT_TRAINS -strhelp = STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT -strval = STR_JUST_COMMA -post_cb = UpdateConsists - -[SDT_VAR] -var = vehicle.plane_speed -type = SLE_UINT8 -from = SLV_90 -flags = SF_NO_NETWORK -def = 4 -min = 1 -max = 4 -str = STR_CONFIG_SETTING_PLANE_SPEED -strhelp = STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT -strval = STR_CONFIG_SETTING_PLANE_SPEED_VALUE - -[SDT_BOOL] -var = vehicle.dynamic_engines -from = SLV_95 -flags = SF_NO_NETWORK -def = true -pre_cb = CheckDynamicEngines -cat = SC_EXPERT - -[SDT_VAR] -var = vehicle.plane_crashes -type = SLE_UINT8 -from = SLV_138 -flags = SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_PLANE_CRASHES -strhelp = STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT -strval = STR_CONFIG_SETTING_PLANE_CRASHES_NONE -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.sg_full_load_any -from = SLV_22 -to = SLV_93 -def = true - -[SDT_BOOL] -var = order.improved_load -flags = SF_NO_NETWORK -def = true -cat = SC_EXPERT - -[SDT_BOOL] -var = order.selectgoods -def = true -cat = SC_EXPERT - -[SDTC_BOOL] -var = gui.sg_new_nonstop -from = SLV_22 -to = SLV_93 -def = false - -[SDT_VAR] -var = station.station_spread -type = SLE_UINT8 -def = 12 -min = 4 -max = 64 -str = STR_CONFIG_SETTING_STATION_SPREAD -strhelp = STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT -strval = STR_CONFIG_SETTING_TILE_LENGTH -post_cb = StationSpreadChanged -cat = SC_BASIC - -[SDT_BOOL] -var = order.serviceathelipad -def = true -str = STR_CONFIG_SETTING_SERVICEATHELIPAD -strhelp = STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT -cat = SC_EXPERT - -[SDT_BOOL] -var = station.modified_catchment -def = true -str = STR_CONFIG_SETTING_CATCHMENT -strhelp = STR_CONFIG_SETTING_CATCHMENT_HELPTEXT -post_cb = StationCatchmentChanged -cat = SC_EXPERT - -[SDT_BOOL] -var = station.serve_neutral_industries -def = true -from = SLV_SERVE_NEUTRAL_INDUSTRIES -str = STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES -strhelp = STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT -post_cb = StationCatchmentChanged - -[SDT_BOOL] -var = order.gradual_loading -from = SLV_40 -flags = SF_NO_NETWORK -def = true -cat = SC_EXPERT - -[SDT_BOOL] -var = construction.road_stop_on_town_road -from = SLV_47 -def = true -str = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD -strhelp = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT -cat = SC_BASIC - -[SDT_BOOL] -var = construction.road_stop_on_competitor_road -from = SLV_114 -def = true -str = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD -strhelp = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT -cat = SC_BASIC - -[SDT_BOOL] -var = station.adjacent_stations -from = SLV_62 -def = true -cat = SC_EXPERT - -[SDT_BOOL] -var = economy.station_noise_level -from = SLV_96 -flags = SF_NO_NETWORK -def = false -str = STR_CONFIG_SETTING_NOISE_LEVEL -strhelp = STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT -post_cb = [](auto new_value) { InvalidateWindowClassesData(WC_TOWN_VIEW, new_value); } - -[SDT_BOOL] -var = station.distant_join_stations -from = SLV_106 -def = true -str = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS -strhelp = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT -post_cb = [](auto) { CloseWindowById(WC_SELECT_STATION, 0); } - -## -[SDT_BOOL] -var = economy.inflation -flags = SF_NO_NETWORK -def = false -str = STR_CONFIG_SETTING_INFLATION -strhelp = STR_CONFIG_SETTING_INFLATION_HELPTEXT -cat = SC_BASIC - -[SDT_VAR] -var = construction.raw_industry_construction -type = SLE_UINT8 -flags = SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD -strhelp = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT -strval = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE -post_cb = [](auto) { InvalidateWindowData(WC_BUILD_INDUSTRY, 0); } -cat = SC_BASIC - -[SDT_VAR] -var = construction.industry_platform -type = SLE_UINT8 -from = SLV_148 -def = 1 -min = 0 -max = 4 -str = STR_CONFIG_SETTING_INDUSTRY_PLATFORM -strhelp = STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT -strval = STR_CONFIG_SETTING_TILE_LENGTH -cat = SC_EXPERT - -[SDT_BOOL] -var = economy.multiple_industry_per_town -def = false -str = STR_CONFIG_SETTING_MULTIPINDTOWN -strhelp = STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT - -[SDT_BOOL] -var = economy.bribe -def = true -str = STR_CONFIG_SETTING_BRIBE -strhelp = STR_CONFIG_SETTING_BRIBE_HELPTEXT -post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); } -cat = SC_BASIC - -[SDT_BOOL] -var = economy.exclusive_rights -from = SLV_79 -def = true -str = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE -strhelp = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT -post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); } -cat = SC_BASIC - -[SDT_BOOL] -var = economy.fund_buildings -from = SLV_165 -def = true -str = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS -strhelp = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT -post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); } -cat = SC_BASIC - -[SDT_BOOL] -var = economy.fund_roads -from = SLV_160 -def = true -str = STR_CONFIG_SETTING_ALLOW_FUND_ROAD -strhelp = STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT -post_cb = [](auto) { SetWindowClassesDirty(WC_TOWN_AUTHORITY); } -cat = SC_BASIC - -[SDT_BOOL] -var = economy.give_money -from = SLV_79 -def = true -str = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY -strhelp = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.snow_line_height -type = SLE_UINT8 -flags = SF_SCENEDIT_ONLY -def = DEF_SNOWLINE_HEIGHT -min = MIN_SNOWLINE_HEIGHT -max = MAX_SNOWLINE_HEIGHT -interval = 1 -str = STR_CONFIG_SETTING_SNOWLINE_HEIGHT -strhelp = STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT -strval = STR_JUST_COMMA -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.snow_coverage -type = SLE_UINT8 -from = SLV_MAPGEN_SETTINGS_REVAMP -flags = SF_NEWGAME_ONLY -def = DEF_SNOW_COVERAGE -min = 0 -max = 100 -interval = 10 -str = STR_CONFIG_SETTING_SNOW_COVERAGE -strhelp = STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT -strval = STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.desert_coverage -type = SLE_UINT8 -from = SLV_MAPGEN_SETTINGS_REVAMP -flags = SF_NEWGAME_ONLY -def = DEF_DESERT_COVERAGE -min = 0 -max = 100 -interval = 10 -str = STR_CONFIG_SETTING_DESERT_COVERAGE -strhelp = STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT -strval = STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.starting_year -type = SLE_INT32 -def = DEF_START_YEAR -min = MIN_YEAR -max = MAX_YEAR -interval = 1 -str = STR_CONFIG_SETTING_STARTING_YEAR -strval = STR_JUST_INT -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.ending_year -type = SLE_INT32 -from = SLV_ENDING_YEAR -flags = SF_GUI_0_IS_SPECIAL -def = DEF_END_YEAR -min = MIN_YEAR -max = MAX_YEAR - 1 -interval = 1 -str = STR_CONFIG_SETTING_ENDING_YEAR -strhelp = STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT -strval = STR_CONFIG_SETTING_ENDING_YEAR_VALUE -cat = SC_ADVANCED - -[SDT_VAR] -var = economy.type -type = SLE_UINT8 -flags = SF_GUI_DROPDOWN -def = ET_SMOOTH -min = ET_BEGIN -max = ET_END - 1 -str = STR_CONFIG_SETTING_ECONOMY_TYPE -strhelp = STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT -strval = STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL -post_cb = [](auto) { InvalidateWindowClassesData(WC_INDUSTRY_VIEW); } -cat = SC_BASIC - -[SDT_BOOL] -var = economy.allow_shares -def = false -str = STR_CONFIG_SETTING_ALLOW_SHARES -strhelp = STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT -post_cb = [](auto) { InvalidateWindowClassesData(WC_COMPANY); } - -[SDT_VAR] -var = economy.min_years_for_shares -type = SLE_UINT8 -from = SLV_TRADING_AGE -def = 6 -min = 0 -max = 255 -interval = 1 -str = STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES -strhelp = STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT -strval = STR_JUST_INT -cat = SC_EXPERT - -[SDT_VAR] -var = economy.feeder_payment_share -type = SLE_UINT8 -from = SLV_134 -def = 75 -min = 0 -max = 100 -str = STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE -strhelp = STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT -strval = STR_CONFIG_SETTING_PERCENTAGE -cat = SC_EXPERT - -[SDT_VAR] -var = economy.town_growth_rate -type = SLE_UINT8 -from = SLV_54 -flags = SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 4 -str = STR_CONFIG_SETTING_TOWN_GROWTH -strhelp = STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT -strval = STR_CONFIG_SETTING_TOWN_GROWTH_NONE - -[SDT_VAR] -var = economy.larger_towns -type = SLE_UINT8 -from = SLV_54 -flags = SF_GUI_0_IS_SPECIAL -def = 4 -min = 0 -max = 255 -interval = 1 -str = STR_CONFIG_SETTING_LARGER_TOWNS -strhelp = STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT -strval = STR_CONFIG_SETTING_LARGER_TOWNS_VALUE - -[SDT_VAR] -var = economy.initial_city_size -type = SLE_UINT8 -from = SLV_56 -def = 2 -min = 1 -max = 10 -interval = 1 -str = STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER -strhelp = STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT -strval = STR_JUST_COMMA - -[SDT_BOOL] -var = economy.mod_road_rebuild -from = SLV_77 -def = true -cat = SC_EXPERT - -[SDT_OMANY] -var = script.settings_profile -type = SLE_UINT8 -from = SLV_178 -flags = SF_GUI_DROPDOWN -def = SP_EASY -min = SP_EASY -max = SP_HARD -full = _settings_profiles -str = STR_CONFIG_SETTING_AI_PROFILE -strhelp = STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT -strval = STR_CONFIG_SETTING_AI_PROFILE_EASY -cat = SC_BASIC - -[SDT_BOOL] -var = ai.ai_in_multiplayer -def = true -str = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER -strhelp = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT -cat = SC_BASIC - -[SDT_BOOL] -var = ai.ai_disable_veh_train -def = false -str = STR_CONFIG_SETTING_AI_BUILDS_TRAINS -strhelp = STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT - -[SDT_BOOL] -var = ai.ai_disable_veh_roadveh -def = false -str = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES -strhelp = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT - -[SDT_BOOL] -var = ai.ai_disable_veh_aircraft -def = false -str = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT -strhelp = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT - -[SDT_BOOL] -var = ai.ai_disable_veh_ship -def = false -str = STR_CONFIG_SETTING_AI_BUILDS_SHIPS -strhelp = STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT - -[SDT_VAR] -var = script.script_max_opcode_till_suspend -type = SLE_UINT32 -from = SLV_107 -flags = SF_NEWGAME_ONLY -def = 10000 -min = 500 -max = 250000 -interval = 2500 -str = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES -strhelp = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT -strval = STR_JUST_COMMA -cat = SC_EXPERT - -[SDT_VAR] -var = script.script_max_memory_megabytes -type = SLE_UINT32 -from = SLV_SCRIPT_MEMLIMIT -flags = SF_NEWGAME_ONLY -def = 1024 -min = 8 -max = 8192 -interval = 8 -str = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY -strhelp = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT -strval = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE -cat = SC_EXPERT - -## -[SDT_VAR] -var = vehicle.extend_vehicle_life -type = SLE_UINT8 -def = 0 -min = 0 -max = 100 -cat = SC_EXPERT - -[SDT_VAR] -var = economy.dist_local_authority -type = SLE_UINT8 -def = 20 -min = 5 -max = 60 -cat = SC_EXPERT - -[SDT_BOOL] -var = pf.reverse_at_signals -from = SLV_159 -def = false -str = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS -strhelp = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT - -[SDT_VAR] -var = pf.wait_oneway_signal -type = SLE_UINT8 -def = 15 -min = 2 -max = 255 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.wait_twoway_signal -type = SLE_UINT8 -def = 41 -min = 2 -max = 255 -cat = SC_EXPERT - -[SDT_VAR] -var = economy.town_noise_population[0] -type = SLE_UINT16 -from = SLV_96 -def = 800 -min = 200 -max = 65535 -cat = SC_EXPERT - -[SDT_VAR] -var = economy.town_noise_population[1] -type = SLE_UINT16 -from = SLV_96 -def = 2000 -min = 400 -max = 65535 -cat = SC_EXPERT - -[SDT_VAR] -var = economy.town_noise_population[2] -type = SLE_UINT16 -from = SLV_96 -def = 4000 -min = 800 -max = 65535 -cat = SC_EXPERT - -[SDT_BOOL] -var = economy.infrastructure_maintenance -from = SLV_166 -def = false -str = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE -strhelp = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT -post_cb = [](auto) { InvalidateWindowClassesData(WC_COMPANY_INFRASTRUCTURE); } -cat = SC_BASIC - -## -[SDT_VAR] -var = pf.wait_for_pbs_path -type = SLE_UINT8 -from = SLV_100 -def = 30 -min = 2 -max = 255 -cat = SC_EXPERT - -[SDT_BOOL] -var = pf.reserve_paths -from = SLV_100 -def = false -cat = SC_EXPERT - -[SDT_VAR] -var = pf.path_backoff_interval -type = SLE_UINT8 -from = SLV_100 -def = 20 -min = 1 -max = 255 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_max_search_nodes -type = SLE_UINT -def = 10000 -min = 500 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_rail_firstred_penalty -type = SLE_UINT -def = 10 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_rail_firstred_exit_penalty -type = SLE_UINT -def = 100 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_rail_lastred_penalty -type = SLE_UINT -def = 10 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_rail_station_penalty -type = SLE_UINT -def = 1 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_rail_slope_penalty -type = SLE_UINT -def = 1 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_rail_curve_penalty -type = SLE_UINT -def = 1 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_rail_depot_reverse_penalty -type = SLE_UINT -def = 50 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_rail_pbs_cross_penalty -type = SLE_UINT -from = SLV_100 -def = 3 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_rail_pbs_signal_back_penalty -type = SLE_UINT -from = SLV_100 -def = 15 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_buoy_penalty -type = SLE_UINT -def = 2 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_water_curve_penalty -type = SLE_UINT -def = 1 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_road_curve_penalty -type = SLE_UINT -def = 1 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_crossing_penalty -type = SLE_UINT -def = 3 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_road_drive_through_penalty -type = SLE_UINT -from = SLV_47 -def = 8 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_road_dt_occupied_penalty -type = SLE_UINT -from = SLV_130 -def = 8 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.npf_road_bay_occupied_penalty -type = SLE_UINT -from = SLV_130 -def = 15 * NPF_TILE_LENGTH -min = 0 -max = 100000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.npf.maximum_go_to_depot_penalty -type = SLE_UINT -from = SLV_131 -def = 20 * NPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -## -[SDT_BOOL] -var = pf.yapf.disable_node_optimization -from = SLV_28 -def = false -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.max_search_nodes -type = SLE_UINT -from = SLV_28 -def = 10000 -min = 500 -max = 1000000 -cat = SC_EXPERT - -[SDT_BOOL] -var = pf.yapf.rail_firstred_twoway_eol -from = SLV_28 -def = false -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_firstred_penalty -type = SLE_UINT -from = SLV_28 -def = 10 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_firstred_exit_penalty -type = SLE_UINT -from = SLV_28 -def = 100 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_lastred_penalty -type = SLE_UINT -from = SLV_28 -def = 10 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_lastred_exit_penalty -type = SLE_UINT -from = SLV_28 -def = 100 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_station_penalty -type = SLE_UINT -from = SLV_28 -def = 10 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_slope_penalty -type = SLE_UINT -from = SLV_28 -def = 2 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_curve45_penalty -type = SLE_UINT -from = SLV_28 -def = 1 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_curve90_penalty -type = SLE_UINT -from = SLV_28 -def = 6 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_depot_reverse_penalty -type = SLE_UINT -from = SLV_28 -def = 50 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_crossing_penalty -type = SLE_UINT -from = SLV_28 -def = 3 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_look_ahead_max_signals -type = SLE_UINT -from = SLV_28 -def = 10 -min = 1 -max = 100 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_look_ahead_signal_p0 -type = SLE_INT -from = SLV_28 -def = 500 -min = -1000000 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_look_ahead_signal_p1 -type = SLE_INT -from = SLV_28 -def = -100 -min = -1000000 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_look_ahead_signal_p2 -type = SLE_INT -from = SLV_28 -def = 5 -min = -1000000 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_pbs_cross_penalty -type = SLE_UINT -from = SLV_100 -def = 3 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_pbs_station_penalty -type = SLE_UINT -from = SLV_100 -def = 8 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_pbs_signal_back_penalty -type = SLE_UINT -from = SLV_100 -def = 15 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_doubleslip_penalty -type = SLE_UINT -from = SLV_100 -def = 1 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_longer_platform_penalty -type = SLE_UINT -from = SLV_33 -def = 8 * YAPF_TILE_LENGTH -min = 0 -max = 20000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_longer_platform_per_tile_penalty -type = SLE_UINT -from = SLV_33 -def = 0 * YAPF_TILE_LENGTH -min = 0 -max = 20000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_shorter_platform_penalty -type = SLE_UINT -from = SLV_33 -def = 40 * YAPF_TILE_LENGTH -min = 0 -max = 20000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.rail_shorter_platform_per_tile_penalty -type = SLE_UINT -from = SLV_33 -def = 0 * YAPF_TILE_LENGTH -min = 0 -max = 20000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.road_slope_penalty -type = SLE_UINT -from = SLV_33 -def = 2 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.road_curve_penalty -type = SLE_UINT -from = SLV_33 -def = 1 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.road_crossing_penalty -type = SLE_UINT -from = SLV_33 -def = 3 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.road_stop_penalty -type = SLE_UINT -from = SLV_47 -def = 8 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.road_stop_occupied_penalty -type = SLE_UINT -from = SLV_130 -def = 8 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.road_stop_bay_occupied_penalty -type = SLE_UINT -from = SLV_130 -def = 15 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.maximum_go_to_depot_penalty -type = SLE_UINT -from = SLV_131 -def = 20 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.ship_curve45_penalty -type = SLE_UINT -from = SLV_SHIP_CURVE_PENALTY -def = 1 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -[SDT_VAR] -var = pf.yapf.ship_curve90_penalty -type = SLE_UINT -from = SLV_SHIP_CURVE_PENALTY -def = 6 * YAPF_TILE_LENGTH -min = 0 -max = 1000000 -cat = SC_EXPERT - -## -[SDT_VAR] -var = game_creation.land_generator -type = SLE_UINT8 -from = SLV_30 -flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY -def = 1 -min = 0 -max = 1 -str = STR_CONFIG_SETTING_LAND_GENERATOR -strhelp = STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT -strval = STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL - -[SDT_VAR] -var = game_creation.oil_refinery_limit -type = SLE_UINT8 -from = SLV_30 -def = 32 -min = 12 -max = 128 -str = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE -strval = STR_CONFIG_SETTING_TILE_LENGTH -strhelp = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT - -[SDT_VAR] -var = game_creation.tgen_smoothness -type = SLE_UINT8 -from = SLV_30 -flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY -def = 1 -min = TGEN_SMOOTHNESS_BEGIN -max = TGEN_SMOOTHNESS_END - 1 -str = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN -strhelp = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT -strval = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.variety -type = SLE_UINT8 -from = SLV_197 -flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY -def = 0 -min = 0 -max = 5 -str = STR_CONFIG_SETTING_VARIETY -strhelp = STR_CONFIG_SETTING_VARIETY_HELPTEXT -strval = STR_VARIETY_NONE - -[SDT_VAR] -var = game_creation.generation_seed -type = SLE_UINT32 -from = SLV_30 -def = GENERATE_NEW_SEED -min = 0 -max = UINT32_MAX -cat = SC_EXPERT - -[SDT_VAR] -var = game_creation.tree_placer -type = SLE_UINT8 -from = SLV_30 -flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY | SF_SCENEDIT_TOO -def = 2 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_TREE_PLACER -strhelp = STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT -strval = STR_CONFIG_SETTING_TREE_PLACER_NONE -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.heightmap_rotation -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 1 -str = STR_CONFIG_SETTING_HEIGHTMAP_ROTATION -strval = STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.se_flat_world_height -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 1 -min = 0 -max = 15 -str = STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT -strval = STR_JUST_COMMA -cat = SC_BASIC - -## -[SDT_VAR] -var = game_creation.map_x -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 8 -min = MIN_MAP_SIZE_BITS -max = MAX_MAP_SIZE_BITS -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.map_y -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 8 -min = MIN_MAP_SIZE_BITS -max = MAX_MAP_SIZE_BITS -cat = SC_BASIC - -[SDT_BOOL] -var = construction.freeform_edges -from = SLV_111 -def = true -pre_cb = CheckFreeformEdges -post_cb = UpdateFreeformEdges -cat = SC_EXPERT - -[SDT_VAR] -var = game_creation.water_borders -type = SLE_UINT8 -from = SLV_111 -def = 15 -min = 0 -max = 16 - -[SDT_VAR] -var = game_creation.custom_town_number -type = SLE_UINT16 -from = SLV_115 -def = 1 -min = 1 -max = 5000 -cat = SC_BASIC - -[SDT_VAR] -var = construction.extra_tree_placement -type = SLE_UINT8 -from = SLV_132 -flags = SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 3 -str = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT -strhelp = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT -strval = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.custom_terrain_type -type = SLE_UINT8 -from = SLV_MAPGEN_SETTINGS_REVAMP -flags = SF_NEWGAME_ONLY -def = MAP_HEIGHT_LIMIT_AUTO_MINIMUM -min = MIN_CUSTOM_TERRAIN_TYPE -max = MAX_MAP_HEIGHT_LIMIT -interval = 1 - -[SDT_VAR] -var = game_creation.custom_sea_level -type = SLE_UINT8 -from = SLV_149 -def = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE -min = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE -max = CUSTOM_SEA_LEVEL_MAX_PERCENTAGE -cat = SC_BASIC - -[SDT_VAR] -var = game_creation.min_river_length -type = SLE_UINT8 -from = SLV_163 -def = 16 -min = 2 -max = 255 -cat = SC_EXPERT - -[SDT_VAR] -var = game_creation.river_route_random -type = SLE_UINT8 -from = SLV_163 -def = 5 -min = 1 -max = 255 -cat = SC_EXPERT - -[SDT_VAR] -var = game_creation.amount_of_rivers -type = SLE_UINT8 -from = SLV_163 -flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY -def = 2 -min = 0 -max = 3 -str = STR_CONFIG_SETTING_RIVER_AMOUNT -strhelp = STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT -strval = STR_RIVERS_NONE - -; locale - -[SDT_OMANY] -var = locale.currency -type = SLE_UINT8 -from = SLV_97 -flags = SF_NO_NETWORK_SYNC -def = 0 -max = CURRENCY_END - 1 -full = _locale_currencies -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - -[SDTG_OMANY] -name = ""units"" -var = _old_units -type = SLE_UINT8 -from = SLV_97 -to = SLV_184 -flags = SF_NOT_IN_CONFIG -def = 1 -max = 2 -full = _locale_units -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - -[SDT_OMANY] -var = locale.units_velocity -type = SLE_UINT8 -from = SLV_184 -flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 3 -full = _locale_units -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC -str = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY -strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT -strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL - -[SDT_OMANY] -var = locale.units_power -type = SLE_UINT8 -from = SLV_184 -flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 2 -full = _locale_units -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC -str = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER -strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT -strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL - -[SDT_OMANY] -var = locale.units_weight -type = SLE_UINT8 -from = SLV_184 -flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 2 -full = _locale_units -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC -str = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT -strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT -strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL - -[SDT_OMANY] -var = locale.units_volume -type = SLE_UINT8 -from = SLV_184 -flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 2 -full = _locale_units -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC -str = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME -strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT -strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL - -[SDT_OMANY] -var = locale.units_force -type = SLE_UINT8 -from = SLV_184 -flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _locale_units -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC -str = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE -strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT -strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL - -[SDT_OMANY] -var = locale.units_height -type = SLE_UINT8 -from = SLV_184 -flags = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 2 -full = _locale_units -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC -str = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT -strhelp = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT -strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL - -[SDT_SSTR] -var = locale.digit_group_separator -type = SLE_STRQ -from = SLV_118 -flags = SF_NO_NETWORK_SYNC -def = nullptr -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - -[SDT_SSTR] -var = locale.digit_group_separator_currency -type = SLE_STRQ -from = SLV_118 -flags = SF_NO_NETWORK_SYNC -def = nullptr -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - -[SDT_SSTR] -var = locale.digit_decimal_separator -type = SLE_STRQ -from = SLV_126 -flags = SF_NO_NETWORK_SYNC -def = nullptr -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - - -;*************************************************************************** -; Unsaved setting variables. - -[SDTC_OMANY] -var = gui.autosave -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 4 -full = _autosave_interval -str = STR_CONFIG_SETTING_AUTOSAVE -strhelp = STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT -strval = STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.threaded_saves -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -cat = SC_EXPERT - -[SDTC_OMANY] -var = gui.date_format_in_default_names -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _savegame_date -str = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES -strhelp = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT -strval = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG - -[SDTC_BOOL] -var = gui.show_finances -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SHOWFINANCES -strhelp = STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT -cat = SC_BASIC - -[SDTC_VAR] -var = gui.auto_scrolling -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 3 -str = STR_CONFIG_SETTING_AUTOSCROLL -strhelp = STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT -strval = STR_CONFIG_SETTING_AUTOSCROLL_DISABLED -cat = SC_BASIC - -[SDTC_VAR] -ifdef = __EMSCRIPTEN__ -var = gui.scroll_mode -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 3 -str = STR_CONFIG_SETTING_SCROLLMODE -strhelp = STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT -strval = STR_CONFIG_SETTING_SCROLLMODE_DEFAULT -cat = SC_BASIC - -[SDTC_VAR] -ifndef = __EMSCRIPTEN__ -var = gui.scroll_mode -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 3 -str = STR_CONFIG_SETTING_SCROLLMODE -strhelp = STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT -strval = STR_CONFIG_SETTING_SCROLLMODE_DEFAULT -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.smooth_scroll -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -str = STR_CONFIG_SETTING_SMOOTH_SCROLLING -strhelp = STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT - -[SDTC_BOOL] -var = gui.right_mouse_wnd_close -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -str = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE -strhelp = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT -cat = SC_BASIC - -; We might need to emulate a right mouse button on mac -[SDTC_VAR] -ifdef = __APPLE__ -var = gui.right_mouse_btn_emulation -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU -strhelp = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT -strval = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.measure_tooltip -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_MEASURE_TOOLTIP -strhelp = STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT -cat = SC_BASIC - -[SDTC_VAR] -var = gui.errmsg_duration -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 5 -min = 0 -max = 20 -str = STR_CONFIG_SETTING_ERRMSG_DURATION -strhelp = STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT -strval = STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE - -[SDTC_VAR] -var = gui.hover_delay_ms -type = SLE_UINT16 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL -def = 250 -min = 50 -max = 6000 -interval = 50 -str = STR_CONFIG_SETTING_HOVER_DELAY -strhelp = STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT -strval = STR_CONFIG_SETTING_HOVER_DELAY_VALUE - -[SDTC_OMANY] -var = gui.osk_activation -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -str = STR_CONFIG_SETTING_OSK_ACTIVATION -strhelp = STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT -strval = STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED -flags = SF_GUI_DROPDOWN -full = _osk_activation -def = 1 -min = 0 -max = 3 -cat = SC_BASIC - -[SDTC_VAR] -var = gui.toolbar_pos -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_TOOLBAR_POS -strhelp = STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT -strval = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT -post_cb = v_PositionMainToolbar -cat = SC_BASIC - -[SDTC_VAR] -var = gui.statusbar_pos -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_STATUSBAR_POS -strhelp = STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT -strval = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT -post_cb = v_PositionStatusbar -cat = SC_BASIC - -[SDTC_VAR] -var = gui.window_snap_radius -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL -def = 10 -min = 1 -max = 32 -str = STR_CONFIG_SETTING_SNAP_RADIUS -strhelp = STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT -strval = STR_CONFIG_SETTING_SNAP_RADIUS_VALUE -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.window_soft_limit -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL -def = 20 -min = 5 -max = 255 -interval = 1 -str = STR_CONFIG_SETTING_SOFT_LIMIT -strhelp = STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT -strval = STR_CONFIG_SETTING_SOFT_LIMIT_VALUE -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.zoom_min -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = ZOOM_LVL_MIN -min = ZOOM_LVL_MIN -max = ZOOM_LVL_OUT_4X -str = STR_CONFIG_SETTING_ZOOM_MIN -strhelp = STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT -strval = STR_CONFIG_SETTING_ZOOM_LVL_MIN -post_cb = ZoomMinMaxChanged -startup = true - -[SDTC_VAR] -var = gui.zoom_max -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = ZOOM_LVL_MAX -min = ZOOM_LVL_OUT_8X -max = ZOOM_LVL_MAX -str = STR_CONFIG_SETTING_ZOOM_MAX -strhelp = STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT -strval = STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X -post_cb = ZoomMinMaxChanged -startup = true - -[SDTC_VAR] -var = gui.sprite_zoom_min -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = ZOOM_LVL_MIN -min = ZOOM_LVL_MIN -max = ZOOM_LVL_OUT_4X -str = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN -strhelp = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT -strval = STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN -post_cb = SpriteZoomMinChanged - -[SDTC_BOOL] -var = gui.population_in_label -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_POPULATION_IN_LABEL -strhelp = STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT -post_cb = [](auto) { UpdateAllTownVirtCoords(); } - -[SDTC_BOOL] -var = gui.link_terraform_toolbar -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -str = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR -strhelp = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT - -[SDTC_VAR] -var = gui.smallmap_land_colour -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR -strhelp = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT -strval = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN -post_cb = RedrawSmallmap - -[SDTC_VAR] -var = gui.liveries -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_LIVERIES -strhelp = STR_CONFIG_SETTING_LIVERIES_HELPTEXT -strval = STR_CONFIG_SETTING_LIVERIES_NONE -post_cb = InvalidateCompanyLiveryWindow - -[SDTC_VAR] -var = gui.starting_colour -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = COLOUR_END -min = 0 -max = COLOUR_END -str = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR -strhelp = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT -strval = STR_COLOUR_DARK_BLUE - -[SDTC_BOOL] -var = gui.auto_remove_signals -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -str = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS -strhelp = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT -cat = SC_ADVANCED - -[SDTC_BOOL] -var = gui.prefer_teamchat -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -str = STR_CONFIG_SETTING_PREFER_TEAMCHAT -strhelp = STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT -cat = SC_BASIC - -[SDTC_VAR] -var = gui.scrollwheel_scrolling -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING -strhelp = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT -strval = STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM -cat = SC_BASIC - -[SDTC_VAR] -var = gui.scrollwheel_multiplier -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 5 -min = 1 -max = 15 -interval = 1 -str = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER -strhelp = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT -strval = STR_JUST_COMMA -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.pause_on_newgame -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -str = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME -strhelp = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT -cat = SC_BASIC - -[SDTC_VAR] -var = gui.advanced_vehicle_list -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS -strhelp = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT -strval = STR_CONFIG_SETTING_COMPANIES_OFF - -[SDTC_BOOL] -var = gui.timetable_in_ticks -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -str = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS -strhelp = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT -post_cb = [](auto) { InvalidateWindowClassesData(WC_VEHICLE_TIMETABLE, VIWD_MODIFY_ORDERS); } -cat = SC_EXPERT - -[SDTC_BOOL] -var = gui.timetable_arrival_departure -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE -strhelp = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT -post_cb = [](auto) { InvalidateWindowClassesData(WC_VEHICLE_TIMETABLE, VIWD_MODIFY_ORDERS); } - -[SDTC_BOOL] -var = gui.quick_goto -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_QUICKGOTO -strhelp = STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT -cat = SC_BASIC - -[SDTC_VAR] -var = gui.loading_indicators -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_LOADING_INDICATORS -strhelp = STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT -strval = STR_CONFIG_SETTING_COMPANIES_OFF -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - -[SDTC_VAR] -var = gui.default_rail_type -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 0 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE -strhelp = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT -strval = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.enable_signal_gui -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI -strhelp = STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT -post_cb = CloseSignalGUI -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.coloured_news_year -type = SLE_INT32 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 2000 -min = MIN_YEAR -max = MAX_YEAR -interval = 1 -str = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR -strhelp = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT -strval = STR_JUST_INT -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.drag_signals_density -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 4 -min = 1 -max = 20 -str = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY -strhelp = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT -strval = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE -post_cb = [](auto) { InvalidateWindowData(WC_BUILD_SIGNAL, 0); } -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.drag_signals_fixed_distance -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -str = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE -strhelp = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.semaphore_build_before -type = SLE_INT32 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 1950 -min = MIN_YEAR -max = MAX_YEAR -interval = 1 -str = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE -strhelp = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT -strval = STR_JUST_INT -post_cb = ResetSignalVariant - -[SDTC_BOOL] -var = gui.vehicle_income_warn -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_WARN_INCOME_LESS -strhelp = STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT -cat = SC_BASIC - -[SDTC_VAR] -var = gui.order_review_system -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 2 -str = STR_CONFIG_SETTING_ORDER_REVIEW -strhelp = STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT -strval = STR_CONFIG_SETTING_ORDER_REVIEW_OFF -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.lost_vehicle_warn -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_WARN_LOST_VEHICLE -strhelp = STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT - -[SDTC_BOOL] -var = gui.new_nonstop -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT -strhelp = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT -cat = SC_BASIC - -[SDTC_VAR] -var = gui.stop_location -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_STOP_LOCATION -strhelp = STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT -strval = STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.keep_all_autosave -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false - -[SDTC_BOOL] -var = gui.autosave_on_exit -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.autosave_on_network_disconnect -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.max_num_autosaves -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 16 -min = 0 -max = 255 - -[SDTC_BOOL] -var = gui.auto_euro -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true - -[SDTC_VAR] -var = gui.news_message_timeout -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 2 -min = 1 -max = 255 - -[SDTC_BOOL] -var = gui.show_track_reservation -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION -strhelp = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_BASIC - -[SDTC_VAR] -var = gui.default_signal_type -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE -strhelp = STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT -strval = STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL -cat = SC_BASIC - -[SDTC_VAR] -var = gui.cycle_signal_types -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -min = 0 -max = 2 -interval = 1 -str = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES -strhelp = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT -strval = STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL - -[SDTC_VAR] -var = gui.station_numtracks -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 1 -min = 1 -max = 7 - -[SDTC_VAR] -var = gui.station_platlength -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 5 -min = 1 -max = 7 -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.station_dragdrop -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.station_show_coverage -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.persistent_buildingtools -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS -strhelp = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT -cat = SC_BASIC - -[SDTC_BOOL] -var = gui.expenses_layout -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_EXPENSES_LAYOUT -strhelp = STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT -post_cb = [](auto) { MarkWholeScreenDirty(); } - -[SDTC_VAR] -var = gui.station_gui_group_order -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 0 -min = 0 -max = 5 -interval = 1 - -[SDTC_VAR] -var = gui.station_gui_sort_by -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 0 -min = 0 -max = 3 -interval = 1 - -[SDTC_VAR] -var = gui.station_gui_sort_order -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 0 -min = 0 -max = 1 -interval = 1 - -[SDTC_VAR] -var = gui.missing_strings_threshold -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 25 -min = 1 -max = UINT8_MAX -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.graph_line_thickness -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 3 -min = 1 -max = 5 -str = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS -strhelp = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT -strval = STR_JUST_COMMA -post_cb = [](auto) { MarkWholeScreenDirty(); } - -[SDTC_BOOL] -var = gui.show_newgrf_name -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -str = STR_CONFIG_SETTING_SHOW_NEWGRF_NAME -strhelp = STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT -post_cb = [](auto) { MarkWholeScreenDirty(); } -cat = SC_ADVANCED - -; For the dedicated build we'll enable dates in logs by default. -[SDTC_BOOL] -ifdef = DEDICATED -var = gui.show_date_in_logs -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true - -[SDTC_BOOL] -ifndef = DEDICATED -var = gui.show_date_in_logs -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false - -[SDTC_VAR] -var = gui.settings_restriction_mode -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 0 -min = 0 -max = 2 - -[SDTC_VAR] -var = gui.developer -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 1 -min = 0 -max = 2 -cat = SC_EXPERT - -[SDTC_BOOL] -var = gui.newgrf_developer_tools -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -post_cb = InvalidateNewGRFChangeWindows -cat = SC_EXPERT - -[SDTC_BOOL] -var = gui.ai_developer_tools -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -post_cb = [](auto) { InvalidateWindowClassesData(WC_AI_SETTINGS); } -cat = SC_EXPERT - -[SDTC_BOOL] -var = gui.scenario_developer -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -post_cb = InvalidateNewGRFChangeWindows - -[SDTC_BOOL] -var = gui.newgrf_show_old_versions -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.newgrf_default_palette -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -min = 0 -max = 1 -post_cb = UpdateNewGRFConfigPalette -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.console_backlog_timeout -type = SLE_UINT16 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 100 -min = 10 -max = 65500 - -[SDTC_VAR] -var = gui.console_backlog_length -type = SLE_UINT16 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 100 -min = 10 -max = 65500 - -[SDTC_VAR] -var = gui.refresh_rate -type = SLE_UINT16 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 60 -min = 10 -max = 1000 -cat = SC_EXPERT -startup = true - -[SDTC_VAR] -var = gui.fast_forward_speed_limit -type = SLE_UINT16 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_NO_NETWORK -def = 2500 -min = 0 -max = 50000 -interval = 10 -str = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT -strhelp = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT -strval = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL -cat = SC_BASIC - -[SDTC_BOOL] -var = sound.news_ticker -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SOUND_TICKER -strhelp = STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT - -[SDTC_BOOL] -var = sound.news_full -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SOUND_NEWS -strhelp = STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT - -[SDTC_BOOL] -var = sound.new_year -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SOUND_NEW_YEAR -strhelp = STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT - -[SDTC_BOOL] -var = sound.confirm -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SOUND_CONFIRM -strhelp = STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT - -[SDTC_BOOL] -var = sound.click_beep -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SOUND_CLICK -strhelp = STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT - -[SDTC_BOOL] -var = sound.disaster -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SOUND_DISASTER -strhelp = STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT - -[SDTC_BOOL] -var = sound.vehicle -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SOUND_VEHICLE -strhelp = STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT - -[SDTC_BOOL] -var = sound.ambient -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -str = STR_CONFIG_SETTING_SOUND_AMBIENT -strhelp = STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT - -[SDTC_VAR] -var = music.playlist -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 0 -min = 0 -max = 5 -interval = 1 -cat = SC_BASIC - -[SDTC_VAR] -var = music.music_vol -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 50 -min = 0 -max = 127 -interval = 1 -cat = SC_BASIC - -[SDTC_VAR] -var = music.effect_vol -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 100 -min = 0 -max = 127 -interval = 1 -cat = SC_BASIC - -[SDTC_LIST] -var = music.custom_1 -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = nullptr -cat = SC_BASIC - -[SDTC_LIST] -var = music.custom_2 -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = nullptr -cat = SC_BASIC - -[SDTC_BOOL] -var = music.playing -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = true -cat = SC_BASIC - -[SDTC_BOOL] -var = music.shuffle -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = false -cat = SC_BASIC - -[SDTC_OMANY] -var = news_display.arrival_player -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN -strhelp = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.arrival_other -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER -strhelp = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.accident -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS -strhelp = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.company_info -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION -strhelp = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.open -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN -strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.close -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE -strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.economy -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES -strhelp = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.production_player -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY -strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.production_other -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 0 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER -strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.production_nobody -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 0 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED -strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.advice -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_ADVICE -strhelp = STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.new_vehicles -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES -strhelp = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.acceptance -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE -strhelp = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.subsidies -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 1 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_SUBSIDIES -strhelp = STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_OMANY] -var = news_display.general -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 -max = 2 -full = _news_display -str = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION -strhelp = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT -strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF - -[SDTC_VAR] -var = gui.network_chat_box_width_pct -type = SLE_UINT16 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 40 -min = 10 -max = 100 -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.network_chat_box_height -type = SLE_UINT8 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 25 -min = 5 -max = 255 -cat = SC_EXPERT - -[SDTC_VAR] -var = gui.network_chat_timeout -type = SLE_UINT16 -flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC -def = 20 -min = 1 -max = 65535 -cat = SC_EXPERT diff --git a/src/table/settings/world_settings.ini b/src/table/settings/world_settings.ini new file mode 100644 index 000000000..5912f89f4 --- /dev/null +++ b/src/table/settings/world_settings.ini @@ -0,0 +1,545 @@ +; This file is part of OpenTTD. +; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>. +; + +; World settings as stored in the main configuration file ("openttd.cfg") +; and in the savegame PATS chunk. +; World settings are everything related to how the world came to be, so +; basically construction and game_creation settings. + +[pre-amble] +static bool CheckMaxHeightLevel(int32 &new_value); +static bool CheckFreeformEdges(int32 &new_value); +static void UpdateFreeformEdges(int32 new_value); + +static const SettingVariant _world_settings_table[] = { +[post-amble] +}; +[templates] +SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDT_OMANY = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for GameSettings.$var exceeds storage size"); + +[defaults] +flags = SF_NONE +interval = 0 +str = STR_NULL +strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT +strval = STR_NULL +pre_cb = nullptr +post_cb = nullptr +load = nullptr +from = SL_MIN_VERSION +to = SL_MAX_VERSION +cat = SC_ADVANCED +extra = 0 +startup = false + + +; There are only 21 predefined town_name values (0-20), but you can have more with newgrf action F so allow +; these bigger values (21-255). Invalid values will fallback to english on use and (undefined string) in GUI. +[SDT_OMANY] +var = game_creation.town_name +type = SLE_UINT8 +from = SLV_97 +flags = SF_NO_NETWORK +def = 0 +max = 255 +full = _town_names +cat = SC_BASIC + +[SDT_OMANY] +var = game_creation.landscape +type = SLE_UINT8 +from = SLV_97 +flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY +def = 0 +max = 3 +full = _climates +load = ConvertLandscape +str = STR_CONFIG_SETTING_LANDSCAPE +strhelp = STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT +strval = STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.heightmap_height +type = SLE_UINT8 +from = SLV_MAPGEN_SETTINGS_REVAMP +flags = SF_NEWGAME_ONLY +def = MAP_HEIGHT_LIMIT_AUTO_MINIMUM +min = MIN_HEIGHTMAP_HEIGHT +max = MAX_MAP_HEIGHT_LIMIT +interval = 1 + +[SDT_VAR] +var = game_creation.snow_line_height +type = SLE_UINT8 +flags = SF_SCENEDIT_ONLY +def = DEF_SNOWLINE_HEIGHT +min = MIN_SNOWLINE_HEIGHT +max = MAX_SNOWLINE_HEIGHT +interval = 1 +str = STR_CONFIG_SETTING_SNOWLINE_HEIGHT +strhelp = STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT +strval = STR_JUST_COMMA +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.snow_coverage +type = SLE_UINT8 +from = SLV_MAPGEN_SETTINGS_REVAMP +flags = SF_NEWGAME_ONLY +def = DEF_SNOW_COVERAGE +min = 0 +max = 100 +interval = 10 +str = STR_CONFIG_SETTING_SNOW_COVERAGE +strhelp = STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT +strval = STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.desert_coverage +type = SLE_UINT8 +from = SLV_MAPGEN_SETTINGS_REVAMP +flags = SF_NEWGAME_ONLY +def = DEF_DESERT_COVERAGE +min = 0 +max = 100 +interval = 10 +str = STR_CONFIG_SETTING_DESERT_COVERAGE +strhelp = STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT +strval = STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.starting_year +type = SLE_INT32 +def = DEF_START_YEAR +min = MIN_YEAR +max = MAX_YEAR +interval = 1 +str = STR_CONFIG_SETTING_STARTING_YEAR +strval = STR_JUST_INT +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.ending_year +type = SLE_INT32 +from = SLV_ENDING_YEAR +flags = SF_GUI_0_IS_SPECIAL +def = DEF_END_YEAR +min = MIN_YEAR +max = MAX_YEAR - 1 +interval = 1 +str = STR_CONFIG_SETTING_ENDING_YEAR +strhelp = STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT +strval = STR_CONFIG_SETTING_ENDING_YEAR_VALUE +cat = SC_ADVANCED + +[SDT_VAR] +var = game_creation.land_generator +type = SLE_UINT8 +from = SLV_30 +flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY +def = 1 +min = 0 +max = 1 +str = STR_CONFIG_SETTING_LAND_GENERATOR +strhelp = STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT +strval = STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL + +[SDT_VAR] +var = game_creation.oil_refinery_limit +type = SLE_UINT8 +from = SLV_30 +def = 32 +min = 12 +max = 128 +str = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE +strval = STR_CONFIG_SETTING_TILE_LENGTH +strhelp = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT + +[SDT_VAR] +var = game_creation.tgen_smoothness +type = SLE_UINT8 +from = SLV_30 +flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY +def = 1 +min = TGEN_SMOOTHNESS_BEGIN +max = TGEN_SMOOTHNESS_END - 1 +str = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN +strhelp = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT +strval = STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.variety +type = SLE_UINT8 +from = SLV_197 +flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY +def = 0 +min = 0 +max = 5 +str = STR_CONFIG_SETTING_VARIETY +strhelp = STR_CONFIG_SETTING_VARIETY_HELPTEXT +strval = STR_VARIETY_NONE + +[SDT_VAR] +var = game_creation.generation_seed +type = SLE_UINT32 +from = SLV_30 +def = GENERATE_NEW_SEED +min = 0 +max = UINT32_MAX +cat = SC_EXPERT + +[SDT_VAR] +var = game_creation.tree_placer +type = SLE_UINT8 +from = SLV_30 +flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY | SF_SCENEDIT_TOO +def = 2 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_TREE_PLACER +strhelp = STR_CONFIG_SETTING_TREE_PLACER_HELPTEXT +strval = STR_CONFIG_SETTING_TREE_PLACER_NONE +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.heightmap_rotation +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 1 +str = STR_CONFIG_SETTING_HEIGHTMAP_ROTATION +strval = STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.se_flat_world_height +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 1 +min = 0 +max = 15 +str = STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT +strval = STR_JUST_COMMA +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.map_x +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 8 +min = MIN_MAP_SIZE_BITS +max = MAX_MAP_SIZE_BITS +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.map_y +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = 8 +min = MIN_MAP_SIZE_BITS +max = MAX_MAP_SIZE_BITS +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.water_borders +type = SLE_UINT8 +from = SLV_111 +def = 15 +min = 0 +max = 16 + +[SDT_VAR] +var = game_creation.custom_town_number +type = SLE_UINT16 +from = SLV_115 +def = 1 +min = 1 +max = 5000 +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.custom_terrain_type +type = SLE_UINT8 +from = SLV_MAPGEN_SETTINGS_REVAMP +flags = SF_NEWGAME_ONLY +def = MAP_HEIGHT_LIMIT_AUTO_MINIMUM +min = MIN_CUSTOM_TERRAIN_TYPE +max = MAX_MAP_HEIGHT_LIMIT +interval = 1 + +[SDT_VAR] +var = game_creation.custom_sea_level +type = SLE_UINT8 +from = SLV_149 +def = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE +min = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE +max = CUSTOM_SEA_LEVEL_MAX_PERCENTAGE +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.min_river_length +type = SLE_UINT8 +from = SLV_163 +def = 16 +min = 2 +max = 255 +cat = SC_EXPERT + +[SDT_VAR] +var = game_creation.river_route_random +type = SLE_UINT8 +from = SLV_163 +def = 5 +min = 1 +max = 255 +cat = SC_EXPERT + +[SDT_VAR] +var = game_creation.amount_of_rivers +type = SLE_UINT8 +from = SLV_163 +flags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY +def = 2 +min = 0 +max = 3 +str = STR_CONFIG_SETTING_RIVER_AMOUNT +strhelp = STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT +strval = STR_RIVERS_NONE + +[SDT_VAR] +var = construction.map_height_limit +type = SLE_UINT8 +from = SLV_194 +flags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_0_IS_SPECIAL +def = 0 +min = MIN_MAP_HEIGHT_LIMIT +max = MAX_MAP_HEIGHT_LIMIT +interval = 1 +str = STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT +strhelp = STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT +strval = STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE +pre_cb = CheckMaxHeightLevel +post_cb = [](auto) { InvalidateWindowClassesData(WC_SMALLMAP, 2); } +cat = SC_ADVANCED + +[SDT_BOOL] +var = construction.build_on_slopes +flags = SF_NO_NETWORK +def = true +cat = SC_EXPERT + +[SDT_VAR] +var = construction.command_pause_level +type = SLE_UINT8 +from = SLV_154 +flags = SF_GUI_DROPDOWN | SF_NO_NETWORK +def = 1 +min = 0 +max = 3 +interval = 1 +str = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL +strhelp = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT +strval = STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS + +[SDT_VAR] +var = construction.terraform_per_64k_frames +type = SLE_UINT32 +from = SLV_156 +def = 64 << 16 +min = 0 +max = 1 << 30 +interval = 1 +cat = SC_EXPERT + +[SDT_VAR] +var = construction.terraform_frame_burst +type = SLE_UINT16 +from = SLV_156 +def = 4096 +min = 0 +max = 1 << 15 +interval = 1 +cat = SC_EXPERT + +[SDT_VAR] +var = construction.clear_per_64k_frames +type = SLE_UINT32 +from = SLV_156 +def = 64 << 16 +min = 0 +max = 1 << 30 +interval = 1 +cat = SC_EXPERT + +[SDT_VAR] +var = construction.clear_frame_burst +type = SLE_UINT16 +from = SLV_156 +def = 4096 +min = 0 +max = 1 << 15 +interval = 1 +cat = SC_EXPERT + +[SDT_VAR] +var = construction.tree_per_64k_frames +type = SLE_UINT32 +from = SLV_175 +def = 64 << 16 +min = 0 +max = 1 << 30 +interval = 1 +cat = SC_EXPERT + +[SDT_VAR] +var = construction.tree_frame_burst +type = SLE_UINT16 +from = SLV_175 +def = 4096 +min = 0 +max = 1 << 15 +interval = 1 +cat = SC_EXPERT + +[SDT_BOOL] +var = construction.autoslope +from = SLV_75 +def = true +str = STR_CONFIG_SETTING_AUTOSLOPE +strhelp = STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT +cat = SC_EXPERT + +[SDT_BOOL] +var = construction.extra_dynamite +def = true +str = STR_CONFIG_SETTING_EXTRADYNAMITE +strhelp = STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT + +[SDT_VAR] +var = construction.max_bridge_length +type = SLE_UINT16 +from = SLV_159 +flags = SF_NO_NETWORK +def = 64 +min = 1 +max = MAX_MAP_SIZE +interval = 1 +str = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH +strhelp = STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT +strval = STR_CONFIG_SETTING_TILE_LENGTH + +[SDT_VAR] +var = construction.max_bridge_height +type = SLE_UINT8 +from = SLV_194 +flags = SF_NO_NETWORK +def = 12 +min = 1 +max = MAX_TILE_HEIGHT +interval = 1 +str = STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT +strhelp = STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT +strval = STR_JUST_COMMA +cat = SC_EXPERT + +[SDT_VAR] +var = construction.max_tunnel_length +type = SLE_UINT16 +from = SLV_159 +flags = SF_NO_NETWORK +def = 64 +min = 1 +max = MAX_MAP_SIZE +interval = 1 +str = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH +strhelp = STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT +strval = STR_CONFIG_SETTING_TILE_LENGTH + +[SDT_VAR] +var = construction.train_signal_side +type = SLE_UINT8 +flags = SF_GUI_DROPDOWN | SF_NO_NETWORK +def = 1 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_SIGNALSIDE +strhelp = STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT +strval = STR_CONFIG_SETTING_SIGNALSIDE_LEFT +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC + +[SDT_BOOL] +var = construction.road_stop_on_town_road +from = SLV_47 +def = true +str = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD +strhelp = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT +cat = SC_BASIC + +[SDT_BOOL] +var = construction.road_stop_on_competitor_road +from = SLV_114 +def = true +str = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD +strhelp = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT +cat = SC_BASIC + +[SDT_VAR] +var = construction.raw_industry_construction +type = SLE_UINT8 +flags = SF_GUI_DROPDOWN +def = 0 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD +strhelp = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT +strval = STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE +post_cb = [](auto) { InvalidateWindowData(WC_BUILD_INDUSTRY, 0); } +cat = SC_BASIC + +[SDT_VAR] +var = construction.industry_platform +type = SLE_UINT8 +from = SLV_148 +def = 1 +min = 0 +max = 4 +str = STR_CONFIG_SETTING_INDUSTRY_PLATFORM +strhelp = STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT +strval = STR_CONFIG_SETTING_TILE_LENGTH +cat = SC_EXPERT + +[SDT_BOOL] +var = construction.freeform_edges +from = SLV_111 +def = true +pre_cb = CheckFreeformEdges +post_cb = UpdateFreeformEdges +cat = SC_EXPERT + +[SDT_VAR] +var = construction.extra_tree_placement +type = SLE_UINT8 +from = SLV_132 +flags = SF_GUI_DROPDOWN +def = 2 +min = 0 +max = 3 +str = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT +strhelp = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT +strval = STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD +cat = SC_BASIC |