OpenTTD Source  12.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 "widgets/slider_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 "rev.h"
#include "video/video_driver.hpp"
#include "music/music_driver.hpp"
#include <vector>
#include <iterator>
#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 * ResolveObject (const GameSettings *settings_ptr, const IntSettingDesc *sd)
 
static uint GetCurrentResolutionIndex ()
 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...
 
static void AddCustomRefreshRates ()
 Add the refresh rate from the config and the refresh rates from all the monitors to our list of refresh rates shown in the GUI.
 
void ShowGameOptions ()
 Open the game options window.
 
static SettingsContainerGetSettingsTree ()
 Construct settings tree.
 
static void ResetAllSettingsConfirmationCallback (Window *w, bool confirmed)
 Callback function for the reset all settings button. More...
 
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.
 
std::set< int > _refresh_rates = { 30, 60, 75, 90, 100, 120, 144, 240 }
 
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 768 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 758 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 1869 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 2501 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 2548 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 2529 of file settings_gui.cpp.

◆ GetCurrentResolutionIndex()

static uint GetCurrentResolutionIndex ( )
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 83 of file settings_gui.cpp.

References _resolutions.

◆ ResetAllSettingsConfirmationCallback()

static void ResetAllSettingsConfirmationCallback ( Window w,
bool  confirmed 
)
static

Callback function for the reset all settings button.

Parameters
wWindow which is calling this callback
confirmedboolean value, true when yes was clicked, false otherwise

Definition at line 1881 of file settings_gui.cpp.

References SettingsContainer::FoldAll(), GetSettingsTree(), Window::InvalidateData(), and SettingsContainer::ResetAll().

Referenced by GameSettingsWindow::OnClick().

◆ 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 138 of file settings_gui.cpp.

References CloseWindowById(), 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 50 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 67 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 1859 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 59 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