OpenTTD Source  20240919-master-gdf0233f4c2
IntSettingDesc Struct Reference

Base integer type, including boolean, settings. More...

#include <settings_internal.h>

Inheritance diagram for IntSettingDesc:
SettingDesc BoolSettingDesc OneOfManySettingDesc ManyOfManySettingDesc

Public Types

typedef StringID GetTitleCallback(const IntSettingDesc &sd)
 
typedef StringID GetHelpCallback(const IntSettingDesc &sd)
 
typedef void SetValueDParamsCallback(const IntSettingDesc &sd, uint first_param, int32_t value)
 
typedef bool PreChangeCheck(int32_t &value)
 A check to be performed before the setting gets changed. More...
 
typedef void PostChangeCallback(int32_t value)
 A callback to denote that a setting has been changed. More...
 
typedef int32_t GetDefaultValueCallback()
 A callback to get the correct default value. More...
 

Public Member Functions

template<typename Tdef , typename Tmin , typename Tmax , typename Tinterval , std::enable_if_t< std::disjunction_v< std::is_convertible< Tdef, int32_t >, std::is_base_of< StrongTypedefBase, Tdef >>, int > = 0, std::enable_if_t< std::disjunction_v< std::is_convertible< Tmin, int32_t >, std::is_base_of< StrongTypedefBase, Tmin >>, int > = 0, std::enable_if_t< std::disjunction_v< std::is_convertible< Tmax, uint32_t >, std::is_base_of< StrongTypedefBase, Tmax >>, int > = 0, std::enable_if_t< std::disjunction_v< std::is_convertible< Tinterval, int32_t >, std::is_base_of< StrongTypedefBase, Tinterval >>, int > = 0>
 IntSettingDesc (const SaveLoad &save, SettingFlag flags, bool startup, Tdef def, Tmin min, Tmax max, Tinterval interval, StringID str, StringID str_help, StringID str_val, SettingCategory cat, PreChangeCheck pre_check, PostChangeCallback post_callback, GetTitleCallback get_title_cb, GetHelpCallback get_help_cb, SetValueDParamsCallback set_value_dparams_cb, GetDefaultValueCallback get_def_cb)
 
StringID GetTitle () const
 Get the title of the setting. More...
 
StringID GetHelp () const
 Get the help text of the setting. More...
 
void SetValueDParams (uint first_param, int32_t value) const
 Set the DParams for drawing the value of the setting. More...
 
virtual bool IsBoolSetting () const
 Check whether this setting is a boolean type setting. More...
 
bool IsIntSetting () const override
 Check whether this setting is an integer type setting. More...
 
void ChangeValue (const void *object, int32_t newvalue) const
 Handle changing a value. More...
 
void MakeValueValidAndWrite (const void *object, int32_t value) const
 Make the value valid and then write it to the setting. More...
 
virtual size_t ParseValue (const char *str) const
 Convert a string representation (external) of an integer-like setting to an integer. More...
 
std::string FormatValue (const void *object) const override
 Format the value of the setting associated with this object. More...
 
void ParseValue (const IniItem *item, void *object) const override
 Parse/read the value from the Ini item into the setting associated with this object. More...
 
bool IsSameValue (const IniItem *item, void *object) const override
 Check whether the value in the Ini item is the same as is saved in this setting in the object. More...
 
bool IsDefaultValue (void *object) const override
 Check whether the value is the same as the default value. More...
 
void ResetToDefault (void *object) const override
 Reset the setting to its default value.
 
int32_t Read (const void *object) const
 Read the integer from the the actual setting. More...
 
- Public Member Functions inherited from SettingDesc
 SettingDesc (const SaveLoad &save, SettingFlag flags, bool startup)
 
bool IsEditable (bool do_command=false) const
 Check whether the setting is editable in the current gamemode. More...
 
SettingType GetType () const
 Return the type of the setting. More...
 
constexpr const std::string & GetName () const
 Get the name of this setting. More...
 
virtual bool IsStringSetting () const
 Check whether this setting is an string type setting. More...
 
const struct IntSettingDescAsIntSetting () const
 Get the setting description of this setting as an integer setting. More...
 
const struct StringSettingDescAsStringSetting () const
 Get the setting description of this setting as a string setting. More...
 

Data Fields

int32_t def
 default value given when none is present
 
int32_t min
 minimum values
 
uint32_t max
 maximum values
 
int32_t interval
 the interval to use between settings in the 'settings' window. If interval is '0' the interval is dynamically determined
 
StringID str
 (translated) string with descriptive text; gui and console
 
StringID str_help
 (Translated) string with help text; gui only.
 
