/* * 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 . */ /** @file table/settings.h Settings to save in the savegame and config file. */ /* Callback function used in _settings[] as well as _company_settings[] */ static size_t ConvertLandscape(const char *value); static StringID SettingTitleWallclock(const IntSettingDesc &sd); static StringID SettingHelpWallclock(const IntSettingDesc &sd); /* Callback function used in _settings[] as well as _gui_settings[] */ static void UpdateTimeSettings(int32_t new_value); /* Callback function used for various settings */ static bool CheckTTDPatchSettingFlag(uint flag); /**************************** * OTTD specific INI stuff **************************** * DO NOT edit this file. This file is automatically generated from the contents of /src/table/ */ /** * Settings-macro usage: * The list might look daunting at first, but is in general easy to understand. * The macros can be grouped depending on where the config variable is * stored: * 1. SDTG_something * These are for global variables. Here 'var' refers to a global variable. * 2. SDTC_something * These are for client-only variables. Here the 'var' refers to an * entry inside _settings_client. * 3. SDT_something * These are for members in the struct described by the current * #SettingDesc list / .ini file. Here, 'base' specifies type of the * struct while 'var' points out the member of the struct (the actual * struct to store it in is implicitly defined by the #SettingDesc * list / .ini file preamble the entry is in). * * The something part defines the type of variable to store. There are a * lot of types. Easy ones are: * - VAR: any number type, 'type' field specifies what number. eg int8_t or uint32_t * - BOOL: a boolean number type * - STR: a string or character. 'type' field specifies what string. Normal, string, or quoted * A bit more difficult to use are MMANY (meaning ManyOfMany) and OMANY (OneOfMany) * These are actually normal numbers, only bitmasked. In MMANY several bits can * be set, in the other only one. * If nothing fits you, you can use the GENERAL macros, but it exposes the * internal structure somewhat so it needs a little looking. There are _NULL() * macros as well, these fill up space so you can add more settings there (in * place) and you DON'T have to increase the savegame version. * * While reading values from openttd.cfg, some values may not be converted * properly, for any kind of reasons. In order to allow a process of self-cleaning * mechanism, a callback procedure is made available. You will have to supply the function, which * will work on a string, one function per setting. And of course, enable the callback param * on the appropriate macro. */ template ::value, int> = 0> constexpr T STUnwrap(T value) { return value; } template ::value, int> = 0> constexpr T::BaseType STUnwrap(T value) { return value.base(); } #define NSD(type, ...) std::unique_ptr(new type##SettingDesc(__VA_ARGS__)) /* Macros for various objects to go in the configuration file. * This section is for global variables */ #define SDTG_VAR(name, type, flags, var, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ NSD(Int, SLEG_GENERAL_X(SL_VAR, var, type, 1, from, to, extver), name, flags, guiproc, startup, patxname, STUnwrap(def), STUnwrap(min), STUnwrap(max), interval, str, strhelp, strval, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, nullptr) #define SDTG_ENUM(name, type, flags, var, def, str, strhelp, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname, enumlist)\ NSD(Int, SLEG_GENERAL_X(SL_VAR, var, type, 1, from, to, extver), name, flags | SF_ENUM, guiproc, startup, patxname, def, 0, 0, 0, str, strhelp, STR_NULL, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, enumlist) #define SDTG_BOOL(name, flags, var, def, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ NSD(Bool, SLEG_GENERAL_X(SL_VAR, var, SLE_BOOL, 1, from, to, extver), name, flags, guiproc, startup, patxname, def, str, strhelp, strval, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook) #define SDTG_LIST(name, type, flags, var, def, length, from, to, extver, cat, guiproc, startup, patxname)\ NSD(List, SLEG_GENERAL_X(SL_ARR, var, type, length, from, to, extver), name, flags, guiproc, startup, patxname, def) #define SDTG_SSTR(name, type, flags, var, def, max_length, pre_check, post_callback, from, to, extver, cat, guiproc, startup, patxname)\ NSD(String, SLEG_GENERAL_X(SL_STDSTR, var, type, sizeof(var), from, to, extver), name, flags, guiproc, startup, patxname, def, max_length, pre_check, post_callback) #define SDTG_OMANY(name, type, flags, var, def, max, full, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ NSD(OneOfMany, SLEG_GENERAL_X(SL_VAR, var, type, 1, from, to, extver), name, flags, guiproc, startup, patxname, def, max, str, strhelp, strval, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, full, nullptr) #define SDTG_MMANY(name, type, flags, var, def, full, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ NSD(ManyOfMany, SLEG_GENERAL_X(SL_VAR, var, type, 1, from, to, extver), name, flags, guiproc, startup, patxname, def, str, strhelp, strval, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, full, nullptr) #define SDTG_NULL(length, from, to, extver)\ NSD(Null, SLE_CONDNULL_X(length, from, to, extver)) /* Macros for various objects to go in the configuration file. * This section is for structures where their various members are saved */ #define SDT_VAR(base, var, type, flags, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ NSD(Int, SLE_GENERAL_X(SL_VAR, base, var, type, 1, from, to, extver), #var, flags, guiproc, startup, patxname, STUnwrap(def), STUnwrap(min), STUnwrap(max), interval, str, strhelp, strval, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, nullptr) #define SDT_VAR2(base, name, var, type, flags, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ NSD(Int, SLE_GENERAL_X(SL_VAR, base, var, type, 1, from, to, extver), name, flags, guiproc, startup, patxname, STUnwrap(def), STUnwrap(min), STUnwrap(max), interval, str, strhelp, strval, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, nullptr) #define SDT_ENUM(base, var, type, flags, def, str, strhelp, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname, enumlist)\ NSD(Int, SLE_GENERAL_X(SL_VAR, base, var, type, 1, from, to, extver), #var, flags | SF_ENUM, guiproc, startup, patxname, def, 0, 0, 0, str, strhelp, STR_NULL, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, enumlist) #define SDT_BOOL(base, var, flags, def, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ NSD(Bool, SLE_GENERAL_X(SL_VAR, base, var, SLE_BOOL, 1, from, to, extver), #var, flags, guiproc, startup, patxname, def, str, strhelp, strval, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook) #define SDT_LIST(base, var, type, flags, def, from, to, extver, cat, guiproc, startup, patxname)\ NSD(List, SLE_GENERAL_X(SL_ARR, base, var, type, lengthof(((base*)8)->var), from, to, extver), #var, flags, guiproc, startup, patxname, def) #define SDT_SSTR(base, var, type, flags, def, pre_check, post_callback, from, to, extver, cat, guiproc, startup, patxname)\ NSD(String, SLE_GENERAL_X(SL_STDSTR, base, var, type, sizeof(((base*)8)->var), from, to, extver), #var, flags, guiproc, startup, patxname, def, 0, pre_check, post_callback) #define SDT_OMANY(base, var, type, flags, def, max, full, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, load, cat, guiproc, startup, patxname)\ NSD(OneOfMany, SLE_GENERAL_X(SL_VAR, base, var, type, 1, from, to, extver), #var, flags, guiproc, startup, patxname, def, max, str, strhelp, strval, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, full, load) #define SDT_MMANY(base, var, type, flags, def, full, str, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, strhelp, strval, from, to, extver, cat, guiproc, startup, patxname)\ NSD(ManyOfMany, SLE_GENERAL_X(SL_VAR, base, var, type, 1, from, to, extver), #var, flags, guiproc, startup, patxname, def, str, strhelp, strval, cat, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, full, nullptr) #define SDT_NULL(length, from, to, extver)\ NSD(Null, SLE_CONDNULL_X(length, from, to, extver)) #define SDT_NAMED_NULL(name, length, from, to, extver, patxname)\ NSD(Null, SLE_CONDNULL_X(length, from, to, extver), name, patxname) #define SDTC_VAR(var, type, flags, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ SDTG_VAR(#var, type, flags, _settings_client.var, STUnwrap(def), STUnwrap(min), STUnwrap(max), interval, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname) #define SDTC_ENUM(var, type, flags, def, str, strhelp, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname, enumlist)\ SDTG_ENUM(#var, type, flags, _settings_client.var, def, str, strhelp, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname, enumlist) #define SDTC_BOOL(var, flags, def, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ SDTG_BOOL(#var, flags, _settings_client.var, def, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname) #define SDTC_LIST(var, type, flags, def, from, to, extver, cat, guiproc, startup, patxname)\ SDTG_LIST(#var, type, flags, _settings_client.var, def, lengthof(_settings_client.var), from, to, extver, cat, guiproc, startup, patxname) #define SDTC_SSTR(var, type, flags, def, max_length, pre_check, post_callback, from, to, extver, cat, guiproc, startup, patxname)\ SDTG_SSTR(#var, type, flags, _settings_client.var, def, max_length, pre_check, post_callback, from, to, extver, cat, guiproc, startup, patxname)\ #define SDTC_OMANY(var, type, flags, def, max, full, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)\ SDTG_OMANY(#var, type, flags, _settings_client.var, def, max, full, str, strhelp, strval, pre_check, post_callback, get_title_hook, get_help_hook, set_value_dparams_hook, from, to, extver, cat, guiproc, startup, patxname)