OpenTTD Source: src/settings_internal.h File Reference

OpenTTD Source 1.11.0-RC1

Data Structures | Typedefs | Enumerations | Functions
settings_internal.h File Reference
`#include "saveload/saveload.h"`

Go to the source code of this file.

## Data Structures
struct | SettingDescBase
| Properties of config file settings. More...
struct | SettingDesc

## Typedefs
typedef bool | OnChange(int32 var)
| callback prototype on data modification
typedef size_t | OnConvert(const char *value)
| callback prototype for conversion error
typedef SettingDesc | SettingDescGlobVarList

## Enumerations
enum | SettingDescType : byte { SDT_BEGIN = 0, SDT_NUMX = 0, SDT_BOOLX = 1, SDT_ONEOFMANY = 2, SDT_MANYOFMANY = 3, SDT_INTLIST = 4, SDT_STRING = 5, SDT_STDSTRING = 6, SDT_END }
| Convention/Type of settings. More...
enum | SettingGuiFlag : uint16 { SGF_NONE = 0, SGF_0ISDISABLED = 1 << 0, SGF_DISPLAY_ABS = 1 << 1, SGF_MULTISTRING = 1 << 2, SGF_NETWORK_ONLY = 1 << 3, SGF_CURRENCY = 1 << 4, SGF_NO_NETWORK = 1 << 5, SGF_NEWGAME_ONLY = 1 << 6, SGF_SCENEDIT_TOO = 1 << 7, SGF_PER_COMPANY = 1 << 8 }
enum | SettingCategory { SC_NONE = 0, SC_BASIC_LIST = 1 << 0, SC_ADVANCED_LIST = 1 << 1, SC_EXPERT_LIST = 1 << 2, SC_BASIC = SC_BASIC_LIST | SC_ADVANCED_LIST | SC_EXPERT_LIST, SC_ADVANCED = SC_ADVANCED_LIST | SC_EXPERT_LIST, SC_EXPERT = SC_EXPERT_LIST, SC_END }
| A SettingCategory defines a grouping of the settings. More...
enum | SettingType { ST_GAME, ST_COMPANY, ST_CLIENT, ST_ALL }
| Type of settings for filtering. More...

## Functions
const SettingDesc * | GetSettingFromName (const char *name, uint *i)
| Given a name of setting, return a setting description of it. More...
bool | SetSettingValue (uint index, int32 value, bool force_newgame=false)
| Top function to save the new value of an element of the Settings struct. More...
bool | SetSettingValue (uint index, const char *value, bool force_newgame=false)
| Set a setting value with a string. More...
void | SetCompanySetting (uint index, int32 value)
| Top function to save the new value of an element of the Settings struct. More...

## Detailed Description

Functions and types used internally for the settings configurations.

Definition in file settings_internal.h.

## Enumeration Type Documentation

## ◆ SettingCategory

enum SettingCategory

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. The group SC_ADVANCED is intended for settings which an experienced player would like to use. This is the case for most settings. Finally SC_EXPERT settings only few people want to see in rare cases. The grouping is meant to be inclusive, i.e. all settings in SC_BASIC also will be included in the set of settings in SC_ADVANCED. The group SC_EXPERT contains all settings.

Enumerator
SC_BASIC_LIST | Settings displayed in the list of basic settings.
SC_ADVANCED_LIST | Settings displayed in the list of advanced settings.
SC_EXPERT_LIST | Settings displayed in the list of expert settings.
SC_BASIC | Basic settings are part of all lists.
SC_ADVANCED | Advanced settings are part of advanced and expert list.
SC_EXPERT | Expert settings can only be seen in the expert list.

Definition at line 60 of file settings_internal.h.

## ◆ SettingDescType

enum SettingDescType : byte

Convention/Type of settings.

This is then further specified if necessary with the SLE_ (SLE_VAR/SLE_FILE) enums in saveload.h

See also
  VarTypes
  SettingDescBase

