diff options
Diffstat (limited to 'src/table/settings')
-rw-r--r-- | src/table/settings/CMakeLists.txt | 47 | ||||
-rw-r--r-- | src/table/settings/company_settings.ini | 130 | ||||
-rw-r--r-- | src/table/settings/currency_settings.ini | 64 | ||||
-rw-r--r-- | src/table/settings/gameopt_settings.ini | 178 | ||||
-rw-r--r-- | src/table/settings/misc_settings.ini | 356 | ||||
-rw-r--r-- | src/table/settings/settings.ini | 3893 | ||||
-rw-r--r-- | src/table/settings/win32_settings.ini | 44 | ||||
-rw-r--r-- | src/table/settings/window_settings.ini | 53 |
8 files changed, 4765 insertions, 0 deletions
diff --git a/src/table/settings/CMakeLists.txt b/src/table/settings/CMakeLists.txt new file mode 100644 index 000000000..b1503145f --- /dev/null +++ b/src/table/settings/CMakeLists.txt @@ -0,0 +1,47 @@ +set(GENERATED_BINARY_DIR ${CMAKE_BINARY_DIR}/generated) +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}/misc_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/win32_settings.ini + ${CMAKE_CURRENT_SOURCE_DIR}/window_settings.ini +) + +if (HOST_BINARY_DIR) + include(${HOST_BINARY_DIR}/settingsgen.cmake) +endif() + +# Generate a command and target to create the settings table +add_custom_command_timestamp(OUTPUT ${TABLE_BINARY_DIR}/settings.h + COMMAND ${CMAKE_COMMAND} -E make_directory ${TABLE_BINARY_DIR} + COMMAND settingsgen + -o ${TABLE_BINARY_DIR}/settings.h + -b ${CMAKE_SOURCE_DIR}/src/table/settings.h.preamble + -a ${CMAKE_SOURCE_DIR}/src/table/settings.h.postamble + ${TABLE_INI_SOURCE_FILES} + DEPENDS settingsgen ${TABLE_INI_SOURCE_FILES} + ${CMAKE_SOURCE_DIR}/src/table/settings.h.preamble + ${CMAKE_SOURCE_DIR}/src/table/settings.h.postamble + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating table/settings.h" +) +add_custom_target_timestamp(table_settings + DEPENDS + ${TABLE_BINARY_DIR}/settings.h +) + +add_library(settings + INTERFACE +) +target_include_directories(settings + INTERFACE + ${GENERATED_BINARY_DIR} +) +add_dependencies(settings + table_settings +) +add_library(openttd::settings ALIAS settings) diff --git a/src/table/settings/company_settings.ini b/src/table/settings/company_settings.ini new file mode 100644 index 000000000..bb104adeb --- /dev/null +++ b/src/table/settings/company_settings.ini @@ -0,0 +1,130 @@ +; 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/>. +; + +[pre-amble] +static void UpdateServiceInterval(int32 new_value); +static bool CanUpdateServiceInterval(VehicleType type, int32 &new_value); +static void UpdateServiceInterval(VehicleType type, int32 new_value); + +static const SettingTable _company_settings{ +[post-amble] +}; +[templates] +SDT_BOOL = SDT_BOOL(CompanySettings, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(CompanySettings, $var, $type, $flags, $guiflags, $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 CompanySettings.$var exceeds storage size"); + +[defaults] +flags = 0 +guiflags = SGF_PER_COMPANY +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 = engine_renew +def = true +str = STR_CONFIG_SETTING_AUTORENEW_VEHICLE +strhelp = STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT +cat = SC_BASIC + +[SDT_VAR] +var = engine_renew_months +type = SLE_INT16 +guiflags = SGF_PER_COMPANY | SGF_DISPLAY_ABS +def = 6 +min = -12 +max = 12 +str = STR_CONFIG_SETTING_AUTORENEW_MONTHS +strhelp = STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT +strval = STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE + +[SDT_VAR] +var = engine_renew_money +type = SLE_UINT +guiflags = SGF_PER_COMPANY | SGF_CURRENCY +def = 100000 +min = 0 +max = 2000000 +str = STR_CONFIG_SETTING_AUTORENEW_MONEY +strhelp = STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT +strval = STR_JUST_CURRENCY_LONG + +[SDT_BOOL] +var = renew_keep_length +def = false + +[SDT_BOOL] +var = vehicle.servint_ispercent +def = false +str = STR_CONFIG_SETTING_SERVINT_ISPERCENT +strhelp = STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT +post_cb = UpdateServiceInterval + +[SDT_VAR] +var = vehicle.servint_trains +type = SLE_UINT16 +guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED +def = 150 +min = 5 +max = 800 +str = STR_CONFIG_SETTING_SERVINT_TRAINS +strhelp = STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT +strval = STR_CONFIG_SETTING_SERVINT_VALUE +pre_cb = [](auto new_value) { return CanUpdateServiceInterval(VEH_TRAIN, new_value); } +post_cb = [](auto new_value) { UpdateServiceInterval(VEH_TRAIN, new_value); } + +[SDT_VAR] +var = vehicle.servint_roadveh +type = SLE_UINT16 +guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED +def = 150 +min = 5 +max = 800 +str = STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES +strhelp = STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT +strval = STR_CONFIG_SETTING_SERVINT_VALUE +pre_cb = [](auto new_value) { return CanUpdateServiceInterval(VEH_ROAD, new_value); } +post_cb = [](auto new_value) { UpdateServiceInterval(VEH_ROAD, new_value); } + +[SDT_VAR] +var = vehicle.servint_ships +type = SLE_UINT16 +guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED +def = 360 +min = 5 +max = 800 +str = STR_CONFIG_SETTING_SERVINT_SHIPS +strhelp = STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT +strval = STR_CONFIG_SETTING_SERVINT_VALUE +pre_cb = [](auto new_value) { return CanUpdateServiceInterval(VEH_SHIP, new_value); } +post_cb = [](auto new_value) { UpdateServiceInterval(VEH_SHIP, new_value); } + +[SDT_VAR] +var = vehicle.servint_aircraft +type = SLE_UINT16 +guiflags = SGF_PER_COMPANY | SGF_0ISDISABLED +def = 100 +min = 5 +max = 800 +str = STR_CONFIG_SETTING_SERVINT_AIRCRAFT +strhelp = STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT +strval = STR_CONFIG_SETTING_SERVINT_VALUE +pre_cb = [](auto new_value) { return CanUpdateServiceInterval(VEH_AIRCRAFT, new_value); } +post_cb = [](auto new_value) { UpdateServiceInterval(VEH_AIRCRAFT, new_value); } diff --git a/src/table/settings/currency_settings.ini b/src/table/settings/currency_settings.ini new file mode 100644 index 000000000..ce0213758 --- /dev/null +++ b/src/table/settings/currency_settings.ini @@ -0,0 +1,64 @@ +; 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/>. +; + +[pre-amble] +static const SettingTable _currency_settings{ +[post-amble] +}; +[templates] +SDT_VAR = SDT_VAR (CurrencySpec, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_SSTR = SDT_SSTR(CurrencySpec, $var, $type, $flags, $guiflags, $def, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), + +[validation] +SDT_VAR = static_assert($max <= MAX_$type, "Maximum value for CurrencySpec.$var exceeds storage size"); + +[defaults] +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_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 = rate +type = SLE_UINT16 +def = 1 +min = 0 +max = UINT16_MAX + +[SDT_SSTR] +var = separator +type = SLE_STRQ +def = ""."" +cat = SC_BASIC + +[SDT_VAR] +var = to_euro +type = SLE_INT32 +def = 0 +min = MIN_YEAR +max = MAX_YEAR + +[SDT_SSTR] +var = prefix +type = SLE_STRQ +def = nullptr + +[SDT_SSTR] +var = suffix +type = SLE_STRQ +def = "" credits"" diff --git a/src/table/settings/gameopt_settings.ini b/src/table/settings/gameopt_settings.ini new file mode 100644 index 000000000..b3b7ec651 --- /dev/null +++ b/src/table/settings/gameopt_settings.ini @@ -0,0 +1,178 @@ +; 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/>. +; + +[pre-amble] +static const uint GAME_DIFFICULTY_NUM = 18; +static 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 SettingTable _gameopt_settings{ +/* 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 + * same-sized members + * XXX - To save file-space and since values are never bigger than about 10? only + * save the first 16 bits in the savegame. Question is why the values are still int32 + * and why not byte for example? + * 'SLE_FILE_I16 | SLE_VAR_U16' in "diff_custom" is needed to get around SlArray() hack + * for savegames version 0 - though it is an array, it has to go through the byteswap process */ +[post-amble] +}; +[templates] +SDTG_LIST = SDTG_LIST($name, $type, $flags, $guiflags, $var, $def, $length, $from, $to, $cat, $extra, $startup), +SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_NULL = SDT_NULL( $length, $from, $to), +SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $guiflags, $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"); +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 = 0 +guiflags = SGF_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 + + + +[SDTG_LIST] +name = ""diff_custom"" +sdt_cmd = SDT_INTLIST +sle_cmd = SL_ARR +type = SLE_FILE_I16 | SLE_VAR_U16 +flags = SLF_NOT_IN_CONFIG +var = _old_diff_custom +length = 17 +def = nullptr +to = SLV_4 + +[SDTG_LIST] +name = ""diff_custom"" +sdt_cmd = SDT_INTLIST +sle_cmd = SL_ARR +type = SLE_UINT16 +flags = SLF_NOT_IN_CONFIG +var = _old_diff_custom +length = 18 +def = nullptr +full = nullptr +from = SLV_4 + +## +[SDTG_VAR] +name = ""diff_level"" +var = _old_diff_level +type = SLE_UINT8 +flags = SLF_NOT_IN_CONFIG +def = SP_CUSTOM +min = SP_EASY +max = SP_CUSTOM +cat = SC_BASIC + +[SDT_OMANY] +var = locale.currency +type = SLE_UINT8 +flags = SLF_NO_NETWORK_SYNC +def = 0 +max = CURRENCY_END - 1 +full = _locale_currencies +cat = SC_BASIC + +[SDTG_OMANY] +name = ""units"" +var = _old_units +type = SLE_UINT8 +flags = SLF_NOT_IN_CONFIG +def = 1 +max = 2 +full = _locale_units +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 +def = 0 +max = 255 +full = _town_names +cat = SC_BASIC + +[SDT_OMANY] +var = game_creation.landscape +type = SLE_UINT8 +def = 0 +max = 3 +full = _climates +load = ConvertLandscape +cat = SC_BASIC + +[SDT_VAR] +var = game_creation.snow_line_height +type = SLE_UINT8 +def = DEF_SNOWLINE_HEIGHT * TILE_HEIGHT +min = MIN_SNOWLINE_HEIGHT * TILE_HEIGHT +# "max" used to be MAX_SNOWLINE_HEIGHT * TILE_HEIGHT, but this would overflow the storage. +max = UINT8_MAX +to = SLV_22 + +[SDT_NULL] +length = 1 +from = SLV_22 +to = SLV_165 + +[SDT_NULL] +length = 1 +to = SLV_23 + +[SDTC_OMANY] +var = gui.autosave +type = SLE_UINT8 +from = SLV_23 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 1 +max = 4 +full = _autosave_interval +cat = SC_BASIC + +[SDT_OMANY] +var = vehicle.road_side +type = SLE_UINT8 +def = 1 +max = 1 +full = _roadsides +cat = SC_BASIC diff --git a/src/table/settings/misc_settings.ini b/src/table/settings/misc_settings.ini new file mode 100644 index 000000000..1b633a65a --- /dev/null +++ b/src/table/settings/misc_settings.ini @@ -0,0 +1,356 @@ +; 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/>. +; + +[pre-amble] +extern std::string _config_language_file; + +static std::initializer_list<const char*> _support8bppmodes{"no", "system" , "hardware"}; +static std::initializer_list<const char*> _display_opt_modes{"SHOW_TOWN_NAMES", "SHOW_STATION_NAMES", "SHOW_SIGNS", "FULL_ANIMATION", "", "FULL_DETAIL", "WAYPOINTS", "SHOW_COMPETITOR_SIGNS"}; + +#ifdef WITH_COCOA +extern bool _allow_hidpi_window; +#endif +#ifndef WITH_COCOA +#define WITHOUT_COCOA +#endif + +static const SettingTable _misc_settings{ +[post-amble] +}; +[templates] +SDTG_LIST = SDTG_LIST($name, $type, $flags, $guiflags, $var, $def, $length, $from, $to, $cat, $extra, $startup), +SDTG_MMANY = SDTG_MMANY($name, $type, $flags, $guiflags, $var, $def, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTG_SSTR = SDTG_SSTR($name, $type, $flags, $guiflags, $var, $def, 0, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $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"); + +[defaults] +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_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 = true + + + +[SDTG_MMANY] +name = ""display_opt"" +type = SLE_UINT8 +var = _display_opt +def = (1 << DO_SHOW_TOWN_NAMES | 1 << DO_SHOW_STATION_NAMES | 1 << DO_SHOW_SIGNS | 1 << DO_FULL_ANIMATION | 1 << DO_FULL_DETAIL | 1 << DO_SHOW_WAYPOINT_NAMES | 1 << DO_SHOW_COMPETITOR_SIGNS) +full = _display_opt_modes + +[SDTG_BOOL] +name = ""fullscreen"" +var = _fullscreen +def = false +cat = SC_BASIC + +[SDTG_BOOL] +ifdef = WITH_COCOA +name = ""video_hw_accel"" +var = _video_hw_accel +def = false +cat = SC_BASIC + +[SDTG_BOOL] +ifdef = WITHOUT_COCOA +name = ""video_hw_accel"" +var = _video_hw_accel +def = true +cat = SC_BASIC + +[SDTG_BOOL] +name = ""video_vsync"" +var = _video_vsync +def = false +cat = SC_BASIC + +[SDTG_OMANY] +name = ""support8bpp"" +type = SLE_UINT8 +var = _support8bpp +def = 0 +max = 2 +full = _support8bppmodes +cat = SC_BASIC + +[SDTG_SSTR] +name = ""graphicsset"" +type = SLE_STRQ +var = BaseGraphics::ini_set +def = nullptr +cat = SC_BASIC + +[SDTG_SSTR] +name = ""soundsset"" +type = SLE_STRQ +var = BaseSounds::ini_set +def = nullptr +cat = SC_BASIC + +[SDTG_SSTR] +name = ""musicset"" +type = SLE_STRQ +var = BaseMusic::ini_set +def = nullptr +cat = SC_BASIC + +[SDTG_SSTR] +name = ""videodriver"" +type = SLE_STRQ +var = _ini_videodriver +def = nullptr +cat = SC_EXPERT + +[SDTG_SSTR] +name = ""musicdriver"" +type = SLE_STRQ +var = _ini_musicdriver +def = nullptr +cat = SC_EXPERT + +[SDTG_SSTR] +name = ""sounddriver"" +type = SLE_STRQ +var = _ini_sounddriver +def = nullptr +cat = SC_EXPERT + +[SDTG_SSTR] +name = ""blitter"" +type = SLE_STRQ +var = _ini_blitter +def = nullptr + +[SDTG_SSTR] +name = ""language"" +type = SLE_STR +var = _config_language_file +def = nullptr +cat = SC_BASIC + +; workaround for implicit lengthof() in SDTG_LIST +[SDTG_LIST] +name = ""resolution"" +type = SLE_INT +length = 2 +var = _cur_resolution +def = ""0,0"" +cat = SC_BASIC + +[SDTG_SSTR] +name = ""screenshot_format"" +type = SLE_STR +var = _screenshot_format_name +def = nullptr +cat = SC_EXPERT + +[SDTG_SSTR] +name = ""savegame_format"" +type = SLE_STR +var = _savegame_format +def = nullptr +cat = SC_EXPERT + +[SDTG_BOOL] +name = ""rightclick_emulate"" +var = _rightclick_emulate +def = false + +[SDTG_SSTR] +ifdef = HAS_TRUETYPE_FONT +name = ""small_font"" +type = SLE_STR +var = _freetype.small.font +def = nullptr + +[SDTG_SSTR] +ifdef = HAS_TRUETYPE_FONT +name = ""medium_font"" +type = SLE_STR +var = _freetype.medium.font +def = nullptr + +[SDTG_SSTR] +ifdef = HAS_TRUETYPE_FONT +name = ""large_font"" +type = SLE_STR +var = _freetype.large.font +def = nullptr + +[SDTG_SSTR] +ifdef = HAS_TRUETYPE_FONT +name = ""mono_font"" +type = SLE_STR +var = _freetype.mono.font +def = nullptr + +[SDTG_VAR] +ifdef = HAS_TRUETYPE_FONT +name = ""small_size"" +type = SLE_UINT +var = _freetype.small.size +def = 0 +min = 0 +max = 72 + +[SDTG_VAR] +ifdef = HAS_TRUETYPE_FONT +name = ""medium_size"" +type = SLE_UINT +var = _freetype.medium.size +def = 0 +min = 0 +max = 72 + +[SDTG_VAR] +ifdef = HAS_TRUETYPE_FONT +name = ""large_size"" +type = SLE_UINT +var = _freetype.large.size +def = 0 +min = 0 +max = 72 + +[SDTG_VAR] +ifdef = HAS_TRUETYPE_FONT +name = ""mono_size"" +type = SLE_UINT +var = _freetype.mono.size +def = 0 +min = 0 +max = 72 + +[SDTG_BOOL] +ifdef = HAS_TRUETYPE_FONT +name = ""small_aa"" +var = _freetype.small.aa +def = false + +[SDTG_BOOL] +ifdef = HAS_TRUETYPE_FONT +name = ""medium_aa"" +var = _freetype.medium.aa +def = false + +[SDTG_BOOL] +ifdef = HAS_TRUETYPE_FONT +name = ""large_aa"" +var = _freetype.large.aa +def = false + +[SDTG_BOOL] +ifdef = HAS_TRUETYPE_FONT +name = ""mono_aa"" +var = _freetype.mono.aa +def = false + +[SDTG_VAR] +name = ""sprite_cache_size_px"" +type = SLE_UINT +var = _sprite_cache_size +def = 128 +min = 1 +max = 512 +cat = SC_EXPERT + +[SDTG_VAR] +name = ""player_face"" +type = SLE_UINT32 +var = _company_manager_face +def = 0 +min = 0 +max = 0xFFFFFFFF +cat = SC_BASIC + +[SDTG_VAR] +name = ""transparency_options"" +type = SLE_UINT +var = _transparency_opt +def = 0 +min = 0 +max = 0x1FF +cat = SC_BASIC + +[SDTG_VAR] +name = ""transparency_locks"" +type = SLE_UINT +var = _transparency_lock +def = 0 +min = 0 +max = 0x1FF +cat = SC_BASIC + +[SDTG_VAR] +name = ""invisibility_options"" +type = SLE_UINT +var = _invisibility_opt +def = 0 +min = 0 +max = 0xFF +cat = SC_BASIC + +[SDTG_SSTR] +name = ""keyboard"" +type = SLE_STR +var = _keyboard_opt[0] +def = nullptr +cat = SC_EXPERT + +[SDTG_SSTR] +name = ""keyboard_caps"" +type = SLE_STR +var = _keyboard_opt[1] +def = nullptr +cat = SC_EXPERT + +[SDTG_VAR] +name = ""last_newgrf_count"" +type = SLE_UINT32 +var = _settings_client.gui.last_newgrf_count +def = 100 +min = 0 +max = UINT32_MAX +cat = SC_EXPERT + +[SDTG_VAR] +name = ""gui_zoom"" +type = SLE_INT8 +var = _gui_zoom_cfg +def = ZOOM_LVL_CFG_AUTO +min = ZOOM_LVL_CFG_AUTO +max = ZOOM_LVL_OUT_4X +cat = SC_BASIC + +[SDTG_VAR] +name = ""font_zoom"" +type = SLE_INT8 +var = _font_zoom_cfg +def = ZOOM_LVL_CFG_AUTO +min = ZOOM_LVL_CFG_AUTO +max = ZOOM_LVL_OUT_4X +cat = SC_BASIC + +[SDTG_BOOL] +ifdef = WITH_COCOA +name = ""allow_hidpi"" +var = _allow_hidpi_window +def = true diff --git a/src/table/settings/settings.ini b/src/table/settings/settings.ini new file mode 100644 index 000000000..3c22ec4c1 --- /dev/null +++ b/src/table/settings/settings.ini @@ -0,0 +1,3893 @@ +; 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/>. +; + +[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); + +static bool ReplaceAsteriskWithEmptyPassword(std::string &newval); +static void UpdateClientConfigValues(); + +/* 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. */ +const SettingTable _settings{ +[post-amble] +}; +[templates] +SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $guiflags, $var, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTC_BOOL = SDTC_BOOL( $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTC_LIST = SDTC_LIST( $var, $type, $flags, $guiflags, $def, $from, $to, $cat, $extra, $startup), +SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTC_SSTR = SDTC_SSTR( $var, $type, $flags, $guiflags, $def, $length, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTC_VAR = SDTC_VAR( $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_BOOL = SDT_BOOL(GameSettings, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup), +SDT_SSTR = SDT_SSTR(GameSettings, $var, $type, $flags, $guiflags, $def, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_NULL = SDT_NULL( $length, $from, $to), + +[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 = 0 +guiflags = SGF_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. +; Do not ADD or REMOVE something in this "difficulty.XXX" table or before it. It breaks savegame compatibility. +[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_NULL] +length = 1 +from = SLV_97 +to = SLV_110 + +[SDT_VAR] +var = difficulty.number_towns +type = SLE_UINT8 +from = SLV_97 +guiflags = SGF_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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_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 +guiflags = SGF_NEWGAME_ONLY | SGF_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 +guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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_NULL] +length = 1 +from = SLV_97 +to = SLV_110 + +[SDT_VAR] +var = difficulty.vehicle_breakdowns +type = SLE_UINT8 +from = SLV_97 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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.construction_cost +type = SLE_UINT8 +from = SLV_97 +guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING | SGF_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 +guiflags = SGF_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 +guiflags = SGF_MULTISTRING +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 = SLF_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 +guiflags = SGF_NO_NETWORK +def = 0 +max = 255 +full = _town_names +cat = SC_BASIC + +[SDT_OMANY] +var = game_creation.landscape +type = SLE_UINT8 +from = SLV_97 +guiflags = SGF_MULTISTRING | SGF_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 + +; Snow line (or snow_line_height * TILE_HEIGHT) +[SDT_NULL] +length = 1 +from = SLV_97 +to = SLV_164 + +[SDT_OMANY] +var = vehicle.road_side +type = SLE_UINT8 +from = SLV_97 +guiflags = SGF_MULTISTRING | SGF_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 +guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_0ISDISABLED +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 +guiflags = SGF_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 +guiflags = SGF_NO_NETWORK +def = true +cat = SC_EXPERT + +[SDT_VAR] +var = construction.command_pause_level +type = SLE_UINT8 +from = SLV_154 +guiflags = SGF_MULTISTRING | SGF_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 +guiflags = SGF_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 +guiflags = SGF_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 +guiflags = SGF_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 + +# construction.longbridges +[SDT_NULL] +length = 1 +to = SLV_159 + +[SDT_VAR] +var = construction.train_signal_side +type = SLE_UINT8 +guiflags = SGF_MULTISTRING | SGF_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 +guiflags = SGF_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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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 + +; vehicle.mammoth_trains +[SDT_NULL] +length = 1 +to = SLV_159 + +[SDT_VAR] +var = vehicle.smoke_amount +type = SLE_UINT8 +from = SLV_145 +guiflags = SGF_MULTISTRING +def = 1 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_SMOKE_AMOUNT +strhelp = STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT +strval = STR_CONFIG_SETTING_NONE + +; order.gotodepot +[SDT_NULL] +length = 1 +to = SLV_159 + +; 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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_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 = nullptr +guiflags = SGF_NO_NETWORK +var = _old_vds.servint_ispercent +def = false +to = SLV_120 + +[SDTG_VAR] +name = nullptr +type = SLE_UINT16 +guiflags = SGF_0ISDISABLED +var = _old_vds.servint_trains +def = 150 +min = 5 +max = 800 +to = SLV_120 + +[SDTG_VAR] +name = nullptr +type = SLE_UINT16 +guiflags = SGF_0ISDISABLED +var = _old_vds.servint_roadveh +def = 150 +min = 5 +max = 800 +to = SLV_120 + +[SDTG_VAR] +name = nullptr +type = SLE_UINT16 +guiflags = SGF_0ISDISABLED +var = _old_vds.servint_ships +def = 360 +min = 5 +max = 800 +to = SLV_120 + +[SDTG_VAR] +name = nullptr +type = SLE_UINT16 +guiflags = SGF_0ISDISABLED +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 +guiflags = SGF_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 +guiflags = SGF_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 +guiflags = SGF_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 + +; order.timetabling +[SDT_NULL] +length = 1 +from = SLV_67 +to = SLV_159 + +[SDT_VAR] +var = vehicle.plane_speed +type = SLE_UINT8 +from = SLV_90 +guiflags = SGF_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 +guiflags = SGF_NO_NETWORK +def = true +pre_cb = CheckDynamicEngines +cat = SC_EXPERT + +[SDT_VAR] +var = vehicle.plane_crashes +type = SLE_UINT8 +from = SLV_138 +guiflags = SGF_MULTISTRING +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 + +; station.join_stations +[SDT_NULL] +length = 1 +to = SLV_159 + +[SDTC_BOOL] +var = gui.sg_full_load_any +from = SLV_22 +to = SLV_93 +def = true + +[SDT_BOOL] +var = order.improved_load +guiflags = SGF_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 + +; station.nonuniform_stations +[SDT_NULL] +length = 1 +to = SLV_159 + +[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 +guiflags = SGF_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 +guiflags = SGF_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) { DeleteWindowById(WC_SELECT_STATION, 0); } + +## +[SDT_BOOL] +var = economy.inflation +guiflags = SGF_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 +guiflags = SGF_MULTISTRING +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_NULL] +length = 1 +to = SLV_141 + +[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 +guiflags = SGF_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 +guiflags = SGF_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 +guiflags = SGF_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_NULL] +length = 4 +to = SLV_144 + +[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_NULL] +length = 4 +to = SLV_105 + +[SDT_VAR] +var = game_creation.ending_year +type = SLE_INT32 +from = SLV_ENDING_YEAR +guiflags = SGF_0ISDISABLED +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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_0ISDISABLED +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 + +; previously ai-new setting. +[SDT_NULL] +length = 1 +to = SLV_107 + +[SDT_OMANY] +var = script.settings_profile +type = SLE_UINT8 +from = SLV_178 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_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 +guiflags = SGF_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 + +## +; Used to be pf.opf.pf_maxlength & pf.opf.pf_maxdepth +[SDT_NULL] +length = 3 +to = SLV_REMOVE_OPF + +## +[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 +guiflags = SGF_MULTISTRING | SGF_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 +guiflags = SGF_MULTISTRING | SGF_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 +guiflags = SGF_MULTISTRING | SGF_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 +guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY | SGF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 +guiflags = SGF_MULTISTRING +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 +guiflags = SGF_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 +guiflags = SGF_MULTISTRING | SGF_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 = SLF_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 = SLF_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 = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_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 = SLF_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 = SLF_NO_NETWORK_SYNC +def = nullptr +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_BASIC + + +;*************************************************************************** +; Unsaved setting variables. + +[SDTC_OMANY] +var = gui.autosave +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = true +cat = SC_EXPERT + +[SDTC_OMANY] +var = gui.date_format_in_default_names +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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] +var = gui.scroll_mode +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 + +[SDTC_BOOL] +var = gui.measure_tooltip +flags = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_0ISDISABLED +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +str = STR_CONFIG_SETTING_OSK_ACTIVATION +strhelp = STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT +strval = STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED +guiflags = SGF_MULTISTRING +full = _osk_activation +def = 1 +min = 0 +max = 3 +cat = SC_BASIC + +[SDTC_VAR] +var = gui.toolbar_pos +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_0ISDISABLED +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_0ISDISABLED +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false + +[SDTC_BOOL] +var = gui.autosave_on_exit +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.autosave_on_network_disconnect +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = true +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.max_num_autosaves +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 16 +min = 0 +max = 255 + +[SDTC_BOOL] +var = gui.auto_euro +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = true + +[SDTC_VAR] +var = gui.news_message_timeout +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 2 +min = 1 +max = 255 + +[SDTC_BOOL] +var = gui.show_track_reservation +flags = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 1 +min = 1 +max = 7 + +[SDTC_VAR] +var = gui.station_platlength +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 5 +min = 1 +max = 7 +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.station_dragdrop +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = true +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.station_show_coverage +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +cat = SC_BASIC + +[SDTC_BOOL] +var = gui.persistent_buildingtools +flags = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 5 +interval = 1 + +[SDTC_VAR] +var = gui.station_gui_sort_by +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 3 +interval = 1 + +[SDTC_VAR] +var = gui.station_gui_sort_order +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 1 +interval = 1 + +[SDTC_VAR] +var = gui.missing_strings_threshold +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 25 +min = 1 +max = UINT8_MAX +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.graph_line_thickness +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = true + +[SDTC_BOOL] +ifndef = DEDICATED +var = gui.show_date_in_logs +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false + +[SDTC_VAR] +var = gui.settings_restriction_mode +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 2 + +[SDTC_VAR] +var = gui.developer +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 1 +min = 0 +max = 2 +cat = SC_EXPERT + +[SDTC_BOOL] +var = gui.newgrf_developer_tools +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +post_cb = InvalidateNewGRFChangeWindows +cat = SC_EXPERT + +[SDTC_BOOL] +var = gui.ai_developer_tools +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +post_cb = [](auto) { InvalidateWindowClassesData(WC_AI_SETTINGS); } +cat = SC_EXPERT + +[SDTC_BOOL] +var = gui.scenario_developer +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +post_cb = InvalidateNewGRFChangeWindows + +[SDTC_BOOL] +var = gui.newgrf_show_old_versions +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.newgrf_default_palette +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +def = 1 +min = 0 +max = 1 +post_cb = UpdateNewGRFConfigPalette +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.console_backlog_timeout +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 100 +min = 10 +max = 65500 + +[SDTC_VAR] +var = gui.console_backlog_length +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 100 +min = 10 +max = 65500 + +[SDTC_VAR] +var = gui.refresh_rate +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_0ISDISABLED | SGF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_CLICK +strhelp = STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT + +[SDTC_BOOL] +var = sound.disaster +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_DISASTER +strhelp = STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT + +[SDTC_BOOL] +var = sound.vehicle +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = true +str = STR_CONFIG_SETTING_SOUND_VEHICLE +strhelp = STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT + +[SDTC_BOOL] +var = sound.ambient +flags = SLF_NOT_IN_SAVE | SLF_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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 0 +min = 0 +max = 5 +interval = 1 +cat = SC_BASIC + +[SDTC_VAR] +var = music.music_vol +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 50 +min = 0 +max = 127 +interval = 1 +cat = SC_BASIC + +[SDTC_VAR] +var = music.effect_vol +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 100 +min = 0 +max = 127 +interval = 1 +cat = SC_BASIC + +[SDTC_LIST] +var = music.custom_1 +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = nullptr +cat = SC_BASIC + +[SDTC_LIST] +var = music.custom_2 +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = nullptr +cat = SC_BASIC + +[SDTC_BOOL] +var = music.playing +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = true +cat = SC_BASIC + +[SDTC_BOOL] +var = music.shuffle +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +cat = SC_BASIC + +[SDTC_OMANY] +var = news_display.arrival_player +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 40 +min = 10 +max = 100 +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.network_chat_box_height +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 25 +min = 5 +max = 255 +cat = SC_EXPERT + +[SDTC_VAR] +var = gui.network_chat_timeout +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = 20 +min = 1 +max = 65535 +cat = SC_EXPERT + +[SDTC_VAR] +var = network.sync_freq +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NOT_IN_CONFIG | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 100 +min = 0 +max = 100 +cat = SC_EXPERT + +[SDTC_VAR] +var = network.frame_freq +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NOT_IN_CONFIG | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 0 +min = 0 +max = 100 +cat = SC_EXPERT + +[SDTC_VAR] +var = network.commands_per_frame +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 2 +min = 1 +max = 65535 +cat = SC_EXPERT + +[SDTC_VAR] +var = network.max_commands_in_queue +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 16 +min = 1 +max = 65535 +cat = SC_EXPERT + +[SDTC_VAR] +var = network.bytes_per_frame +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 8 +min = 1 +max = 65535 +cat = SC_EXPERT + +[SDTC_VAR] +var = network.bytes_per_frame_burst +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 256 +min = 1 +max = 65535 +cat = SC_EXPERT + +[SDTC_VAR] +var = network.max_init_time +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 100 +min = 0 +max = 32000 +cat = SC_EXPERT + +[SDTC_VAR] +var = network.max_join_time +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 500 +min = 0 +max = 32000 + +[SDTC_VAR] +var = network.max_download_time +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 1000 +min = 0 +max = 32000 + +[SDTC_VAR] +var = network.max_password_time +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 2000 +min = 0 +max = 32000 + +[SDTC_VAR] +var = network.max_lag_time +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 500 +min = 0 +max = 32000 + +[SDTC_BOOL] +var = network.pause_on_join +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = true + +[SDTC_VAR] +var = network.server_port +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = NETWORK_DEFAULT_PORT +min = 0 +max = 65535 +cat = SC_EXPERT + +[SDTC_VAR] +var = network.server_admin_port +type = SLE_UINT16 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = NETWORK_ADMIN_PORT +min = 0 +max = 65535 +cat = SC_EXPERT + +[SDTC_BOOL] +var = network.server_admin_chat +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = true +cat = SC_EXPERT + +[SDTC_BOOL] +var = network.server_advertise +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = false + +[SDTC_SSTR] +var = network.client_name +type = SLE_STR +length = NETWORK_CLIENT_NAME_LENGTH +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = nullptr +pre_cb = NetworkValidateClientName +post_cb = NetworkUpdateClientName +cat = SC_BASIC + +[SDTC_SSTR] +var = network.server_password +type = SLE_STR +length = NETWORK_PASSWORD_LENGTH +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = nullptr +pre_cb = ReplaceAsteriskWithEmptyPassword +post_cb = [](auto) { NetworkServerUpdateGameInfo(); } +cat = SC_BASIC + +[SDTC_SSTR] +var = network.rcon_password +type = SLE_STR +length = NETWORK_PASSWORD_LENGTH +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = nullptr +pre_cb = ReplaceAsteriskWithEmptyPassword +cat = SC_BASIC + +[SDTC_SSTR] +var = network.admin_password +type = SLE_STR +length = NETWORK_PASSWORD_LENGTH +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = nullptr +cat = SC_BASIC + +[SDTC_SSTR] +var = network.default_company_pass +type = SLE_STR +length = NETWORK_PASSWORD_LENGTH +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = nullptr + +[SDTC_SSTR] +var = network.server_name +type = SLE_STR +length = NETWORK_NAME_LENGTH +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = nullptr +pre_cb = NetworkValidateServerName +post_cb = [](auto) { UpdateClientConfigValues(); } +cat = SC_BASIC + +[SDTC_SSTR] +var = network.connect_to_ip +type = SLE_STR +length = 0 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = nullptr + +[SDTC_SSTR] +var = network.network_id +type = SLE_STR +length = NETWORK_SERVER_ID_LENGTH +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = nullptr + +[SDTC_BOOL] +var = network.autoclean_companies +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = false + +[SDTC_VAR] +var = network.autoclean_unprotected +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_0ISDISABLED | SGF_NETWORK_ONLY +def = 12 +min = 0 +max = 240 + +[SDTC_VAR] +var = network.autoclean_protected +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_0ISDISABLED | SGF_NETWORK_ONLY +def = 36 +min = 0 +max = 240 + +[SDTC_VAR] +var = network.autoclean_novehicles +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_0ISDISABLED | SGF_NETWORK_ONLY +def = 0 +min = 0 +max = 240 + +[SDTC_VAR] +var = network.max_companies +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 15 +min = 1 +max = MAX_COMPANIES +post_cb = [](auto) { UpdateClientConfigValues(); } +cat = SC_BASIC + +[SDTC_VAR] +var = network.max_clients +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 25 +min = 2 +max = MAX_CLIENTS +post_cb = [](auto) { UpdateClientConfigValues(); } +cat = SC_BASIC + +[SDTC_VAR] +var = network.max_spectators +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 15 +min = 0 +max = MAX_CLIENTS +post_cb = [](auto) { UpdateClientConfigValues(); } +cat = SC_BASIC + +[SDTC_VAR] +var = network.restart_game_year +type = SLE_INT32 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_0ISDISABLED | SGF_NETWORK_ONLY +def = 0 +min = MIN_YEAR +max = MAX_YEAR +interval = 1 + +[SDTC_VAR] +var = network.min_active_clients +type = SLE_UINT8 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = 0 +min = 0 +max = MAX_CLIENTS + +[SDTC_BOOL] +var = network.reload_cfg +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_NETWORK_ONLY +def = false +cat = SC_EXPERT + +[SDTC_SSTR] +var = network.last_joined +type = SLE_STR +length = 0 +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = """" +cat = SC_EXPERT + +[SDTC_BOOL] +var = network.no_http_content_downloads +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +def = false +cat = SC_EXPERT + +; Since the network code (CmdChangeSetting and friends) use the index in this array to decide +; which setting the server is talking about all conditional compilation of this array must be at the +; end. This isn't really the best solution, the settings the server can tell the client about should +; either use a separate array or some other form of identifier. + +; +; 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 = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_MULTISTRING +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 diff --git a/src/table/settings/win32_settings.ini b/src/table/settings/win32_settings.ini new file mode 100644 index 000000000..6b7d5276d --- /dev/null +++ b/src/table/settings/win32_settings.ini @@ -0,0 +1,44 @@ +; 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/>. +; + +[pre-amble] +/* win32_v.cpp only settings */ +#if defined(_WIN32) && !defined(DEDICATED) +extern bool _window_maximize; + +static const SettingTable _win32_settings{ +[post-amble] +}; +#endif /* _WIN32 */ +[templates] +SDTG_BOOL = SDTG_BOOL($name, $flags, $guiflags, $var, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDTG_VAR = SDTG_VAR($name, $type, $flags, $guiflags, $var, $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"); + +[defaults] +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_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 = true + + +[SDTG_BOOL] +name = ""window_maximize"" +var = _window_maximize +def = false +cat = SC_BASIC diff --git a/src/table/settings/window_settings.ini b/src/table/settings/window_settings.ini new file mode 100644 index 000000000..560a197ab --- /dev/null +++ b/src/table/settings/window_settings.ini @@ -0,0 +1,53 @@ +; 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/>. +; + +[pre-amble] + +static const SettingTable _window_settings{ +[post-amble] +}; +[templates] +SDT_BOOL = SDT_BOOL(WindowDesc, $var, $flags, $guiflags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup), +SDT_VAR = SDT_VAR(WindowDesc, $var, $type, $flags, $guiflags, $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 WindowDesc.$var exceeds storage size"); + +[defaults] +flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +guiflags = SGF_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 = pref_sticky +def = false + +[SDT_VAR] +var = pref_width +type = SLE_INT16 +def = 0 +min = 0 +max = 32000 + +[SDT_VAR] +var = pref_height +type = SLE_INT16 +def = 0 +min = 0 +max = 32000 |