Changeset - r25601:747c128b2f85
[Not reviewed]
master
0 12 0
Patric Stout - 3 years ago 2021-06-03 18:55:03
truebrain@openttd.org
Codechange: merge guiflags and flags in settings .ini files

It was rather confusing which one was for what, especially as some
SaveLoad flags were settings-only. Clean up this mess a bit by
having only Setting flags.
12 files changed with 352 insertions and 440 deletions:
0 comments (0 inline, 0 general)
src/saveload/saveload.h
Show inline comments
 
@@ -482,17 +482,14 @@ enum VarTypes {
 
	SLE_STRB  = SLE_STRINGBUF,
 
	SLE_STR   = SLE_STRING,
 
	SLE_STRQ  = SLE_STRINGQUOTE,
 

	
 
	/* 8 bits allocated for a maximum of 8 flags
 
	 * Flags directing saving/loading of a variable */
 
	SLF_NOT_IN_SAVE     = 1 <<  8, ///< do not save with savegame, basically client-based
 
	SLF_NOT_IN_CONFIG   = 1 <<  9, ///< do not save to config file
 
	SLF_NO_NETWORK_SYNC = 1 << 10, ///< do not synchronize over network (but it is saved if SLF_NOT_IN_SAVE is not set)
 
	SLF_ALLOW_CONTROL   = 1 << 11, ///< allow control codes in the strings
 
	SLF_ALLOW_NEWLINE   = 1 << 12, ///< allow new lines in the strings
 
	SLF_ALLOW_CONTROL   = 1 << 8, ///< Allow control codes in the strings.
 
	SLF_ALLOW_NEWLINE   = 1 << 9, ///< Allow new lines in the strings.
 
};
 

	
 
typedef uint32 VarType;
 

	
 
/** Type of data saved. */
 
