summaryrefslogtreecommitdiff
path: root/src/table/settings/gameopt_settings.ini
diff options
context:
space:
mode:
Diffstat (limited to 'src/table/settings/gameopt_settings.ini')
-rw-r--r--src/table/settings/gameopt_settings.ini178
1 files changed, 178 insertions, 0 deletions
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