# SettingEntry Struct Reference

Data structure describing a single setting in a tab. More...

## Public Member Functions
| SettingEntry (const char *nm)
| Constructor for a single setting in the 'advanced settings' window.
| SettingEntry (SettingsPage *sub, StringID title)
| Constructor for a sub-page in the 'advanced settings' window.
void | Init (byte level, bool last_field)
| Initialization of a setting entry.
void | FoldAll ()
| Recursively close all folds of sub-pages.
void | SetButtons (byte new_val)
| Set the button-depressed flags (SEF_LEFT_DEPRESSED and SEF_RIGHT_DEPRESSED) to a specified value.
uint | Length () const
| Return numbers of rows needed to display the entry.
SettingEntry * | FindEntry (uint row, uint *cur_row)
| Find setting entry at row row_num.
uint | Draw (GameSettings *settings_ptr, int base_x, int base_y, int max_x, uint first_row, uint max_row, uint cur_row, uint parent_last)
| Draw a row in the settings panel.
## Data Fields
byte | flags
| Flags of the setting entry.
byte | level
| Nesting level of this setting entry.
union {
SettingEntrySetting entry
| Data fields if entry is a setting.
SettingEntrySubtree sub
| Data fields if entry is a sub-page.
} | d
| Data fields for each kind.
## Private Member Functions
void | DrawSetting (GameSettings *settings_ptr, const SettingDesc *sd, int x, int y, int max_x, int state)
| Private function to draw setting value (button + text + current value).

## Detailed Description

Data structure describing a single setting in a tab.

Definition at line 855 of file settings_gui.cpp.

## Constructor & Destructor Documentation

SettingEntry::SettingEntry | ( | const char * | nm | ) |

Constructor for a single setting in the 'advanced settings' window.

Parameters:

  | nm | Name of the setting in the setting table

Definition at line 900 of file settings_gui.cpp.

References d, flags, level, and SEF_SETTING_KIND.

SettingEntry::SettingEntry | ( | SettingsPage * | sub,
|  | StringID | title |
| ) |  |  |

Constructor for a sub-page in the 'advanced settings' window.

Parameters:

  | sub | Sub-page
  | title | Title of the sub-page

Definition at line 914 of file settings_gui.cpp.

References d, flags, level, and SEF_SUBTREE_KIND.

## Member Function Documentation

void SettingEntry::Init | ( | byte | level,
|  | bool | last_field |
| ) |  |  |

Initialization of a setting entry.

Parameters:

  | level | Page nesting level of this entry
  | last_field | Boolean indicating this entry is the last at the (sub-)page

Definition at line 928 of file settings_gui.cpp.

References d, flags, GetSettingFromName(), SEF_KIND_MASK, SEF_LAST_FIELD, SEF_SETTING_KIND, and SEF_SUBTREE_KIND.

Referenced by SettingsPage::Init().

void SettingEntry::SetButtons | ( | byte | new_val | ) |

Set the button-depressed flags (SEF_LEFT_DEPRESSED and SEF_RIGHT_DEPRESSED) to a specified value.

Parameters:

  | new_val | New value for the button flags

See also:
  SettingEntryFlags

Definition at line 967 of file settings_gui.cpp.

References flags, and SEF_BUTTONS_MASK.

SettingEntry * SettingEntry::FindEntry | ( | uint | row_num,
|  | uint * | cur_row |
| ) |  |  |

Find setting entry at row row_num.

Parameters:

  | row_num | Index of entry to return
  | cur_row | Current row number

Returns:
  The requested setting entry or `NULL` if it not found

Definition at line 993 of file settings_gui.cpp.

References d, flags, SEF_KIND_MASK, SEF_SETTING_KIND, and SEF_SUBTREE_KIND.

Referenced by SettingsPage::FindEntry().

uint SettingEntry::Draw | ( | GameSettings * | settings_ptr,
|  | int | left,
|  | int | right,
|  | int | base_y,
|  | uint | first_row,
|  | uint | max_row,
|  | uint | cur_row,
|  | uint | parent_last |
| ) |  |  |

Draw a row in the settings panel.

See SettingsPage::Draw() for an explanation about how drawing is performed.

The parent_last parameter ensures that the vertical lines at the left are only drawn when another entry follows, that it prevents output like

     *  |-- setting
     *  |-- (-) - Title
     *  |    |-- setting
     *  |    |-- setting
     *

The left-most vertical line is not wanted. It is prevented by setting the appropiate bit in the parent_last parameter.

Parameters:

  | settings_ptr | Pointer to current values of all settings
  | left | Left-most position in window/panel to start drawing first_row
  | right | Right-most x position to draw strings at.
  | base_y | Upper-most position in window/panel to start drawing first_row
  | first_row | First row number to draw
  | max_row | Row-number to stop drawing (the row-number of the row below the last row to draw)
  | cur_row | Current row number (internal variable)
  | parent_last | Last-field booleans of parent page level (page level i sets bit i to 1 if it is its last field)

Returns:
  Row number of the next row to draw

Definition at line 1040 of file settings_gui.cpp.

References _colour_gradient, _dynlang, d, DrawSetting(), DrawSprite(), DrawString(), flags, HasBit(), level, SEF_BUTTONS_MASK, SEF_KIND_MASK, SEF_LAST_FIELD, SEF_SETTING_KIND, SEF_SUBTREE_KIND, SetBit(), TD_RTL, and DynamicLanguages::text_dir.

Referenced by SettingsPage::Draw().

void SettingEntry::DrawSetting | ( | GameSettings * | settings_ptr,
|  | const SettingDesc * | sd,
|  | int | left,
|  | int | right,
|  | int | y,
|  | int | state |
| ) |  |  | `[private]`

Private function to draw setting value (button + text + current value).

Parameters:

  | settings_ptr | Pointer to current values of all settings
  | sd | Pointer to value description of setting to draw
  | left | Left-most position in window/panel to start drawing
  | right | Right-most position in window/panel to draw
  | y | Upper-most position in window/panel to start drawing
  | state | State of the left + right arrow buttons to draw for the setting

Definition at line 1117 of file settings_gui.cpp.

References _dynlang, DrawArrowButtons(), DrawFrameRect(), DrawString(), FR_LOWERED, ReadValue(), SDT_BOOLX, SetDParam(), SGF_0ISDISABLED, SGF_CURRENCY, SGF_MULTISTRING, SGF_NETWORK_ONLY, SGF_NO_NETWORK, SGF_NOCOMMA, SGF_PER_COMPANY, SLF_NETWORK_NO, TD_RTL, and DynamicLanguages::text_dir.

Referenced by Draw().

## Field Documentation

byte SettingEntry::flags

Flags of the setting entry.

See also:
  SettingEntryFlags

Definition at line 856 of file settings_gui.cpp.

Referenced by Draw(), FindEntry(), FoldAll(), Init(), Length(), SetButtons(), and SettingEntry().

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

- src/settings_gui.cpp