StringID str_val
 (Translated) first string describing the value.
 
SettingCategory cat
 assigned categories of the setting
 
PreChangeCheckpre_check
 Callback to check for the validity of the setting.
 
PostChangeCallbackpost_callback
 Callback when the setting has been changed.
 
GetTitleCallback * get_title_cb
 
GetHelpCallback * get_help_cb
 
SetValueDParamsCallback * set_value_dparams_cb
 
GetDefaultValueCallbackget_def_cb
 Callback to set the correct default value.
 
- Data Fields inherited from SettingDesc
SettingFlag flags
 Handles how a setting would show up in the GUI (text/currency, etc.).
 
bool startup
 Setting has to be loaded directly at startup?.
 
SaveLoad save
 Internal structure (going to savegame, parts to config).
 

Private Member Functions

void MakeValueValid (int32_t &value) const
 Make the value valid given the limitations of this setting. More...
 
void Write (const void *object, int32_t value) const
 Set the value of a setting. More...
 

Detailed Description

Base integer type, including boolean, settings.

Only these are shown in the settings UI.

Definition at line 148 of file settings_internal.h.

Member Typedef Documentation

◆ GetDefaultValueCallback

typedef int32_t IntSettingDesc::GetDefaultValueCallback()

A callback to get the correct default value.

For example a default that can be measured in time units or expressed as a percentage.

Returns
The correct default value for the setting.

Definition at line 172 of file settings_internal.h.

◆ PostChangeCallback

typedef void IntSettingDesc::PostChangeCallback(int32_t value)

A callback to denote that a setting has been changed.

Parameters
Thenew value for the setting.

Definition at line 166 of file settings_internal.h.

◆ PreChangeCheck

typedef bool IntSettingDesc::PreChangeCheck(int32_t &value)

A check to be performed before the setting gets changed.

The passed integer may be changed by the check if that is important, for example to remove some unwanted bit. The return value denotes whether the value, potentially after the changes, is allowed to be used/set in the configuration.

Parameters
valueThe prospective new value for the setting.
Returns
True when the setting is accepted.

Definition at line 161 of file settings_internal.h.

Member Function Documentation

◆ ChangeValue()

void IntSettingDesc::ChangeValue ( const void *  object,
int32_t  newval 
) const

Handle changing a value.

This performs validation of the input value and calls the appropriate callbacks, and saves it when the value is changed.

Parameters
objectThe object the setting is in.
newvalThe new value for the setting.

Definition at line 1588 of file settings.cpp.

References _gamelog, SettingDesc::flags, SettingDesc::GetName(), GLAT_SETTING, MakeValueValid(), post_callback, pre_check, Read(), Gamelog::Setting(), SetWindowClassesDirty(), SF_NO_NETWORK, Gamelog::StartAction(), Gamelog::StopAction(), WC_GAME_OPTIONS, and Write().

Referenced by CmdChangeCompanySetting(), and CmdChangeSetting().

◆ FormatValue()

std::string IntSettingDesc::FormatValue ( const void *  object) const
overridevirtual

Format the value of the setting associated with this object.

Parameters
bufThe before of the buffer to format into.
lastThe end of the buffer to format into.
objectThe object the setting is in.

Implements SettingDesc.

Reimplemented in ManyOfManySettingDesc, OneOfManySettingDesc, and BoolSettingDesc.

Definition at line 725 of file settings.cpp.

◆ GetHelp()

StringID IntSettingDesc::GetHelp ( ) const

Get the help text of the setting.

Returns
The requested help text.

Definition at line 450 of file settings.cpp.

References str_help.

Referenced by SettingEntry::GetMaxHelpHeight(), and SettingEntry::UpdateFilterState().

◆ GetTitle()

StringID IntSettingDesc::GetTitle ( ) const

Get the title of the setting.

The string should include a {STRING2} to show the current value.

Returns
The title string.

Definition at line 441 of file settings.cpp.

References str.

Referenced by SettingEntry::UpdateFilterState().

◆ IsBoolSetting()

virtual bool IntSettingDesc::IsBoolSetting ( ) const
inlinevirtual

Check whether this setting is a boolean type setting.

Returns
True when the underlying type is an integer.

Reimplemented in BoolSettingDesc.

Definition at line 242 of file settings_internal.h.

Referenced by SetValueDParams().

◆ IsDefaultValue()

bool IntSettingDesc::IsDefaultValue ( void *  object) const
overridevirtual

Check whether the value is the same as the default value.

Parameters
objectThe object the setting is in.
Returns
true iff the value is the default value.

Implements SettingDesc.

Definition at line 749 of file settings.cpp.