Enumerator
SDT_NUMX | any number-type
SDT_BOOLX | a boolean number
SDT_ONEOFMANY | bitmasked number where only ONE bit may be set
SDT_MANYOFMANY | bitmasked number where MULTIPLE bits may be set
SDT_INTLIST | list of integers separated by a comma ','
SDT_STRING | string with a pre-allocated buffer
SDT_STDSTRING | `std::string`

Definition at line 21 of file settings_internal.h.

## ◆ SettingGuiFlag

enum SettingGuiFlag : uint16

Enumerator
SGF_0ISDISABLED | a value of zero means the feature is disabled
SGF_DISPLAY_ABS | display absolute value of the setting
SGF_MULTISTRING | the value represents a limited number of string-options (internally integer)
SGF_NETWORK_ONLY | this setting only applies to network games
SGF_CURRENCY | the number represents money, so when reading value multiply by exchange rate
SGF_NO_NETWORK | this setting does not apply to network games; it may not be changed during the game
SGF_NEWGAME_ONLY | this setting cannot be changed in a game
SGF_SCENEDIT_TOO | this setting can be changed in the scenario editor (only makes sense when SGF_NEWGAME_ONLY is set)
SGF_PER_COMPANY | this setting can be different for each company (saved in company struct)

Definition at line 36 of file settings_internal.h.

## ◆ SettingType

enum SettingType

Type of settings for filtering.

Enumerator
ST_GAME | Game setting.
ST_COMPANY | Company setting.
ST_CLIENT | Client setting.
ST_ALL | Used in setting filter to match all types.

Definition at line 79 of file settings_internal.h.

## Function Documentation

## ◆ GetSettingFromName()

const SettingDesc* GetSettingFromName | ( | const char * | name,
|  | uint * | i
| ) |  |

Given a name of setting, return a setting description of it.

Parameters

  name | Name of the setting to return a setting description of
  i | Pointer to an integer that will contain the index of the setting after the call, if it is successful.

Returns
  Pointer to the setting description of setting name if it can be found, `nullptr` indicates failure to obtain the description

Definition at line 2106 of file settings.cpp.

References SaveLoad::cmd, and SettingDesc::save.

Referenced by GetCompanySettingIndex(), NewsTypeData::GetDisplay(), IConsoleGetSetting(), and SettingEntry::Init().

## ◆ SetCompanySetting()

void SetCompanySetting | ( | uint | index,
|  | int32 | value
| ) |  |

Top function to save the new value of an element of the Settings struct.

Parameters

  index | offset in the SettingDesc array of the CompanySettings struct which identifies the setting member we want to change
  value | new value of the setting

Definition at line 2018 of file settings.cpp.

References _local_company, and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID().

Referenced by GameSettingsWindow::OnDropdownSelect().

## ◆ SetSettingValue() [1/2]

bool SetSettingValue | ( | uint | index,
|  | const char * | value,
|  | bool | force_newgame
| ) |  |

Set a setting value with a string.

Parameters

  index | the settings index.
  value | the value to write
  force_newgame | force the newgame settings

Note
  Strings WILL NOT be synced over the network

Definition at line 2080 of file settings.cpp.

References SaveLoad::conv, GetVariableAddress(), GetVarMemType(), SettingDesc::save, SLE_VAR_STRQ, and SLF_NO_NETWORK_SYNC.

## ◆ SetSettingValue() [2/2]

bool SetSettingValue | ( | uint | index,
|  | int32 | value,
|  | bool | force_newgame
| ) |  |

Top function to save the new value of an element of the Settings struct.

Parameters

  index | offset in the SettingDesc array of the Settings struct which identifies the setting member we want to change
  value | new value of the setting
  force_newgame | force the newgame settings

Definition at line 1974 of file settings.cpp.

References SaveLoad::conv, GetGameSettings(), GetVariableAddress(), SettingDesc::save, SLF_NO_NETWORK_SYNC, and Write_ValidateSetting().

Referenced by GameSettingsWindow::OnDropdownSelect().