Split GUI settings into separate INI files

Matching upstream for non-save settings
pull/603/merge
Jonathan G Rennison 7 months ago
parent d4f39ea6c2
commit b280dfb965

@ -124,7 +124,11 @@ static bool _fallback_gui_zoom_max = false;
*/
static const SettingTable _generic_setting_tables[] = {
_settings,
_gui_settings,
_multimedia_settings,
_network_settings,
_news_display_settings,
_scenario_settings,
};
void IterateSettingsTables(std::function<void(const SettingTable &, void *)> handler)

@ -10,6 +10,9 @@
/* Callback function used in _settings[] as well as _company_settings[] */
static size_t ConvertLandscape(const char *value);
/* Callback function used in _settings[] as well as _gui_settings[] */
static void UpdateTimeSettings(int32 new_value);
/****************************
* OTTD specific INI stuff

@ -5,10 +5,14 @@ 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}/gui_settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/misc_settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/multimedia_settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/network_settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/network_private_settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/network_secrets_settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/news_display_settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/scenario_settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/win32_settings.ini
${CMAKE_CURRENT_SOURCE_DIR}/window_settings.ini

@ -28,12 +28,7 @@ static constexpr std::initializer_list<const char*> _locale_units{"imperial", "m
static constexpr 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 constexpr std::initializer_list<const char*> _climates{"temperate", "arctic", "tropic", "toyland"};
static constexpr std::initializer_list<const char*> _roadsides{"left", "right"};
static constexpr std::initializer_list<const char*> _savegame_date{"long", "short", "iso"};
static constexpr std::initializer_list<const char*> _savegame_overwrite_confirm{"no", "different", "not same", "yes"};
static constexpr std::initializer_list<const char*> _osk_activation{"disabled", "double", "single", "immediately"};
static constexpr std::initializer_list<const char*> _settings_profiles{"easy", "medium", "hard"};
static constexpr std::initializer_list<const char*> _news_display{ "off", "summarized", "full"};
static constexpr std::initializer_list<const char*> _right_click_close{"no", "yes", "except sticky"};
static const SettingTable _gameopt_settings{
/* In version 4 a new difficulty setting has been added to the difficulty settings,

File diff suppressed because it is too large Load Diff

@ -0,0 +1,151 @@
; This file is part of OpenTTD.
; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
;
; Multimedia (sound / music) settings as stored in the main configuration file ("openttd.cfg").
[pre-amble]
const SettingTable _multimedia_settings = {
[post-amble]
};
[templates]
SDTC_BOOL = SDTC_BOOL( $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $cat | $patchcat, $guiproc, $startup, $patxname),
SDTC_LIST = SDTC_LIST( $var, $type, $flags, $def, $from, $to, $extver, $cat | $patchcat, $guiproc, $startup, $patxname),
SDTC_VAR = SDTC_VAR( $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $cat | $patchcat, $guiproc, $startup, $patxname),
[validation]
SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
[defaults]
flags = SF_NONE
interval = 0
str = STR_NULL
strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
strval = STR_NULL
pre_cb = nullptr
post_cb = nullptr
guiproc = nullptr
load = nullptr
from = SL_MIN_VERSION
to = SL_MAX_VERSION
cat = SC_ADVANCED
patchcat = SC_NONE
startup = false
extver = SlXvFeatureTest()
patxname = nullptr
[SDTC_BOOL]
var = sound.news_ticker
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = true
str = STR_CONFIG_SETTING_SOUND_TICKER
strhelp = STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT
[SDTC_BOOL]
var = sound.news_full
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = true
str = STR_CONFIG_SETTING_SOUND_NEWS
strhelp = STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT
[SDTC_BOOL]
var = sound.new_year
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = true
str = STR_CONFIG_SETTING_SOUND_NEW_YEAR
strhelp = STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT
[SDTC_BOOL]
var = sound.confirm
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = true
str = STR_CONFIG_SETTING_SOUND_CONFIRM
strhelp = STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT
[SDTC_BOOL]
var = sound.click_beep
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = true
str = STR_CONFIG_SETTING_SOUND_CLICK
strhelp = STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT
[SDTC_BOOL]
var = sound.disaster
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = true
str = STR_CONFIG_SETTING_SOUND_DISASTER
strhelp = STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT
[SDTC_BOOL]
var = sound.vehicle
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = true
str = STR_CONFIG_SETTING_SOUND_VEHICLE
strhelp = STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT
[SDTC_BOOL]
var = sound.ambient
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = true
str = STR_CONFIG_SETTING_SOUND_AMBIENT
strhelp = STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT
[SDTC_VAR]
var = music.playlist
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = 0
min = 0
max = 5
interval = 1
cat = SC_BASIC
[SDTC_VAR]
var = music.music_vol
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = 50
min = 0
max = 127
interval = 1
cat = SC_BASIC
[SDTC_VAR]
var = music.effect_vol
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = 100
min = 0
max = 127
interval = 1
cat = SC_BASIC
[SDTC_LIST]
var = music.custom_1
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = nullptr
cat = SC_BASIC
[SDTC_LIST]
var = music.custom_2
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = nullptr
cat = SC_BASIC
[SDTC_BOOL]
var = music.playing
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = true
cat = SC_BASIC
[SDTC_BOOL]
var = music.shuffle
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
cat = SC_BASIC

@ -0,0 +1,215 @@
; This file is part of OpenTTD.
; OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
;
; News display settings as stored in the main configuration file ("openttd.cfg").
[pre-amble]
static constexpr std::initializer_list<const char*> _news_display{ "off", "summarized", "full"};
const SettingTable _news_display_settings = {
[post-amble]
};
[templates]
SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $cat | $patchcat, $guiproc, $startup, $patxname),
[validation]
SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
[defaults]
flags = SF_NONE
interval = 0
str = STR_NULL
strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
strval = STR_NULL
pre_cb = nullptr
post_cb = nullptr
guiproc = nullptr
load = nullptr
from = SL_MIN_VERSION
to = SL_MAX_VERSION
cat = SC_ADVANCED
patchcat = SC_NONE
startup = false
extver = SlXvFeatureTest()
patxname = nullptr
[SDTC_OMANY]
var = news_display.arrival_player
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 2
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN
strhelp = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OWN_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.arrival_other
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 1
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER
strhelp = STR_CONFIG_SETTING_NEWS_ARRIVAL_FIRST_VEHICLE_OTHER_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.accident
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 2
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS
strhelp = STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.accident_other
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 2
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER
strhelp = STR_CONFIG_SETTING_NEWS_ACCIDENT_OTHER_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.company_info
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 2
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION
strhelp = STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.open
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 1
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN
strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.close
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 1
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE
strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.economy
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 2
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES
strhelp = STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.production_player
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 1
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY
strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.production_other
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 0
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER
strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.production_nobody
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 0
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED
strhelp = STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.advice
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 2
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_ADVICE
strhelp = STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.new_vehicles
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 2
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES
strhelp = STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.acceptance
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 2
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE
strhelp = STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.subsidies
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 1
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_SUBSIDIES
strhelp = STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF
[SDTC_OMANY]
var = news_display.general
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 2
max = 2
full = _news_display
str = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION
strhelp = STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION_HELPTEXT
strval = STR_CONFIG_SETTING_NEWS_MESSAGES_OFF

@ -0,0 +1,76 @@
; 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/>.
;
; Scenario settings as stored in the main configuration file ("openttd.cfg").
[pre-amble]
const SettingTable _scenario_settings = {
[post-amble]
};
[templates]
SDTC_BOOL = SDTC_BOOL( $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $cat | $patchcat, $guiproc, $startup, $patxname),
SDTC_LIST = SDTC_LIST( $var, $type, $flags, $def, $from, $to, $extver, $cat | $patchcat, $guiproc, $startup, $patxname),
SDTC_VAR = SDTC_VAR( $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $extver, $cat | $patchcat, $guiproc, $startup, $patxname),
[validation]
SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
[defaults]
flags = SF_NONE
interval = 0
str = STR_NULL
strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
strval = STR_NULL
pre_cb = nullptr
post_cb = nullptr
guiproc = nullptr
load = nullptr
from = SL_MIN_VERSION
to = SL_MAX_VERSION
cat = SC_ADVANCED
patchcat = SC_NONE
startup = false
extver = SlXvFeatureTest()
patxname = nullptr
[SDTC_BOOL]
var = scenario.multiple_buildings
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_SETTING_SCENARIO_MULTIPLE_BUILDINGS
strhelp = STR_CONFIG_SETTING_SCENARIO_MULTIPLE_BUILDINGS_HELPTEXT
patchcat = SC_PATCH
[SDTC_BOOL]
var = scenario.house_ignore_dates
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_DATES
strhelp = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_DATES_HELPTEXT
patchcat = SC_PATCH
[SDTC_VAR]
var = scenario.house_ignore_zones
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
def = 0
min = 0
max = 2
interval = 1
str = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES
strhelp = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES_HELPTEXT
strval = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES_OFF
patchcat = SC_PATCH
[SDTC_BOOL]
var = scenario.house_ignore_grf
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_GRF
strhelp = STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_GRF_HELPTEXT
patchcat = SC_PATCH

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save