OpenTTD Source  1.11.0-beta2
settings_gui.cpp File Reference
#include "stdafx.h"
#include "currency.h"
#include "error.h"
#include "settings_gui.h"
#include "textbuf_gui.h"
#include "command_func.h"
#include "network/network.h"
#include "town.h"
#include "settings_internal.h"
#include "strings_func.h"
#include "window_func.h"
#include "string_func.h"
#include "widgets/dropdown_type.h"
#include "widgets/dropdown_func.h"
#include "highscore.h"
#include "base_media_base.h"
#include "company_base.h"
#include "company_func.h"
#include "viewport_func.h"
#include "core/geometry_func.hpp"
#include "ai/ai.hpp"
#include "blitter/factory.hpp"
#include "language.h"
#include "textfile_gui.h"
#include "stringfilter_type.h"
#include "querystring_gui.h"
#include "fontcache.h"
#include "zoom_func.h"
#include <vector>
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  BaseSetTextfileWindow< TBaseSet >
 Window for displaying the textfile of a BaseSet. More...
 
struct  GameOptionsWindow
 
struct  SettingFilter
 Filter for settings list. More...
 
struct  BaseSettingEntry
 Data structure describing a single setting in a tab. More...
 
struct  SettingEntry
 Standard setting. More...
 
struct  SettingsContainer
 Containers for BaseSettingEntry. More...
 
struct  SettingsPage
 Data structure describing one page of settings in the settings window. More...
 
struct  GameSettingsWindow
 Window to edit settings of the game. More...
 
struct  CustomCurrencyWindow
 

Enumerations

enum  SettingEntryFlags {
  SEF_LEFT_DEPRESSED = 0x01, SEF_RIGHT_DEPRESSED = 0x02, SEF_BUTTONS_MASK = (SEF_LEFT_DEPRESSED | SEF_RIGHT_DEPRESSED), SEF_LAST_FIELD = 0x04,
  SEF_FILTERED = 0x08
}
 Flags for SettingEntry. More...
 
enum  RestrictionMode {
  RM_BASIC, RM_ADVANCED, RM_ALL, RM_CHANGED_AGAINST_DEFAULT,
  RM_CHANGED_AGAINST_NEW, RM_END
}
 How the list of advanced settings is filtered. More...
 
enum  WarnHiddenResult { WHR_NONE, WHR_CATEGORY, WHR_TYPE, WHR_CATEGORY_TYPE }
 Warnings about hidden search results. More...
 

Functions

static const void * ResolveVariableAddress (const GameSettings *settings_ptr, const SettingDesc *sd)
 
static uint GetCurRes ()
 Get index of the current screen resolution. More...
 
static void ShowCustCurrency ()
 Open custom currency window.
 
template<class T >
static DropDownList BuildSetDropDownList (int *selected_index, bool allow_selection)
 
DropDownList BuildMusicSetDropDownList (int *selected_index)
 
template<class TBaseSet >
void ShowBaseSetTextfileWindow (TextfileType file_type, const TBaseSet *baseset, StringID content_type)
 Open the BaseSet version of the textfile window. More...
 
void ShowGameOptions ()
 Open the game options window.
 
static SettingsContainerGetSettingsTree ()
 Construct settings tree.
 
void ShowGameSettings ()
 Open advanced settings window.
 
void DrawArrowButtons (int x, int y, Colours button_colour, byte state, bool clickable_left, bool clickable_right)
 Draw [<][>] boxes. More...
 
void DrawDropDownButton (int x, int y, Colours button_colour, bool state, bool clickable)
 Draw a dropdown button. More...
 
void DrawBoolButton (int x, int y, bool state, bool clickable)
 Draw a toggle button. More...
 

Variables

static const StringID _autosave_dropdown []
 
static const StringID _gui_zoom_dropdown []
 
static const StringID _font_zoom_dropdown []
 
static Dimension _circle_size
 Dimension of the circle +/- icon. This is here as not all users are within the class of the settings window.
 
static const NWidgetPart _nested_game_options_widgets []
 
static WindowDesc _game_options_desc (WDP_CENTER, "settings_game", 0, 0, WC_GAME_OPTIONS, WC_NONE, 0, _nested_game_options_widgets, lengthof(_nested_game_options_widgets))
 
static int SETTING_HEIGHT = 11
 Height of a single setting in the tree view in pixels.
 
static const int LEVEL_WIDTH = 15
 Indenting width of a sub-page in pixels.
 
static const StringID _game_settings_restrict_dropdown []
 
static const NWidgetPart _nested_settings_selection_widgets []
 
static WindowDesc _settings_selection_desc (WDP_CENTER, "settings", 510, 450, WC_GAME_OPTIONS, WC_NONE, 0, _nested_settings_selection_widgets, lengthof(_nested_settings_selection_widgets))
 
static const NWidgetPart _nested_cust_currency_widgets []
 
static WindowDesc _cust_currency_desc (WDP_CENTER, nullptr, 0, 0, WC_CUSTOM_CURRENCY, WC_NONE, 0, _nested_cust_currency_widgets, lengthof(_nested_cust_currency_widgets))
 