enum SaveLoadType : byte {
 
@@ -670,13 +667,13 @@ using SaveLoadTable = span<const SaveLoa
 
/**
 
 * Empty space in some savegame versions.
 
 * @param length Length of the empty space.
 
 * @param from   First savegame version that has the empty space.
 
 * @param to     Last savegame version that has the empty space.
 
 */
 
#define SLE_CONDNULL(length, from, to) {SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, 0, nullptr, 0}
 
#define SLE_CONDNULL(length, from, to) {SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL, length, from, to, 0, nullptr, 0}
 

	
 
/** Translate values ingame to different values in the savegame and vv. */
 
#define SLE_WRITEBYTE(base, variable) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, 0)
 

	
 
#define SLE_VEH_INCLUDE() {SL_VEH_INCLUDE, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, 0, [] (void *b, size_t) { return b; }, 0}
 
#define SLE_ST_INCLUDE() {SL_ST_INCLUDE, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, 0, [] (void *b, size_t) { return b; }, 0}
 
@@ -794,13 +791,13 @@ using SaveLoadTable = span<const SaveLoa
 
/**
 
 * Empty global space in some savegame versions.
 
 * @param length Length of the empty space.
 
 * @param from   First savegame version that has the empty space.
 
 * @param to     Last savegame version that has the empty space.
 
 */
 
#define SLEG_CONDNULL(length, from, to) {SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, 0, nullptr, 0}
 
#define SLEG_CONDNULL(length, from, to) {SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL, length, from, to, 0, nullptr, 0}
 

	
 
/**
 
 * Checks whether the savegame is below \a major.\a minor.
 
 * @param major Major number of the version to check against.
 
 * @param minor Minor number of the version to check against. If \a minor is 0 or not specified, only the major number is checked.
 
 * @return Savegame version is earlier than the specified version.
src/script/api/script_gamesettings.cpp
Show inline comments
 
@@ -32,13 +32,13 @@
 
/* static */ bool ScriptGameSettings::SetValue(const char *setting, int value)
 
{
 
	if (!IsValid(setting)) return false;
 

	
 
	const SettingDesc *sd = GetSettingFromName(setting);
 

	
 
	if ((sd->save.conv & SLF_NO_NETWORK_SYNC) != 0) return false;
 
	if ((sd->flags & SF_NO_NETWORK_SYNC) != 0) return false;
 

	
 
	return ScriptObject::DoCommand(0, 0, value, CMD_CHANGE_SETTING, sd->name);
 
}
 

	
 
/* static */ bool ScriptGameSettings::IsDisabledVehicleType(ScriptVehicle::VehicleType vehicle_type)
 
{
src/settings.cpp
Show inline comments
 
@@ -588,13 +588,13 @@ static void IniSaveSettings(IniFile *ini
 
	char buf[512];
 

	
 
	for (auto &sd : settings_table) {
 
		/* If the setting is not saved to the configuration
 
		 * file, just continue with the next setting */
 
		if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue;
 
		if (sd->save.conv & SLF_NOT_IN_CONFIG) continue;
 
		if (sd->flags & SF_NOT_IN_CONFIG) continue;
 

	
 
		/* XXX - wtf is this?? (group override?) */
 
		std::string s{ sd->name };
 
		auto sc = s.find('.');
 
		if (sc != std::string::npos) {
 
			group = ini->GetGroup(s.substr(0, sc));
 
@@ -738,13 +738,13 @@ void IniSaveWindowSettings(IniFile *ini,
 
 * Check whether the setting is editable in the current gamemode.
 
 * @param do_command true if this is about checking a command from the server.
 
 * @return true if editable.
 
 */
 
bool SettingDesc::IsEditable(bool do_command) const
 
{
 
	if (!do_command && !(this->save.conv & SLF_NO_NETWORK_SYNC) && _networking && !_network_server && !(this->flags & SF_PER_COMPANY)) return false;
 
	if (!do_command && !(this->flags & SF_NO_NETWORK_SYNC) && _networking && !_network_server && !(this->flags & SF_PER_COMPANY)) return false;
 
	if ((this->flags & SF_NETWORK_ONLY) && !_networking && _game_mode != GM_MENU) return false;
 
	if ((this->flags & SF_NO_NETWORK) && _networking) return false;
 
	if ((this->flags & SF_NEWGAME_ONLY) &&
 
			(_game_mode == GM_NORMAL ||
 
			(_game_mode == GM_EDITOR && !(this->flags & SF_SCENEDIT_TOO)))) return false;
 
	if ((this->flags & SF_SCENEDIT_ONLY) && _game_mode != GM_EDITOR) return false;
 
@@ -755,13 +755,13 @@ bool SettingDesc::IsEditable(bool do_com
 
 * Return the type of the setting.
 
 * @return type of setting
 
 */
 
SettingType SettingDesc::GetType() const
 
{
 
	if (this->flags & SF_PER_COMPANY) return ST_COMPANY;
 
	return (this->save.conv & SLF_NOT_IN_SAVE) ? ST_CLIENT : ST_GAME;
 
	return (this->flags & SF_NOT_IN_SAVE) ? ST_CLIENT : ST_GAME;
 
}
 

	
 
/**
 
 * Get the setting description of this setting as an integer setting.
 
 * @return The integer setting description.
 
 */
 
@@ -1841,13 +1841,13 @@ bool SetSettingValue(const IntSettingDes
 
	}
 

	
 
	/* If an item is company-based, we do not send it over the network
 
	 * (if any) to change. Also *hack*hack* we update the _newgame version
 
	 * of settings because changing a company-based setting in a game also
 
	 * changes its defaults. At least that is the convention we have chosen */
 
	if (setting->save.conv & SLF_NO_NETWORK_SYNC) {
 
	if (setting->flags & SF_NO_NETWORK_SYNC) {
 
		if (_game_mode != GM_MENU) {
 
			setting->ChangeValue(&_settings_newgame, value);
 
		}
 
		setting->ChangeValue(&GetGameSettings(), value);
 
		return true;
 
	}
 
@@ -1896,13 +1896,13 @@ void SyncCompanySettings()
 
 * @param value the value to write
 
 * @param force_newgame force the newgame settings
 
 * @note Strings WILL NOT be synced over the network
 
 */
 
bool SetSettingValue(const StringSettingDesc *sd, std::string value, bool force_newgame)
 
{
 
	assert(sd->save.conv & SLF_NO_NETWORK_SYNC);
 
	assert(sd->flags & SF_NO_NETWORK_SYNC);
 

	
 
	if (GetVarMemType(sd->save.conv) == SLE_VAR_STRQ && value.compare("(null)") == 0) {
 
		value.clear();
 
	}
 

	
 
	const void *object = (_game_mode == GM_MENU || force_newgame) ? &_settings_newgame : &_settings_game;
 
@@ -2020,16 +2020,16 @@ void IConsoleListSettings(const char *pr
 
 * @param object can be either nullptr in which case we load global variables or
 
 * a pointer to a struct which is getting saved
 
 */
 
static void LoadSettings(const SettingTable &settings, void *object)
 
{
 
	for (auto &osd : settings) {
 
		if (osd->save.conv & SLF_NOT_IN_SAVE) continue;
 
		if (osd->flags & SF_NOT_IN_SAVE) continue;
 

	
 
		SaveLoad sl = osd->save;
 
		if ((osd->save.conv & SLF_NO_NETWORK_SYNC) && _networking && !_network_server) {
 
		if ((osd->flags & SF_NO_NETWORK_SYNC) && _networking && !_network_server) {
 
			/* We don't want to read this setting, so we do need to skip over it. */
 
			sl = SLE_NULL(static_cast<uint16>(SlCalcConvMemLen(osd->save.conv) * osd->save.length));
 
		}
 

	
 
		void *ptr = GetVariableAddress(object, sl);
 
		if (!SlObjectMember(ptr, sl)) continue;
 
@@ -2050,20 +2050,20 @@ static void LoadSettings(const SettingTa
 
static void SaveSettings(const SettingTable &settings, void *object)
 
{
 
	/* We need to write the CH_RIFF header, but unfortunately can't call
 
	 * SlCalcLength() because we have a different format. So do this manually */
 
	size_t length = 0;
 
	for (auto &sd : settings) {
 
		if (sd->save.conv & SLF_NOT_IN_SAVE) continue;
 
		if (sd->flags & SF_NOT_IN_SAVE) continue;
 

	
 
		length += SlCalcObjMemberLength(object, sd->save);
 
	}
 
	SlSetLength(length);
 

	
 
	for (auto &sd : settings) {
 
		if (sd->save.conv & SLF_NOT_IN_SAVE) continue;
 
		if (sd->flags & SF_NOT_IN_SAVE) continue;
 

	
 
		void *ptr = GetVariableAddress(object, sd->save);
 
		SlObjectMember(ptr, sd->save);
 
	}
 
}
 

	
src/settings_internal.h
Show inline comments
 
@@ -11,22 +11,25 @@
 
#define SETTINGS_INTERNAL_H
 

	
 
#include "saveload/saveload.h"
 

	
 
enum SettingFlag : uint16 {
 
	SF_NONE = 0,
 
	SF_GUI_0_IS_SPECIAL        = 1 << 0, ///< A value of zero is possible and has a custom string (the one after "strval").
 
	SF_GUI_NEGATIVE_IS_SPECIAL = 1 << 1, ///< A negative value has another string (the one after "strval").
 
	SF_GUI_DROPDOWN            = 1 << 2, ///< The value represents a limited number of string-options (internally integer) presented as dropdown.
 
	SF_GUI_CURRENCY            = 1 << 3, ///< The number represents money, so when reading value multiply by exchange rate.
 
	SF_NETWORK_ONLY            = 1 << 4, ///< This setting only applies to network games.
 
	SF_NO_NETWORK              = 1 << 5, ///< This setting does not apply to network games; it may not be changed during the game.
 
	SF_NEWGAME_ONLY            = 1 << 6, ///< This setting cannot be changed in a game.
 
	SF_SCENEDIT_TOO            = 1 << 7, ///< This setting can be changed in the scenario editor (only makes sense when SF_NEWGAME_ONLY is set).
 
	SF_SCENEDIT_ONLY           = 1 << 8, ///< This setting can only be changed in the scenario editor.
 
	SF_PER_COMPANY             = 1 << 9, ///< This setting can be different for each company (saved in company struct).
 
	SF_GUI_0_IS_SPECIAL        = 1 <<  0, ///< A value of zero is possible and has a custom string (the one after "strval").
 
	SF_GUI_NEGATIVE_IS_SPECIAL = 1 <<  1, ///< A negative value has another string (the one after "strval").
 
	SF_GUI_DROPDOWN            = 1 <<  2, ///< The value represents a limited number of string-options (internally integer) presented as dropdown.
 
	SF_GUI_CURRENCY            = 1 <<  3, ///< The number represents money, so when reading value multiply by exchange rate.
 
	SF_NETWORK_ONLY            = 1 <<  4, ///< This setting only applies to network games.
 
	SF_NO_NETWORK              = 1 <<  5, ///< This setting does not apply to network games; it may not be changed during the game.
 
	SF_NEWGAME_ONLY            = 1 <<  6, ///< This setting cannot be changed in a game.
 
	SF_SCENEDIT_TOO            = 1 <<  7, ///< This setting can be changed in the scenario editor (only makes sense when SF_NEWGAME_ONLY is set).
 
	SF_SCENEDIT_ONLY           = 1 <<  8, ///< This setting can only be changed in the scenario editor.
 
	SF_PER_COMPANY             = 1 <<  9, ///< This setting can be different for each company (saved in company struct).
 
	SF_NOT_IN_SAVE             = 1 << 10, ///< Do not save with savegame, basically client-based.
 
	SF_NOT_IN_CONFIG           = 1 << 11, ///< Do not save to config file.
 
	SF_NO_NETWORK_SYNC         = 1 << 12, ///< Do not synchronize over network (but it is saved if SF_NOT_IN_SAVE is not set).
 
};
 
DECLARE_ENUM_AS_BIT_SET(SettingFlag)
 

	
 
/**
 
 * A SettingCategory defines a grouping of the settings.
 
 * The group #SC_BASIC is intended for settings which also a novice player would like to change and is able to understand.
 
@@ -285,13 +288,13 @@ struct ListSettingDesc : SettingDesc {
 
	bool IsSameValue(const IniItem *item, void *object) const override;
 
};
 

	
 
/** Placeholder for settings that have been removed, but might still linger in the savegame. */
 
struct NullSettingDesc : SettingDesc {
 
	NullSettingDesc(SaveLoad save) :
 
		SettingDesc(save, "", SF_NONE, false) {}
 
		SettingDesc(save, "", SF_NOT_IN_CONFIG, false) {}
 
	virtual ~NullSettingDesc() {}
 

	
 
	void FormatValue(char *buf, const char *last, const void *object) const override { NOT_REACHED(); }
 
	void ParseValue(const IniItem *item, void *object) const override { NOT_REACHED(); }
 
	bool IsSameValue(const IniItem *item, void *object) const override { NOT_REACHED(); }
 
};
src/table/settings.h.preamble
Show inline comments
 
@@ -55,65 +55,65 @@ static size_t ConvertLandscape(const cha
 
 */
 

	
 
#define NSD(type, ...) std::unique_ptr<const SettingDesc>(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, guiflags, var, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(Int, SLEG_GENERAL(SL_VAR, var, type | flags, 1, from, to, extra), name, guiflags, startup, def, min, max, interval, str, strhelp, strval, cat, pre_check, post_callback)
 
#define SDTG_VAR(name, type, flags, var, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(Int, SLEG_GENERAL(SL_VAR, var, type, 1, from, to, extra), name, flags, startup, def, min, max, interval, str, strhelp, strval, cat, pre_check, post_callback)
 

	
 
#define SDTG_BOOL(name, flags, guiflags, var, def, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(Bool, SLEG_GENERAL(SL_VAR, var, SLE_BOOL | flags, 1, from, to, extra), name, guiflags, startup, def, str, strhelp, strval, cat, pre_check, post_callback)
 
#define SDTG_BOOL(name, flags, var, def, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(Bool, SLEG_GENERAL(SL_VAR, var, SLE_BOOL, 1, from, to, extra), name, flags, startup, def, str, strhelp, strval, cat, pre_check, post_callback)
 

	
 
#define SDTG_LIST(name, type, flags, guiflags, var, def, length, from, to, cat, extra, startup)\
 
	NSD(List, SLEG_GENERAL(SL_ARR, var, type | flags, length, from, to, extra), name, guiflags, startup, def)
 
#define SDTG_LIST(name, type, flags, var, def, length, from, to, cat, extra, startup)\
 
	NSD(List, SLEG_GENERAL(SL_ARR, var, type, length, from, to, extra), name, flags, startup, def)
 

	
 
#define SDTG_SSTR(name, type, flags, guiflags, var, def, max_length, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(String, SLEG_GENERAL(SL_STDSTR, var, type | flags, sizeof(var), from, to, extra), name, guiflags, startup, def, max_length, pre_check, post_callback)
 
#define SDTG_SSTR(name, type, flags, var, def, max_length, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(String, SLEG_GENERAL(SL_STDSTR, var, type, sizeof(var), from, to, extra), name, flags, startup, def, max_length, pre_check, post_callback)
 

	
 
#define SDTG_OMANY(name, type, flags, guiflags, var, def, max, full, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(OneOfMany, SLEG_GENERAL(SL_VAR, var, type | flags, 1, from, to, extra), name, guiflags, startup, def, max, str, strhelp, strval, cat, pre_check, post_callback, full, nullptr)
 
#define SDTG_OMANY(name, type, flags, var, def, max, full, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(OneOfMany, SLEG_GENERAL(SL_VAR, var, type, 1, from, to, extra), name, flags, startup, def, max, str, strhelp, strval, cat, pre_check, post_callback, full, nullptr)
 

	
 
#define SDTG_MMANY(name, type, flags, guiflags, var, def, full, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(ManyOfMany, SLEG_GENERAL(SL_VAR, var, type | flags, 1, from, to, extra), name, guiflags, startup, def, str, strhelp, strval, cat, pre_check, post_callback, full, nullptr)
 
#define SDTG_MMANY(name, type, flags, var, def, full, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(ManyOfMany, SLEG_GENERAL(SL_VAR, var, type, 1, from, to, extra), name, flags, startup, def, str, strhelp, strval, cat, pre_check, post_callback, full, nullptr)
 

	
 
#define SDTG_NULL(length, from, to)\
 
	NSD(Null, SLEG_NULL(length, from, to))
 

	
 
/* 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, guiflags, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(Int, SLE_GENERAL(SL_VAR, base, var, type | flags, 1, from, to, extra), #var, guiflags, startup, def, min, max, interval, str, strhelp, strval, cat, pre_check, post_callback)
 
#define SDT_VAR(base, var, type, flags, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(Int, SLE_GENERAL(SL_VAR, base, var, type, 1, from, to, extra), #var, flags, startup, def, min, max, interval, str, strhelp, strval, cat, pre_check, post_callback)
 

	
 
#define SDT_BOOL(base, var, flags, guiflags, def, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(Bool, SLE_GENERAL(SL_VAR, base, var, SLE_BOOL | flags, 1, from, to, extra), #var, guiflags, startup, def, str, strhelp, strval, cat, pre_check, post_callback)
 
#define SDT_BOOL(base, var, flags, def, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(Bool, SLE_GENERAL(SL_VAR, base, var, SLE_BOOL, 1, from, to, extra), #var, flags, startup, def, str, strhelp, strval, cat, pre_check, post_callback)
 

	
 
#define SDT_LIST(base, var, type, flags, guiflags, def, from, to, cat, extra, startup)\
 
	NSD(List, SLE_GENERAL(SL_ARR, base, var, type | flags, lengthof(((base*)8)->var), from, to, extra), #var, guiflags, startup, def)
 
#define SDT_LIST(base, var, type, flags, def, from, to, cat, extra, startup)\
 
	NSD(List, SLE_GENERAL(SL_ARR, base, var, type, lengthof(((base*)8)->var), from, to, extra), #var, flags, startup, def)
 

	
 
#define SDT_SSTR(base, var, type, flags, guiflags, def, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(String, SLE_GENERAL(SL_STDSTR, base, var, type | flags, sizeof(((base*)8)->var), from, to, extra), #var, guiflags, startup, def, 0, pre_check, post_callback)
 
#define SDT_SSTR(base, var, type, flags, def, pre_check, post_callback, from, to, cat, extra, startup)\
 
	NSD(String, SLE_GENERAL(SL_STDSTR, base, var, type, sizeof(((base*)8)->var), from, to, extra), #var, flags, startup, def, 0, pre_check, post_callback)
 

	
 
#define SDT_OMANY(base, var, type, flags, guiflags, def, max, full, str, strhelp, strval, pre_check, post_callback, from, to, load, cat, extra, startup)\
 
	NSD(OneOfMany, SLE_GENERAL(SL_VAR, base, var, type | flags, 1, from, to, extra), #var, guiflags, startup, def, max, str, strhelp, strval, cat, pre_check, post_callback, full, load)
 
#define SDT_OMANY(base, var, type, flags, def, max, full, str, strhelp, strval, pre_check, post_callback, from, to, load, cat, extra, startup)\
 
	NSD(OneOfMany, SLE_GENERAL(SL_VAR, base, var, type, 1, from, to, extra), #var, flags, startup, def, max, str, strhelp, strval, cat, pre_check, post_callback, full, load)
 

	
 
#define SDT_MMANY(base, var, type, flags, guiflags, def, full, str, pre_check, post_callback, strhelp, strval, from, to, cat, extra, startup)\
 
	NSD(ManyOfMany, SLE_GENERAL(SL_VAR, base, var, type | flags, 1, from, to, extra), #var, guiflags, startup, def, str, strhelp, strval, cat, pre_check, post_callback, full, nullptr)
 
#define SDT_MMANY(base, var, type, flags, def, full, str, pre_check, post_callback, strhelp, strval, from, to, cat, extra, startup)\
 
	NSD(ManyOfMany, SLE_GENERAL(SL_VAR, base, var, type, 1, from, to, extra), #var, flags, startup, def, str, strhelp, strval, cat, pre_check, post_callback, full, nullptr)
 

	
 
#define SDT_NULL(length, from, to)\
 
	NSD(Null, SLE_CONDNULL(length, from, to))
 

	
 

	
 
#define SDTC_VAR(var, type, flags, guiflags, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	SDTG_VAR(#var, type, flags, guiflags, _settings_client.var, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)
 
#define SDTC_VAR(var, type, flags, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	SDTG_VAR(#var, type, flags, _settings_client.var, def, min, max, interval, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)
 

	
 
#define SDTC_BOOL(var, flags, guiflags, def, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	SDTG_BOOL(#var, flags, guiflags, _settings_client.var, def, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)
 
#define SDTC_BOOL(var, flags, def, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	SDTG_BOOL(#var, flags, _settings_client.var, def, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)
 

	
 
#define SDTC_LIST(var, type, flags, guiflags, def, from, to, cat, extra, startup)\
 
	SDTG_LIST(#var, type, flags, guiflags, _settings_client.var, def, lengthof(_settings_client.var), from, to, cat, extra, startup)
 
#define SDTC_LIST(var, type, flags, def, from, to, cat, extra, startup)\
 
	SDTG_LIST(#var, type, flags, _settings_client.var, def, lengthof(_settings_client.var), from, to, cat, extra, startup)
 

	
 
#define SDTC_SSTR(var, type, flags, guiflags, def, max_length, pre_check, post_callback, from, to, cat, extra, startup)\
 
	SDTG_SSTR(#var, type, flags, guiflags, _settings_client.var, def, max_length, pre_check, post_callback, from, to, cat, extra, startup)\
 
#define SDTC_SSTR(var, type, flags, def, max_length, pre_check, post_callback, from, to, cat, extra, startup)\
 
	SDTG_SSTR(#var, type, flags, _settings_client.var, def, max_length, pre_check, post_callback, from, to, cat, extra, startup)\
 

	
 
#define SDTC_OMANY(var, type, flags, guiflags, def, max, full, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	SDTG_OMANY(#var, type, flags, guiflags, _settings_client.var, def, max, full, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)
 
#define SDTC_OMANY(var, type, flags, def, max, full, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)\
 
	SDTG_OMANY(#var, type, flags, _settings_client.var, def, max, full, str, strhelp, strval, pre_check, post_callback, from, to, cat, extra, startup)
src/table/settings/company_settings.ini
Show inline comments
 
@@ -13,21 +13,20 @@ static bool CanUpdateServiceInterval(Veh
 
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),
 
SDT_BOOL = SDT_BOOL(CompanySettings, $var,        $flags, $def,                        $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
 
SDT_VAR  =  SDT_VAR(CompanySettings, $var, $type, $flags, $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 = SF_PER_COMPANY
 
flags    = SF_PER_COMPANY
 
interval = 0
 
str      = STR_NULL
 
strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
 
strval   = STR_NULL
 
pre_cb   = nullptr
 
post_cb  = nullptr
 
@@ -47,24 +46,24 @@ str      = STR_CONFIG_SETTING_AUTORENEW_
 
strhelp  = STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = engine_renew_months
 
type     = SLE_INT16
 
guiflags = SF_PER_COMPANY | SF_GUI_NEGATIVE_IS_SPECIAL
 
flags    = SF_PER_COMPANY | SF_GUI_NEGATIVE_IS_SPECIAL
 
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 = SF_PER_COMPANY | SF_GUI_CURRENCY
 
flags    = SF_PER_COMPANY | SF_GUI_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
 
@@ -80,52 +79,52 @@ str      = STR_CONFIG_SETTING_SERVINT_IS
 
strhelp  = STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT
 
post_cb  = UpdateServiceInterval
 

	
 
[SDT_VAR]
 
var      = vehicle.servint_trains
 
type     = SLE_UINT16
 
guiflags = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
 
flags    = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
 
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 = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
 
flags    = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
 
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 = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
 
flags    = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
 
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 = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
 
flags    = SF_PER_COMPANY | SF_GUI_0_IS_SPECIAL
 
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
src/table/settings/currency_settings.ini
Show inline comments
 
@@ -8,21 +8,20 @@
 

	
 
[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),
 
SDT_VAR  = SDT_VAR (CurrencySpec, $var, $type, $flags, $def, $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
 
SDT_SSTR = SDT_SSTR(CurrencySpec, $var, $type, $flags, $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 = SF_NONE
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
interval = 0
 
str      = STR_NULL
 
strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
 
strval   = STR_NULL
 
pre_cb   = nullptr
 
post_cb  = nullptr
src/table/settings/gameopt_settings.ini
Show inline comments
 
@@ -43,30 +43,29 @@ static const SettingTable _gameopt_setti
 
 * 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),
 
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, $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),
 
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    = 0
 
guiflags = SF_NONE
 
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
 
@@ -81,55 +80,54 @@ 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
 
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    = SLF_NOT_IN_CONFIG
 
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    = SLF_NOT_IN_CONFIG
 
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    = SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_CONFIG
 
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
 
@@ -169,14 +167,13 @@ to       = SLV_165
 
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
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = 1
 
max      = 4
 
full     = _autosave_interval
 
cat      = SC_BASIC
 

	
 
[SDT_OMANY]
src/table/settings/misc_settings.ini
Show inline comments
 
@@ -21,26 +21,25 @@ extern bool _allow_hidpi_window;
 
#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),
 
SDTG_LIST  =  SDTG_LIST($name, $type, $flags, $var, $def,       $length,                                                            $from, $to, $cat, $extra, $startup),
 
SDTG_MMANY = SDTG_MMANY($name, $type, $flags, $var, $def,                        $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),
 
SDTG_SSTR  =  SDTG_SSTR($name, $type, $flags, $var, $def,       0,                                               $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
 
SDTG_BOOL  =  SDTG_BOOL($name,        $flags, $var, $def,                               $str, $strhelp, $strval, $pre_cb, $post_cb, $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),
 

	
 
[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 = SF_NONE
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
interval = 0
 
str      = STR_NULL
 
strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
 
strval   = STR_NULL
 
pre_cb   = nullptr
 
post_cb  = nullptr
src/table/settings/settings.ini
Show inline comments
 
@@ -50,37 +50,36 @@ static void UpdateClientConfigValues();
 
 * 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),
 
SDTG_BOOL  =  SDTG_BOOL($name,                     $flags, $var, $def,                        $str, $strhelp, $strval, $pre_cb, $post_cb, $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),
 
SDTG_OMANY = SDTG_OMANY($name,              $type, $flags, $var, $def,       $max, $full,     $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
 
SDTC_BOOL  =  SDTC_BOOL(              $var,        $flags, $def,                              $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
 
SDTC_LIST  =  SDTC_LIST(              $var, $type, $flags, $def,                                                                          $from, $to,        $cat, $extra, $startup),
 
SDTC_OMANY = SDTC_OMANY(              $var, $type, $flags, $def,             $max, $full,     $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
 
SDTC_SSTR  =  SDTC_SSTR(              $var, $type, $flags, $def,             $length,                                  $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
 
SDTC_VAR   =   SDTC_VAR(              $var, $type, $flags, $def,       $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
 
SDT_BOOL   =   SDT_BOOL(GameSettings, $var,        $flags, $def,                              $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_SSTR   =   SDT_SSTR(GameSettings, $var, $type, $flags, $def,                                                       $pre_cb, $post_cb, $from, $to,        $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),
 
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 = SF_NONE
 
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
 
@@ -116,25 +115,25 @@ min      = 0
 
max      = 3
 

	
 
[SDT_VAR]
 
var      = difficulty.number_towns
 
type     = SLE_UINT8
 
from     = SLV_97
 
guiflags = SF_NEWGAME_ONLY
 
flags    = SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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
 
@@ -142,13 +141,13 @@ strval   = STR_FUNDING_ONLY
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = difficulty.max_loan
 
type     = SLE_UINT32
 
from     = SLV_97
 
guiflags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_CURRENCY
 
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_CURRENCY
 
def      = 300000
 
min      = 0
 
max      = 2000000000
 
interval = 50000
 
str      = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN
 
strhelp  = STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT
 
@@ -156,26 +155,26 @@ strval   = STR_JUST_CURRENCY_LONG
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = difficulty.initial_interest
 
type     = SLE_UINT8
 
from     = SLV_97
 
guiflags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
 
flags    = SF_NEWGAME_ONLY | SF_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 = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN
 
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN
 
def      = 0
 
min      = 0
 
max      = 2
 
interval = 1
 
str      = STR_CONFIG_SETTING_RUNNING_COSTS
 
strhelp  = STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT
 
@@ -183,13 +182,13 @@ strval   = STR_SEA_LEVEL_LOW
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = difficulty.competitor_speed
 
type     = SLE_UINT8
 
from     = SLV_97
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = 2
 
min      = 0
 
max      = 4
 
interval = 1
 
str      = STR_CONFIG_SETTING_CONSTRUCTION_SPEED
 
strhelp  = STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT
 
@@ -206,13 +205,13 @@ min      = 0
 
max      = 2
 

	
 
[SDT_VAR]
 
var      = difficulty.vehicle_breakdowns
 
type     = SLE_UINT8
 
from     = SLV_97
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = 1
 
min      = 0
 
max      = 2
 
interval = 1
 
str      = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS
 
strhelp  = STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT
 
@@ -220,26 +219,26 @@ strval   = STR_DISASTER_NONE
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = difficulty.subsidy_multiplier
 
type     = SLE_UINT8
 
from     = SLV_97
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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 = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN
 
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_DROPDOWN
 
def      = 0
 
min      = 0
 
max      = 2
 
interval = 1
 
str      = STR_CONFIG_SETTING_CONSTRUCTION_COSTS
 
strhelp  = STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT
 
@@ -247,13 +246,13 @@ strval   = STR_SEA_LEVEL_LOW
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = difficulty.terrain_type
 
type     = SLE_UINT8
 
from     = SLV_97
 
guiflags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
 
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
 
def      = 1
 
min      = 0
 
max      = 5
 
interval = 1
 
str      = STR_CONFIG_SETTING_TERRAIN_TYPE
 
strhelp  = STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT
 
@@ -261,13 +260,13 @@ strval   = STR_TERRAIN_TYPE_VERY_FLAT
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = difficulty.quantity_sea_lakes
 
type     = SLE_UINT8
 
from     = SLV_97
 
guiflags = SF_NEWGAME_ONLY
 
flags    = SF_NEWGAME_ONLY
 
def      = 0
 
min      = 0
 
max      = 4
 
interval = 1
 
strval   = STR_SEA_LEVEL_VERY_LOW
 
cat      = SC_BASIC
 
@@ -295,13 +294,13 @@ strhelp  = STR_CONFIG_SETTING_DISASTERS_
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = difficulty.town_council_tolerance
 
type     = SLE_UINT8
 
from     = SLV_97
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = 0
 
min      = 0
 
max      = 2
 
interval = 1
 
str      = STR_CONFIG_SETTING_CITY_APPROVAL
 
strhelp  = STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT
 
@@ -309,13 +308,13 @@ 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
 
flags    = SF_NOT_IN_CONFIG
 
from     = SLV_97
 
to       = SLV_178
 
def      = 3
 
min      = 0
 
max      = 3
 
cat      = SC_BASIC
 
@@ -323,23 +322,23 @@ 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 = SF_NO_NETWORK
 
flags    = SF_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 = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
 
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
 
def      = 0
 
max      = 3
 
full     = _climates
 
load     = ConvertLandscape
 
str      = STR_CONFIG_SETTING_LANDSCAPE
 
strhelp  = STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT
 
@@ -353,13 +352,13 @@ from     = SLV_97
 
to       = SLV_164
 

	
 
[SDT_OMANY]
 
var      = vehicle.road_side
 
type     = SLE_UINT8
 
from     = SLV_97
 
guiflags = SF_GUI_DROPDOWN | SF_NO_NETWORK
 
flags    = SF_GUI_DROPDOWN | SF_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
 
@@ -369,13 +368,13 @@ cat      = SC_BASIC
 
; Construction
 

	
 
[SDT_VAR]
 
var      = construction.map_height_limit
 
type     = SLE_UINT8
 
from     = SLV_194
 
guiflags = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_0_IS_SPECIAL
 
flags    = SF_NEWGAME_ONLY | SF_SCENEDIT_TOO | SF_GUI_0_IS_SPECIAL
 
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
 
@@ -385,29 +384,29 @@ post_cb  = [](auto) { InvalidateWindowCl
 
cat      = SC_ADVANCED
 

	
 
[SDT_VAR]
 
var      = game_creation.heightmap_height
 
type     = SLE_UINT8
 
from     = SLV_MAPGEN_SETTINGS_REVAMP
 
guiflags = SF_NEWGAME_ONLY
 
flags    = SF_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 = SF_NO_NETWORK
 
flags    = SF_NO_NETWORK
 
def      = true
 
cat      = SC_EXPERT
 

	
 
[SDT_VAR]
 
var      = construction.command_pause_level
 
type     = SLE_UINT8
 
from     = SLV_154
 
guiflags = SF_GUI_DROPDOWN | SF_NO_NETWORK
 
flags    = SF_GUI_DROPDOWN | SF_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
 
@@ -488,26 +487,26 @@ str      = STR_CONFIG_SETTING_EXTRADYNAM
 
strhelp  = STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT
 

	
 
[SDT_VAR]
 
var      = construction.max_bridge_length
 
type     = SLE_UINT16
 
from     = SLV_159
 
guiflags = SF_NO_NETWORK
 
flags    = SF_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 = SF_NO_NETWORK
 
flags    = SF_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
 
@@ -515,13 +514,13 @@ strval   = STR_JUST_COMMA
 
cat      = SC_EXPERT
 

	
 
[SDT_VAR]
 
var      = construction.max_tunnel_length
 
type     = SLE_UINT16
 
from     = SLV_159
 
guiflags = SF_NO_NETWORK
 
flags    = SF_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
 
@@ -532,56 +531,56 @@ strval   = STR_CONFIG_SETTING_TILE_LENGT
 
length   = 1
 
to       = SLV_159
 

	
 
[SDT_VAR]
 
var      = construction.train_signal_side
 
type     = SLE_UINT8
 
guiflags = SF_GUI_DROPDOWN | SF_NO_NETWORK
 
flags    = SF_GUI_DROPDOWN | SF_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 = SF_NO_NETWORK
 
flags    = SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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 = SF_NO_NETWORK
 
flags    = SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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
 
@@ -589,22 +588,22 @@ strval   = STR_CONFIG_SETTING_TOWN_FOUND
 
post_cb  = TownFoundingChanged
 
cat      = SC_BASIC
 

	
 
[SDT_BOOL]
 
var      = economy.allow_town_level_crossings
 
from     = SLV_143
 
guiflags = SF_NO_NETWORK
 
flags    = SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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
 
@@ -641,13 +640,13 @@ extra    = offsetof(LinkGraphSettings, r
 

	
 

	
 
[SDT_VAR]
 
var      = linkgraph.distribution_pax
 
type     = SLE_UINT8
 
from     = SLV_183
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = DT_MANUAL
 
min      = DT_MIN
 
max      = DT_MAX
 
interval = 1
 
str      = STR_CONFIG_SETTING_DISTRIBUTION_PAX
 
strval   = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL
 
@@ -656,13 +655,13 @@ extra    = offsetof(LinkGraphSettings, d
 

	
 

	
 
[SDT_VAR]
 
var      = linkgraph.distribution_mail
 
type     = SLE_UINT8
 
from     = SLV_183
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = DT_MANUAL
 
min      = DT_MIN
 
max      = DT_MAX
 
interval = 1
 
str      = STR_CONFIG_SETTING_DISTRIBUTION_MAIL
 
strval   = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL
 
@@ -671,13 +670,13 @@ extra    = offsetof(LinkGraphSettings, d
 

	
 

	
 
[SDT_VAR]
 
var      = linkgraph.distribution_armoured
 
type     = SLE_UINT8
 
from     = SLV_183
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = DT_MANUAL
 
min      = DT_MIN
 
max      = DT_MAX
 
interval = 1
 
str      = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED
 
strval   = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL
 
@@ -686,13 +685,13 @@ extra    = offsetof(LinkGraphSettings, d
 

	
 

	
 
[SDT_VAR]
 
var      = linkgraph.distribution_default
 
type     = SLE_UINT8
 
from     = SLV_183
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = DT_MANUAL
 
min      = DT_BEGIN
 
max      = DT_MAX_NONSYMMETRIC
 
interval = 1
 
str      = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT
 
strval   = STR_CONFIG_SETTING_DISTRIBUTION_MANUAL
 
@@ -758,13 +757,13 @@ extra    = offsetof(LinkGraphSettings, s
 

	
 
; Vehicles
 

	
 
[SDT_VAR]
 
var      = vehicle.train_acceleration_model
 
type     = SLE_UINT8
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = 1
 
min      = 0
 
max      = 1
 
interval = 1
 
str      = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL
 
strhelp  = STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT
 
@@ -772,13 +771,13 @@ strval   = STR_CONFIG_SETTING_ORIGINAL
 
post_cb  = TrainAccelerationModelChanged
 

	
 
[SDT_VAR]
 
var      = vehicle.roadveh_acceleration_model
 
type     = SLE_UINT8
 
from     = SLV_139
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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
 
@@ -840,13 +839,13 @@ length   = 1
 
to       = SLV_159
 

	
 
[SDT_VAR]
 
var      = vehicle.smoke_amount
 
type     = SLE_UINT8
 
from     = SLV_145
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = 1
 
min      = 0
 
max      = 2
 
str      = STR_CONFIG_SETTING_SMOKE_AMOUNT
 
strhelp  = STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT
 
strval   = STR_CONFIG_SETTING_NONE
 
@@ -892,13 +891,13 @@ cat      = SC_EXPERT
 

	
 
##
 
[SDT_VAR]
 
var      = pf.pathfinder_for_trains
 
type     = SLE_UINT8
 
from     = SLV_87
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = 2
 
min      = 1
 
max      = 2
 
interval = 1
 
str      = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS
 
strhelp  = STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT
 
@@ -906,13 +905,13 @@ strval   = STR_CONFIG_SETTING_PATHFINDER
 
cat      = SC_EXPERT
 

	
 
[SDT_VAR]
 
var      = pf.pathfinder_for_roadvehs
 
type     = SLE_UINT8
 
from     = SLV_87
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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
 
@@ -920,26 +919,26 @@ strval   = STR_CONFIG_SETTING_PATHFINDER
 
cat      = SC_EXPERT
 

	
 
[SDT_VAR]
 
var      = pf.pathfinder_for_ships
 
type     = SLE_UINT8
 
from     = SLV_87
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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 = SF_NO_NETWORK
 
flags    = SF_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
 
@@ -988,51 +987,51 @@ strhelp  = STR_CONFIG_SETTING_MAX_SHIPS_
 
strval   = STR_JUST_COMMA
 
post_cb  = MaxVehiclesChanged
 
cat      = SC_BASIC
 

	
 
[SDTG_BOOL]
 
name     = nullptr
 
guiflags = SF_NO_NETWORK
 
flags    = SF_NO_NETWORK
 
var      = _old_vds.servint_ispercent
 
def      = false
 
to       = SLV_120
 

	
 
[SDTG_VAR]
 
name     = nullptr
 
type     = SLE_UINT16
 
guiflags = SF_GUI_0_IS_SPECIAL
 
flags    = SF_GUI_0_IS_SPECIAL
 
var      = _old_vds.servint_trains
 
def      = 150
 
min      = 5
 
max      = 800
 
to       = SLV_120
 

	
 
[SDTG_VAR]
 
name     = nullptr
 
type     = SLE_UINT16
 
guiflags = SF_GUI_0_IS_SPECIAL
 
flags    = SF_GUI_0_IS_SPECIAL
 
var      = _old_vds.servint_roadveh
 
def      = 150
 
min      = 5
 
max      = 800
 
to       = SLV_120
 

	
 
[SDTG_VAR]
 
name     = nullptr
 
type     = SLE_UINT16
 
guiflags = SF_GUI_0_IS_SPECIAL
 
flags    = SF_GUI_0_IS_SPECIAL
 
var      = _old_vds.servint_ships
 
def      = 360
 
min      = 5
 
max      = 800
 
to       = SLV_120
 

	
 
[SDTG_VAR]
 
name     = nullptr
 
type     = SLE_UINT16
 
guiflags = SF_GUI_0_IS_SPECIAL
 
flags    = SF_GUI_0_IS_SPECIAL
 
var      = _old_vds.servint_aircraft
 
def      = 150
 
min      = 5
 
max      = 800
 
to       = SLV_120
 

	
 
@@ -1041,33 +1040,33 @@ var      = order.no_servicing_if_no_brea
 
def      = true
 
str      = STR_CONFIG_SETTING_NOSERVICE
 
strhelp  = STR_CONFIG_SETTING_NOSERVICE_HELPTEXT
 

	
 
[SDT_BOOL]
 
var      = vehicle.wagon_speed_limits
 
guiflags = SF_NO_NETWORK
 
flags    = SF_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 = SF_NO_NETWORK
 
flags    = SF_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 = SF_NO_NETWORK
 
flags    = SF_NO_NETWORK
 
def      = 1
 
min      = 1
 
max      = 255
 
interval = 1
 
str      = STR_CONFIG_SETTING_FREIGHT_TRAINS
 
strhelp  = STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT
 
@@ -1081,33 +1080,33 @@ from     = SLV_67
 
to       = SLV_159
 

	
 
[SDT_VAR]
 
var      = vehicle.plane_speed
 
type     = SLE_UINT8
 
from     = SLV_90
 
guiflags = SF_NO_NETWORK
 
flags    = SF_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 = SF_NO_NETWORK
 
flags    = SF_NO_NETWORK
 
def      = true
 
pre_cb   = CheckDynamicEngines
 
cat      = SC_EXPERT
 

	
 
[SDT_VAR]
 
var      = vehicle.plane_crashes
 
type     = SLE_UINT8
 
from     = SLV_138
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
def      = 2
 
min      = 0
 
max      = 2
 
interval = 1
 
str      = STR_CONFIG_SETTING_PLANE_CRASHES
 
strhelp  = STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT
 
@@ -1124,13 +1123,13 @@ var      = gui.sg_full_load_any
 
from     = SLV_22
 
to       = SLV_93
 
def      = true
 

	
 
[SDT_BOOL]
 
var      = order.improved_load
 
guiflags = SF_NO_NETWORK
 
flags    = SF_NO_NETWORK
 
def      = true
 
cat      = SC_EXPERT
 

	
 
[SDT_BOOL]
 
var      = order.selectgoods
 
def      = true
 
@@ -1182,13 +1181,13 @@ str      = STR_CONFIG_SETTING_SERVE_NEUT
 
strhelp  = STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT
 
post_cb  = StationCatchmentChanged
 

	
 
[SDT_BOOL]
 
var      = order.gradual_loading
 
from     = SLV_40
 
guiflags = SF_NO_NETWORK
 
flags    = SF_NO_NETWORK
 
def      = true
 
cat      = SC_EXPERT
 

	
 
[SDT_BOOL]
 
var      = construction.road_stop_on_town_road
 
from     = SLV_47
 
@@ -1211,13 +1210,13 @@ from     = SLV_62
 
def      = true
 
cat      = SC_EXPERT
 

	
 
[SDT_BOOL]
 
var      = economy.station_noise_level
 
from     = SLV_96
 
guiflags = SF_NO_NETWORK
 
flags    = SF_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]
 
@@ -1228,22 +1227,22 @@ str      = STR_CONFIG_SETTING_DISTANT_JO
 
strhelp  = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT
 
post_cb  = [](auto) { CloseWindowById(WC_SELECT_STATION, 0); }
 

	
 
##
 
[SDT_BOOL]
 
var      = economy.inflation
 
guiflags = SF_NO_NETWORK
 
flags    = SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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
 
@@ -1315,13 +1314,13 @@ str      = STR_CONFIG_SETTING_ALLOW_GIVE
 
strhelp  = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = game_creation.snow_line_height
 
type     = SLE_UINT8
 
guiflags = SF_SCENEDIT_ONLY
 
flags    = SF_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
 
@@ -1329,13 +1328,13 @@ strval   = STR_JUST_COMMA
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = game_creation.snow_coverage
 
type     = SLE_UINT8
 
from     = SLV_MAPGEN_SETTINGS_REVAMP
 
guiflags = SF_NEWGAME_ONLY
 
flags    = SF_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
 
@@ -1343,13 +1342,13 @@ strval   = STR_CONFIG_SETTING_SNOW_COVER
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = game_creation.desert_coverage
 
type     = SLE_UINT8
 
from     = SLV_MAPGEN_SETTINGS_REVAMP
 
guiflags = SF_NEWGAME_ONLY
 
flags    = SF_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
 
@@ -1376,26 +1375,26 @@ length   = 4
 
to       = SLV_105
 

	
 
[SDT_VAR]
 
var      = game_creation.ending_year
 
type     = SLE_INT32
 
from     = SLV_ENDING_YEAR
 
guiflags = SF_GUI_0_IS_SPECIAL
 
flags    = SF_GUI_0_IS_SPECIAL
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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
 
@@ -1435,25 +1434,25 @@ strval   = STR_CONFIG_SETTING_PERCENTAGE
 
cat      = SC_EXPERT
 

	
 
[SDT_VAR]
 
var      = economy.town_growth_rate
 
type     = SLE_UINT8
 
from     = SLV_54
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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 = SF_GUI_0_IS_SPECIAL
 
flags    = SF_GUI_0_IS_SPECIAL
 
def      = 4
 
min      = 0
 
max      = 255
 
interval = 1
 
str      = STR_CONFIG_SETTING_LARGER_TOWNS
 
strhelp  = STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT
 
@@ -1483,13 +1482,13 @@ length   = 1
 
to       = SLV_107
 

	
 
[SDT_OMANY]
 
var      = script.settings_profile
 
type     = SLE_UINT8
 
from     = SLV_178
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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
 
@@ -1528,13 +1527,13 @@ str      = STR_CONFIG_SETTING_AI_BUILDS_
 
strhelp  = STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT
 

	
 
[SDT_VAR]
 
var      = script.script_max_opcode_till_suspend
 
type     = SLE_UINT32
 
from     = SLV_107
 
guiflags = SF_NEWGAME_ONLY
 
flags    = SF_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
 
@@ -1542,13 +1541,13 @@ strval   = STR_JUST_COMMA
 
cat      = SC_EXPERT
 

	
 
[SDT_VAR]
 
var      = script.script_max_memory_megabytes
 
type     = SLE_UINT32
 
from     = SLV_SCRIPT_MEMLIMIT
 
guiflags = SF_NEWGAME_ONLY
 
flags    = SF_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
 
@@ -2116,13 +2115,13 @@ cat      = SC_EXPERT
 

	
 
##
 
[SDT_VAR]
 
var      = game_creation.land_generator
 
type     = SLE_UINT8
 
from     = SLV_30
 
guiflags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
 
flags    = SF_GUI_DROPDOWN | SF_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
 
@@ -2139,26 +2138,26 @@ strval   = STR_CONFIG_SETTING_TILE_LENGT
 
strhelp  = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT
 

	
 
[SDT_VAR]
 
var      = game_creation.tgen_smoothness
 
type     = SLE_UINT8
 
from     = SLV_30
 
guiflags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
 
flags    = SF_GUI_DROPDOWN | SF_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 = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
 
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
 
def      = 0
 
min      = 0
 
max      = 5
 
str      = STR_CONFIG_SETTING_VARIETY
 
strhelp  = STR_CONFIG_SETTING_VARIETY_HELPTEXT
 
strval   = STR_VARIETY_NONE
 
@@ -2173,58 +2172,57 @@ max      = UINT32_MAX
 
cat      = SC_EXPERT
 

	
 
[SDT_VAR]
 
var      = game_creation.tree_placer
 
type     = SLE_UINT8
 
from     = SLV_30
 
guiflags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY | SF_SCENEDIT_TOO
 
flags    = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = 8
 
min      = MIN_MAP_SIZE_BITS
 
max      = MAX_MAP_SIZE_BITS
 
cat      = SC_BASIC
 

	
 
[SDT_BOOL]
 
@@ -2253,26 +2251,26 @@ max      = 5000
 
cat      = SC_BASIC
 

	
 
[SDT_VAR]
 
var      = construction.extra_tree_placement
 
type     = SLE_UINT8
 
from     = SLV_132
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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 = SF_NEWGAME_ONLY
 
flags    = SF_NEWGAME_ONLY
 
def      = MAP_HEIGHT_LIMIT_AUTO_MINIMUM
 
min      = MIN_CUSTOM_TERRAIN_TYPE
 
max      = MAX_MAP_HEIGHT_LIMIT
 
interval = 1
 

	
 
[SDT_VAR]
 
@@ -2303,13 +2301,13 @@ max      = 255
 
cat      = SC_EXPERT
 

	
 
[SDT_VAR]
 
var      = game_creation.amount_of_rivers
 
type     = SLE_UINT8
 
from     = SLV_163
 
guiflags = SF_GUI_DROPDOWN | SF_NEWGAME_ONLY
 
flags    = SF_GUI_DROPDOWN | SF_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
 
@@ -2317,38 +2315,37 @@ strval   = STR_RIVERS_NONE
 
; locale
 

	
 
[SDT_OMANY]
 
var      = locale.currency
 
type     = SLE_UINT8
 
from     = SLV_97
 
flags    = SLF_NO_NETWORK_SYNC
 
flags    = SF_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
 
flags    = SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
def      = 1
 
max      = 3
 
full     = _locale_units
 
post_cb  = [](auto) { MarkWholeScreenDirty(); }
 
cat      = SC_BASIC
 
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY
 
@@ -2356,14 +2353,13 @@ strhelp  = STR_CONFIG_SETTING_LOCALISATI
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
def      = 1
 
max      = 2
 
full     = _locale_units
 
post_cb  = [](auto) { MarkWholeScreenDirty(); }
 
cat      = SC_BASIC
 
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER
 
@@ -2371,14 +2367,13 @@ strhelp  = STR_CONFIG_SETTING_LOCALISATI
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
def      = 1
 
max      = 2
 
full     = _locale_units
 
post_cb  = [](auto) { MarkWholeScreenDirty(); }
 
cat      = SC_BASIC
 
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT
 
@@ -2386,14 +2381,13 @@ strhelp  = STR_CONFIG_SETTING_LOCALISATI
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
def      = 1
 
max      = 2
 
full     = _locale_units
 
post_cb  = [](auto) { MarkWholeScreenDirty(); }
 
cat      = SC_BASIC
 
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME
 
@@ -2401,14 +2395,13 @@ strhelp  = STR_CONFIG_SETTING_LOCALISATI
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
def      = 2
 
max      = 2
 
full     = _locale_units
 
post_cb  = [](auto) { MarkWholeScreenDirty(); }
 
cat      = SC_BASIC
 
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE
 
@@ -2416,14 +2409,13 @@ strhelp  = STR_CONFIG_SETTING_LOCALISATI
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
def      = 1
 
max      = 2
 
full     = _locale_units
 
post_cb  = [](auto) { MarkWholeScreenDirty(); }
 
cat      = SC_BASIC
 
str      = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT
 
@@ -2431,1468 +2423,1396 @@ strhelp  = STR_CONFIG_SETTING_LOCALISATI
 
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
 
flags    = SF_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
 
flags    = SF_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
 
flags    = SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 

	
 
; 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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 

	
 
[SDTC_BOOL]
 
var      = gui.measure_tooltip
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_0_IS_SPECIAL
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
 
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
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
str      = STR_CONFIG_SETTING_OSK_ACTIVATION
 
strhelp  = STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT
 
strval   = STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED
 
guiflags = SF_GUI_DROPDOWN
 
flags    = SF_GUI_DROPDOWN
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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 = SF_GUI_0_IS_SPECIAL
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
 
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 = SF_GUI_0_IS_SPECIAL
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = false
 

	
 
[SDTC_BOOL]
 
var      = gui.autosave_on_exit
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = 16
 
min      = 0
 
max      = 255
 

	
 
[SDTC_BOOL]
 
var      = gui.auto_euro
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = true
 

	
 
[SDTC_VAR]
 
var      = gui.news_message_timeout
 
type     = SLE_UINT8
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = true
 
cat      = SC_BASIC
 

	
 
[SDTC_BOOL]
 
var      = gui.station_show_coverage
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = false
 
cat      = SC_BASIC
 

	
 
[SDTC_BOOL]
 
var      = gui.persistent_buildingtools
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = true
 

	
 
[SDTC_BOOL]
 
ifndef   = DEDICATED
 
var      = gui.show_date_in_logs
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = false
 

	
 
[SDTC_VAR]
 
var      = gui.settings_restriction_mode
 
type     = SLE_UINT8
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
 
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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_0_IS_SPECIAL | SF_NO_NETWORK
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_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
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = nullptr
 
cat      = SC_BASIC
 

	
 
[SDTC_BOOL]
 
var      = music.playing
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = true
 
cat      = SC_BASIC
 

	
 
[SDTC_BOOL]
 
var      = music.shuffle
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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.company_info
 
type     = SLE_UINT8
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_DROPDOWN
 
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
 

	
 
[SDTC_VAR]
 
var      = gui.network_chat_box_width_pct
 
type     = SLE_UINT16
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NOT_IN_CONFIG | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NOT_IN_CONFIG | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
 
def      = true
 

	
 
[SDTC_VAR]
 
var      = network.server_port
 
type     = SLE_UINT16
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
 
def      = true
 
cat      = SC_EXPERT
 

	
 
[SDTC_BOOL]
 
var      = network.server_advertise
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
 
def      = nullptr
 

	
 
[SDTC_BOOL]
 
var      = network.autoclean_companies
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
 
def      = false
 

	
 
[SDTC_VAR]
 
var      = network.autoclean_unprotected
 
type     = SLE_UINT8
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
guiflags = SF_GUI_0_IS_SPECIAL | SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_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 = SF_GUI_0_IS_SPECIAL | SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_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 = SF_GUI_0_IS_SPECIAL | SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_GUI_0_IS_SPECIAL | SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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 = SF_NETWORK_ONLY
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_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
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = """"
 
cat      = SC_EXPERT
 

	
 
[SDTC_BOOL]
 
var      = network.no_http_content_downloads
 
flags    = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
def      = false
 
cat      = SC_EXPERT
src/table/settings/win32_settings.ini
Show inline comments
 
@@ -14,21 +14,20 @@ 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),
 
SDTG_BOOL = SDTG_BOOL($name,        $flags, $var, $def,                        $str, $strhelp, $strval, $pre_cb, $post_cb, $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),
 

	
 
[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 = SF_NONE
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
interval = 0
 
str      = STR_NULL
 
strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
 
strval   = STR_NULL
 
pre_cb   = nullptr
 
post_cb  = nullptr
src/table/settings/window_settings.ini
Show inline comments
 
@@ -10,21 +10,20 @@
 
[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),
 
SDT_BOOL = SDT_BOOL(WindowDesc, $var,        $flags, $def,                        $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
 
SDT_VAR  =  SDT_VAR(WindowDesc, $var, $type, $flags, $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 = SF_NONE
 
flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
 
interval = 0
 
str      = STR_NULL
 
strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
 
strval   = STR_NULL
 
pre_cb   = nullptr
 
post_cb  = nullptr
0 comments (0 inline, 0 general)