summaryrefslogtreecommitdiff
path: root/src/table/settings/old_gameopt_settings.ini
diff options
context:
space:
mode:
Diffstat (limited to 'src/table/settings/old_gameopt_settings.ini')
-rw-r--r--src/table/settings/old_gameopt_settings.ini160
1 files changed, 160 insertions, 0 deletions
diff --git a/src/table/settings/old_gameopt_settings.ini b/src/table/settings/old_gameopt_settings.ini
new file mode 100644
index 000000000..4e8e46716
--- /dev/null
+++ b/src/table/settings/old_gameopt_settings.ini
@@ -0,0 +1,160 @@
+; This file is part of OpenTTD.
+; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
+; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
+;
+
+; Settings that used to be saved in the savegame under the OPTS chunk and
+; under "gameopts" in the configuration file, but no longer are. Most of these
+; are now moved to other places.
+;
+; For backwards compatability, this file dictates how both were saved. When
+; a configuration files contains these entries, they are read once, and removed
+; from the configuration file afterwards. Those that are still supported will
+; be saved in their new place.
+
+[pre-amble]
+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 const SettingVariant _old_gameopt_settings_table[] = {
+/* In version 4 a new difficulty setting has been added to the difficulty settings,
+ * town attitude towards demolishing. Needs special handling because some dimwit thought
+ * it funny to have the GameDifficulty struct be an array while it is a struct of
+ * 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 SlCopy() 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, $var, $def, $length, $from, $to, $cat, $extra, $startup),
+SDTG_VAR = SDTG_VAR($name, $type, $flags, $var, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
+SDT_NULL = SDT_NULL( $length, $from, $to),
+SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
+SDTG_OMANY = SDTG_OMANY($name, $type, $flags, $var, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
+SDT_OMANY = SDT_OMANY(GameSettings, $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup),
+SDT_VAR = SDT_VAR(GameSettings, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
+
+[validation]
+SDTG_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
+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 = SF_NONE
+interval = 0
+str = STR_NULL
+strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
+strval = STR_NULL
+pre_cb = nullptr
+post_cb = nullptr
+load = nullptr
+from = SL_MIN_VERSION
+to = SL_MAX_VERSION
+cat = SC_ADVANCED
+extra = 0
+startup = false
+
+
+
+[SDTG_LIST]
+name = ""diff_custom""
+sdt_cmd = SDT_INTLIST
+sle_cmd = SL_ARR
+type = SLE_FILE_I16 | SLE_VAR_U16
+flags = SF_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 = SF_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 = SF_NOT_IN_CONFIG
+def = SP_CUSTOM
+min = SP_EASY
+max = SP_CUSTOM
+cat = SC_BASIC
+
+[SDT_OMANY]
+var = locale.currency
+type = SLE_UINT8
+flags = SF_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 = SF_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
+
+[SDTC_OMANY]
+var = gui.autosave
+type = SLE_UINT8
+flags = SF_NOT_IN_SAVE | SF_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