Detailed Description

GUI for settings.

Definition in file settings_gui.cpp.

Enumeration Type Documentation

◆ RestrictionMode

How the list of advanced settings is filtered.

Enumerator
RM_BASIC 

Display settings associated to the "basic" list.

RM_ADVANCED 

Display settings associated to the "advanced" list.

RM_ALL 

List all settings regardless of the default/newgame/... values.

RM_CHANGED_AGAINST_DEFAULT 

Show only settings which are different compared to default values.

RM_CHANGED_AGAINST_NEW 

Show only settings which are different compared to the user's new game setting values.

RM_END 

End for iteration.

Definition at line 620 of file settings_gui.cpp.

◆ SettingEntryFlags

Flags for SettingEntry.

Note
The SEF_BUTTONS_MASK matches expectations of the formal parameter 'state' of DrawArrowButtons
Enumerator
SEF_LEFT_DEPRESSED 

Of a numeric setting entry, the left button is depressed.

SEF_RIGHT_DEPRESSED 

Of a numeric setting entry, the right button is depressed.

SEF_BUTTONS_MASK 

Bit-mask for button flags.

SEF_LAST_FIELD 

This entry is the last one in a (sub-)page.

SEF_FILTERED 

Entry is hidden by the string filter.

Definition at line 610 of file settings_gui.cpp.

◆ WarnHiddenResult

Warnings about hidden search results.

Enumerator
WHR_NONE 

Nothing was filtering matches away.

WHR_CATEGORY 

Category setting filtered matches away.

WHR_TYPE 

Type setting filtered matches away.

WHR_CATEGORY_TYPE 

Both category and type settings filtered matches away.

Definition at line 1701 of file settings_gui.cpp.

Function Documentation

◆ DrawArrowButtons()

void DrawArrowButtons ( int  x,
int  y,
Colours  button_colour,
byte  state,
bool  clickable_left,
bool  clickable_right 
)

Draw [<][>] boxes.

Parameters
xthe x position to draw
ythe y position to draw
button_colourthe colour of the button
state0 = none clicked, 1 = first clicked, 2 = second clicked
clickable_leftis the left button clickable?
clickable_rightis the right button clickable?

Definition at line 2331 of file settings_gui.cpp.

◆ DrawBoolButton()

void DrawBoolButton ( int  x,
int  y,
bool  state,
bool  clickable 
)

Draw a toggle button.

Parameters
xthe x position to draw
ythe y position to draw
statetrue = lowered
clickableis the button clickable?

Definition at line 2378 of file settings_gui.cpp.

◆ DrawDropDownButton()

void DrawDropDownButton ( int  x,
int  y,
Colours  button_colour,
bool  state,
bool  clickable 
)

Draw a dropdown button.

Parameters
xthe x position to draw
ythe y position to draw
button_colourthe colour of the button
statetrue = lowered
clickableis the button clickable?

Definition at line 2359 of file settings_gui.cpp.

◆ GetCurRes()

static uint GetCurRes ( )
static

Get index of the current screen resolution.

Returns
Index of the current screen resolution if it is a known resolution, _resolutions.size() otherwise.

Definition at line 77 of file settings_gui.cpp.

References _resolutions.

◆ ShowBaseSetTextfileWindow()

template<class TBaseSet >
void ShowBaseSetTextfileWindow ( TextfileType  file_type,
const TBaseSet *  baseset,
StringID  content_type 
)

Open the BaseSet version of the textfile window.

Parameters
file_typeThe type of textfile to display.
basesetThe BaseSet to use.
content_typeSTR_CONTENT_TYPE_xxx for title.

Definition at line 136 of file settings_gui.cpp.

References DeleteWindowById(), and WC_TEXTFILE.

Variable Documentation

◆ _autosave_dropdown

const StringID _autosave_dropdown[]
static
Initial value:
= {
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF,
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH,
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS,
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS,
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS,
}

Definition at line 44 of file settings_gui.cpp.

◆ _font_zoom_dropdown

const StringID _font_zoom_dropdown[]
static
Initial value:
= {
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO,
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL,
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM,
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM,
}

Definition at line 61 of file settings_gui.cpp.

◆ _game_settings_restrict_dropdown

const StringID _game_settings_restrict_dropdown[]
static
Initial value:
= {
STR_CONFIG_SETTING_RESTRICT_BASIC,
STR_CONFIG_SETTING_RESTRICT_ADVANCED,
STR_CONFIG_SETTING_RESTRICT_ALL,
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT,
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW,
}

Definition at line 1691 of file settings_gui.cpp.

◆ _gui_zoom_dropdown

const StringID _gui_zoom_dropdown[]
static
Initial value:
= {
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO,
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL,
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM,
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM,
}

Definition at line 53 of file settings_gui.cpp.

INVALID_STRING_ID
static const StringID INVALID_STRING_ID
Constant representing an invalid string (16bit in case it is used in savegames)
Definition: strings_type.h:17