References def, and Read().

◆ IsIntSetting()

bool IntSettingDesc::IsIntSetting ( ) const
inlineoverridevirtual

Check whether this setting is an integer type setting.

Returns
True when the underlying type is an integer.

Reimplemented from SettingDesc.

Definition at line 243 of file settings_internal.h.

◆ IsSameValue()

bool IntSettingDesc::IsSameValue ( const IniItem item,
void *  object 
) const
overridevirtual

Check whether the value in the Ini item is the same as is saved in this setting in the object.

It might be that determining whether the value is the same is way more expensive than just writing the value. In those cases this function may unconditionally return false even though the value might be the same as in the Ini item.

Parameters
itemThe Ini item with the content of this setting.
objectThe object the setting is in.
Returns
True if the value is definitely the same (might be false when the same).

Implements SettingDesc.

Definition at line 742 of file settings.cpp.

References ParseValue(), Read(), and IniItem::value.

◆ MakeValueValid()

void IntSettingDesc::MakeValueValid ( int32_t &  val) const
private

Make the value valid given the limitations of this setting.

In the case of int settings this is ensuring the value is between the minimum and maximum value, with a special case for 0 if SF_GUI_0_IS_SPECIAL is set. This is generally done by clamping the value so it is within the allowed value range. However, for SF_GUI_DROPDOWN the default is used when the value is not valid.

Parameters
valThe value to make valid.

Definition at line 497 of file settings.cpp.

References SaveLoad::conv, GetVarMemType(), SettingDesc::save, and SLE_VAR_NULL.

Referenced by ChangeValue(), and MakeValueValidAndWrite().

◆ MakeValueValidAndWrite()

void IntSettingDesc::MakeValueValidAndWrite ( const void *  object,
int32_t  val 
) const

Make the value valid and then write it to the setting.

See #MakeValidValid and Write for more details.

Parameters
objectThe object the setting is to be saved in.
valSigned version of the new value.

Definition at line 482 of file settings.cpp.

References MakeValueValid(), and Write().

Referenced by LoadSettings(), and ParseValue().

◆ ParseValue() [1/2]

size_t IntSettingDesc::ParseValue ( const char *  str) const
virtual

Convert a string representation (external) of an integer-like setting to an integer.

Parameters
strInput string that will be parsed based on the type of desc.
Returns
The value from the parse string, or the default value of the setting.

Reimplemented in ManyOfManySettingDesc, OneOfManySettingDesc, and BoolSettingDesc.

Definition at line 379 of file settings.cpp.

References _settings_error_list, def, SettingDesc::GetName(), ErrorMessageData::SetDParamStr(), and str.

Referenced by IsSameValue(), and ParseValue().

◆ ParseValue() [2/2]

void IntSettingDesc::ParseValue ( const IniItem item,
void *  object 
) const
overridevirtual

Parse/read the value from the Ini item into the setting associated with this object.

Parameters
itemThe Ini item with the content of this setting.
objectThe object the setting is in.

Implements SettingDesc.

Definition at line 655 of file settings.cpp.

References def, MakeValueValidAndWrite(), ParseValue(), and IniItem::value.

◆ Read()

int32_t IntSettingDesc::Read ( const void *  object) const

Read the integer from the the actual setting.

Parameters
objectThe object the setting is to be saved in.
Returns
The value of the saved integer.

Definition at line 561 of file settings.cpp.

References SaveLoad::conv, GetVariableAddress(), ReadValue(), and SettingDesc::save.

Referenced by ChangeValue(), BoolSettingDesc::FormatValue(), NewsTypeData::GetDisplay(), IsDefaultValue(), IsSameValue(), and LoadSettings().

◆ SetValueDParams()

void IntSettingDesc::SetValueDParams ( uint  first_param,
int32_t  value 
) const

Set the DParams for drawing the value of the setting.

Parameters
first_paramFirst DParam to use
valueSetting value to set params for.

Definition at line 460 of file settings.cpp.

References SettingDesc::flags, IsBoolSetting(), min, SetDParam(), SF_GUI_0_IS_SPECIAL, SF_GUI_DROPDOWN, and str_val.

◆ Write()

void IntSettingDesc::Write ( const void *  object,
int32_t  val 
) const
private

Set the value of a setting.

Parameters
objectThe object the setting is to be saved in.
valSigned version of the new value.

Definition at line 550 of file settings.cpp.

References SaveLoad::conv, GetVariableAddress(), SettingDesc::save, and WriteValue().

Referenced by ChangeValue(), MakeValueValidAndWrite(), and ResetToDefault().


The documentation for this struct was generated from the following files: