# settings_internal.h File Reference

Functions and types used internally for the settings configurations. More...

`#include "saveload/saveload.h"`
`#include "settings_type.h"`
`#include "strings_type.h"`

Go to the source code of this file.

## Data Structures
struct | SettingDescBase
struct | SettingDesc
## Typedefs
typedef SimpleTinyEnumT < SettingDescTypeLong, byte > | SettingDescType
typedef SimpleTinyEnumT < SettingGuiFlagLong, uint16 > | SettingGuiFlag
typedef bool | OnChange (int32 var)
| callback prototype on data modification
typedef int32 | OnConvert (const char *value)
| callback prototype for convertion error
typedef SettingDesc | SettingDescGlobVarList
## Enumerations
enum | SettingDescTypeLong { SDT_BEGIN = 0, SDT_NUMX = 0, SDT_BOOLX = 1, SDT_ONEOFMANY = 2, SDT_MANYOFMANY = 3, SDT_INTLIST = 4, SDT_STRING = 5, SDT_END }
| Convention/Type of settings. More...
enum | SettingGuiFlagLong { SGF_NONE = 0, SGF_0ISDISABLED = 1 << 0, SGF_NOCOMMA = 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 }
## Functions
| DECLARE_ENUM_AS_BIT_SET (SettingGuiFlagLong)
const SettingDesc * | GetSettingFromName (const char *name, uint *i)
| Given a name of setting, return a setting description of it.
bool | SetSettingValue (uint index, int32 value, bool force_newgame=false)
| Top function to save the new value of an element of the Settings struct.
bool | SetSettingValue (uint index, const char *value, bool force_newgame=false)
| Set a setting value with a string.
void | SetCompanySetting (uint index, int32 value)
| Top function to save the new value of an element of the Settings struct.
## Variables
VehicleDefaultSettings | _old_vds
| Used for loading default vehicles settings from old savegames.

## Detailed Description

Functions and types used internally for the settings configurations.

Definition in file settings_internal.h.

## Enumeration Type Documentation

enum SettingDescTypeLong

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 seperated by a comma ','
  SDT_STRING | string with a pre-allocated buffer

Definition at line 23 of file settings_internal.h.

enum SettingGuiFlagLong

Enumerator:

  SGF_0ISDISABLED | a value of zero means the feature is disabled
  SGF_NOCOMMA | number without any thousand seperators (no formatting)
  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 38 of file settings_internal.h.

## Function Documentation

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, `NULL` indicates failure to obtain the description

Definition at line 1674 of file settings.cpp.

References SaveLoad::cmd, SettingDesc::desc, SettingDescBase::name, SettingDesc::save, SlIsObjectCurrentlyValid(), SaveLoad::version_from, and SaveLoad::version_to.

Referenced by GetCompanySettingIndex(), AIGameSettings::GetValue(), IConsoleGetSetting(), SettingEntry::Init(), AIGameSettings::IsValid(), GameDifficultyWindow::OnClick(), GameOptionsWindow::OnDropdownSelect(), GameDifficultyWindow::OnInvalidateData(), GameDifficultyWindow::SetStringParameters(), and GameDifficultyWindow::UpdateWidgetSize().

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 1586 of file settings.cpp.

References CMD_CHANGE_COMPANY_SETTING, ClientSettings::company, SaveLoad::conv, SettingDesc::desc, DoCommandP(), GetVariableAddress(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), SettingDescBase::proc, ReadValue(), SettingDesc::save, and Write_ValidateSetting().

Referenced by GameSettingsWindow::OnClick(), and GameSettingsWindow::OnQueryTextFinished().

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 1649 of file settings.cpp.

References SaveLoad::conv, SettingDesc::desc, GetVariableAddress(), SaveLoad::length, SettingDescBase::proc, SettingDesc::save, SLE_VAR_STRQ, SLF_NETWORK_NO, and ttd_strlcpy().

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 1548 of file settings.cpp.

References _network_server, _networking, CMD_CHANGE_SETTING, SaveLoad::conv, SettingDesc::desc, DoCommandP(), GetVariableAddress(), SettingDescBase::proc, ReadValue(), SettingDesc::save, SetWindowDirty(), SLF_NETWORK_NO, and Write_ValidateSetting().

Referenced by GameSettingsWindow::OnClick(), GameOptionsWindow::OnDropdownSelect(), and GameSettingsWindow::OnQueryTextFinished().