annotate src/settings_gui.cpp @ 18891:88567087417f draft

(svn r23740) -Codechange: remove some 300 unneeded includes from the .cpp files
author rubidium <rubidium@openttd.org>
date Tue, 03 Jan 2012 21:32:51 +0000
parents 8d2cdabac894
children b7744a321dc6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1 /* $Id$ */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2
12778
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
3 /*
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
4 * This file is part of OpenTTD.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
5 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
6 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
7 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
8 */
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
9
9111
d48433370037 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium <rubidium@openttd.org>
parents: 9092
diff changeset
10 /** @file settings_gui.cpp GUI for settings. */
6420
080aae477331 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents: 6378
diff changeset
11
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
12 #include "stdafx.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
13 #include "currency.h"
18627
1972f6346144 (svn r23474) -Codechange: move the declaration error related functions to error.h
rubidium <rubidium@openttd.org>
parents: 18570
diff changeset
14 #include "error.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
15 #include "gui.h"
8107
f65cf2bc3255 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium <rubidium@openttd.org>
parents: 8106
diff changeset
16 #include "textbuf_gui.h"
8116
9cc845deddfe (svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium <rubidium@openttd.org>
parents: 8114
diff changeset
17 #include "command_func.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
18 #include "screenshot.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
19 #include "network/network.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
20 #include "town.h"
8208
ddc34919158f (svn r11771) -Codechange: split settings.h into better separated headers.
rubidium <rubidium@openttd.org>
parents: 8191
diff changeset
21 #include "settings_internal.h"
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
22 #include "newgrf_townname.h"
8114
2d6af5d7a142 (svn r11675) -Codechange: split the string types from the string functions.
rubidium <rubidium@openttd.org>
parents: 8107
diff changeset
23 #include "strings_func.h"
8131
e300ac8001ae (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium <rubidium@openttd.org>
parents: 8130
diff changeset
24 #include "window_func.h"
8214
6385dffc0b37 (svn r11777) -Codechange: split the string header and make do not include it when it's not necessary.
rubidium <rubidium@openttd.org>
parents: 8213
diff changeset
25 #include "string_func.h"
8321
c361d51b1bb8 (svn r11886) -Add: sort the strings in languages dropdown
glx <glx@openttd.org>
parents: 8319
diff changeset
26 #include "widgets/dropdown_type.h"
8284
dbb7bfe0e95c (svn r11848) -Codechange: New class-based drop down list functionality. Lists are now dynamically generated, and can include parameters, or be extended however needed.
peter1138 <peter1138@openttd.org>
parents: 8264
diff changeset
27 #include "widgets/dropdown_func.h"
10558
15517829eb17 (svn r14815) -Codechange: separate 'highscore' code from 'company' code
smatz <smatz@openttd.org>
parents: 10543
diff changeset
28 #include "highscore.h"
12678
ea203bb44a25 (svn r17133) -Codechange: generalise the code that searches for base graphics
rubidium <rubidium@openttd.org>
parents: 12676
diff changeset
29 #include "base_media_base.h"
12022
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
30 #include "company_base.h"
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
31 #include "company_func.h"
13950
77bfe67f23bd (svn r18486) -Fix: when switching language and you're getting a different font, recalculate the coordinates/sizes of the viewport signs. Otherwise it gets glitchy or abbreviated (in the smallmap)
rubidium <rubidium@openttd.org>
parents: 13834
diff changeset
32 #include "viewport_func.h"
14258
a899d4e5ee1a (svn r18809) -Codechange/Cleanup: remove unneeded headers from some files, if a header require a header make it include that header
rubidium <rubidium@openttd.org>
parents: 14155
diff changeset
33 #include "core/geometry_func.hpp"
14330
9caa7d57a6e3 (svn r18883) -Codechange: warn in the difficulty and AI configuration window when setting the number of AIs to non-zero when you don't have AIs
rubidium <rubidium@openttd.org>
parents: 14258
diff changeset
34 #include "ai/ai.hpp"
16445
c7c3bb467609 (svn r21161) -Codechange: make the currently used language easier accessible
rubidium <rubidium@openttd.org>
parents: 16441
diff changeset
35 #include "language.h"
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
36
18680
e87c7c30e606 (svn r23528) -Codechange: move widget enums to widgets/NNN_type.h
truebrain <truebrain@openttd.org>
parents: 18677
diff changeset
37
8264
2495310e220f (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium <rubidium@openttd.org>
parents: 8224
diff changeset
38
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
39 static const StringID _units_dropdown[] = {
12619
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
40 STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL,
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
41 STR_GAME_OPTIONS_MEASURING_UNITS_METRIC,
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
42 STR_GAME_OPTIONS_MEASURING_UNITS_SI,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
43 INVALID_STRING_ID
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
44 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
45
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
46 static const StringID _driveside_dropdown[] = {
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
47 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
48 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
49 INVALID_STRING_ID
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
50 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
51
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
52 static const StringID _autosave_dropdown[] = {
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
53 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
54 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
55 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
56 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
57 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
58 INVALID_STRING_ID,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
59 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
60
16734
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
61 int _nb_orig_names = SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1; ///< Number of original town names.
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
62 static StringID *_grf_names = NULL; ///< Pointer to town names defined by NewGRFs.
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
63 static int _nb_grf_names = 0; ///< Number of town names defined by NewGRFs.
6797
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
64
16734
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
65 /** Allocate memory for the NewGRF town names. */
8323
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
66 void InitGRFTownGeneratorNames()
6797
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
67 {
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
68 free(_grf_names);
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
69 _grf_names = GetGRFTownNameList();
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
70 _nb_grf_names = 0;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
71 for (StringID *s = _grf_names; *s != INVALID_STRING_ID; s++) _nb_grf_names++;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
72 }
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
73
16734
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
74 /**
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
75 * Get a town name.
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
76 * @param town_name Number of the wanted town name.
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
77 * @return Name of the town as string ID.
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
78 */
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
79 static inline StringID TownName(int town_name)
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
80 {
12619
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
81 if (town_name < _nb_orig_names) return STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH + town_name;
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
82 town_name -= _nb_orig_names;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
83 if (town_name < _nb_grf_names) return _grf_names[town_name];
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
84 return STR_UNDEFINED;
6797
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
85 }
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
86
16734
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
87 /**
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
88 * Get index of the current screen resolution.
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
89 * @return Index of the current screen resolution if it is a known resolution, #_num_resolutions otherwise.
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
90 */
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
91 static int GetCurRes()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
92 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
93 int i;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
94
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
95 for (i = 0; i != _num_resolutions; i++) {
12262
fd3b92f848cc (svn r16677) -Codechange: Dimension width and height are unsigned.
alberth <alberth@openttd.org>
parents: 12200
diff changeset
96 if ((int)_resolutions[i].width == _screen.width &&
fd3b92f848cc (svn r16677) -Codechange: Dimension width and height are unsigned.
alberth <alberth@openttd.org>
parents: 12200
diff changeset
97 (int)_resolutions[i].height == _screen.height) {
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
98 break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
99 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
100 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
101 return i;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
102 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
103
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
104 static void ShowCustCurrency();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
105
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
106 template <class T>
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
107 static DropDownList *BuiltSetDropDownList(int *selected_index)
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
108 {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
109 int n = T::GetNumSets();
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
110 *selected_index = T::GetIndexOfUsedSet();
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
111
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
112 DropDownList *list = new DropDownList();
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
113 for (int i = 0; i < n; i++) {
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
114 list->push_back(new DropDownListCharStringItem(T::GetSet(i)->name, i, (_game_mode == GM_MENU) ? false : (*selected_index != i)));
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
115 }
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
116
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
117 return list;
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
118 }
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
119
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
120 struct GameOptionsWindow : Window {
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9359
diff changeset
121 GameSettings *opt;
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
122 bool reload;
9346
0c181c088ed8 (svn r13242) -Codechange: remove _opt_ptr.
rubidium <rubidium@openttd.org>
parents: 9334
diff changeset
123
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
124 GameOptionsWindow(const WindowDesc *desc) : Window()
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
125 {
16959
55b2bec60c52 (svn r21695) -Codechange: add helper function to get the currently applicable GameSettings object
yexo <yexo@openttd.org>
parents: 16945
diff changeset
126 this->opt = &GetGameSettings();
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
127 this->reload = false;
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
128
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18703
diff changeset
129 this->InitNested(desc, WN_GAME_OPTIONS_GAME_OPTIONS);
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
130 this->OnInvalidateData(0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
131 }
8190
eb210e97738e (svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas <belugas@openttd.org>
parents: 8189
diff changeset
132
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
133 ~GameOptionsWindow()
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
134 {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
135 DeleteWindowById(WC_CUSTOM_CURRENCY, 0);
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
136 if (this->reload) _switch_mode = SM_MENU;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
137 }
8188
2ca3ac32fa76 (svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas <belugas@openttd.org>
parents: 8182
diff changeset
138
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
139 /**
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
140 * Build the dropdown list for a specific widget.
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
141 * @param widget Widget to build list for
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
142 * @param selected_index Currently selected item
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
143 * @return the built dropdown list, or NULL if the widget has no dropdown menu.
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
144 */
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
145 DropDownList *BuildDropDownList(int widget, int *selected_index) const
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
146 {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
147 DropDownList *list = NULL;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
148 switch (widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
149 case WID_GO_CURRENCY_DROPDOWN: { // Setup currencies dropdown
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
150 list = new DropDownList();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
151 *selected_index = this->opt->locale.currency;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
152 StringID *items = BuildCurrencyDropdown();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
153 uint disabled = _game_mode == GM_MENU ? 0 : ~GetMaskOfAllowedCurrencies();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
154 int custom_index = -1;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
155
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
156 /* Add non-custom currencies; sorted naturally */
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
157 for (uint i = 0; *items != INVALID_STRING_ID; items++, i++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
158 if (*items == STR_GAME_OPTIONS_CURRENCY_CUSTOM) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
159 custom_index = i;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
160 } else {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
161 list->push_back(new DropDownListStringItem(*items, i, HasBit(disabled, i)));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
162 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
163 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
164 list->sort(DropDownListStringItem::NatSortFunc);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
165
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
166 /* Append custom currency at the end */
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
167 if (custom_index >= 0) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
168 list->push_back(new DropDownListItem(-1, false)); // separator line
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
169 list->push_back(new DropDownListStringItem(STR_GAME_OPTIONS_CURRENCY_CUSTOM, custom_index, HasBit(disabled, custom_index)));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
170 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
171 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
172 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
173
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
174 case WID_GO_DISTANCE_DROPDOWN: { // Setup distance unit dropdown
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
175 list = new DropDownList();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
176 *selected_index = this->opt->locale.units;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
177 const StringID *items = _units_dropdown;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
178 for (uint i = 0; *items != INVALID_STRING_ID; items++, i++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
179 list->push_back(new DropDownListStringItem(*items, i, false));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
180 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
181 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
182 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
183
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
184 case WID_GO_ROADSIDE_DROPDOWN: { // Setup road-side dropdown
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
185 list = new DropDownList();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
186 *selected_index = this->opt->vehicle.road_side;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
187 const StringID *items = _driveside_dropdown;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
188 uint disabled = 0;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
189
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
190 /* You can only change the drive side if you are in the menu or ingame with
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
191 * no vehicles present. In a networking game only the server can change it */
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
192 extern bool RoadVehiclesAreBuilt();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
193 if ((_game_mode != GM_MENU && RoadVehiclesAreBuilt()) || (_networking && !_network_server)) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
194 disabled = ~(1 << this->opt->vehicle.road_side); // disable the other value
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
195 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
196
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
197 for (uint i = 0; *items != INVALID_STRING_ID; items++, i++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
198 list->push_back(new DropDownListStringItem(*items, i, HasBit(disabled, i)));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
199 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
200 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
201 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
202
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
203 case WID_GO_TOWNNAME_DROPDOWN: { // Setup townname dropdown
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
204 list = new DropDownList();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
205 *selected_index = this->opt->game_creation.town_name;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
206
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
207 int enabled_item = (_game_mode == GM_MENU || Town::GetNumItems() == 0) ? -1 : *selected_index;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
208
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
209 /* Add and sort original townnames generators */
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
210 for (int i = 0; i < _nb_orig_names; i++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
211 list->push_back(new DropDownListStringItem(STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH + i, i, enabled_item != i && enabled_item >= 0));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
212 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
213 list->sort(DropDownListStringItem::NatSortFunc);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
214
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
215 /* Add and sort newgrf townnames generators */
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
216 DropDownList newgrf_names;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
217 for (int i = 0; i < _nb_grf_names; i++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
218 int result = _nb_orig_names + i;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
219 newgrf_names.push_back(new DropDownListStringItem(_grf_names[i], result, enabled_item != result && enabled_item >= 0));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
220 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
221 newgrf_names.sort(DropDownListStringItem::NatSortFunc);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
222
17551
8fb428581ca6 (svn r22315) -Fix (r22314): Update comment as well.
frosch <frosch@openttd.org>
parents: 17550
diff changeset
223 /* Insert newgrf_names at the top of the list */
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
224 if (newgrf_names.size() > 0) {
17550
e80129e532c7 (svn r22314) -Change: Put NewGRF supplied townnames at the top of the dropdown list.
frosch <frosch@openttd.org>
parents: 17548
diff changeset
225 newgrf_names.push_back(new DropDownListItem(-1, false)); // separator line
e80129e532c7 (svn r22314) -Change: Put NewGRF supplied townnames at the top of the dropdown list.
frosch <frosch@openttd.org>
parents: 17548
diff changeset
226 list->splice(list->begin(), newgrf_names);
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
227 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
228 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
229 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
230
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
231 case WID_GO_AUTOSAVE_DROPDOWN: { // Setup autosave dropdown
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
232 list = new DropDownList();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
233 *selected_index = _settings_client.gui.autosave;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
234 const StringID *items = _autosave_dropdown;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
235 for (uint i = 0; *items != INVALID_STRING_ID; items++, i++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
236 list->push_back(new DropDownListStringItem(*items, i, false));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
237 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
238 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
239 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
240
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
241 case WID_GO_LANG_DROPDOWN: { // Setup interface language dropdown
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
242 list = new DropDownList();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
243 for (uint i = 0; i < _languages.Length(); i++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
244 if (&_languages[i] == _current_language) *selected_index = i;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
245 list->push_back(new DropDownListStringItem(SPECSTR_LANGUAGE_START + i, i, false));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
246 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
247 list->sort(DropDownListStringItem::NatSortFunc);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
248 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
249 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
250
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
251 case WID_GO_RESOLUTION_DROPDOWN: // Setup resolution dropdown
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
252 list = new DropDownList();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
253 *selected_index = GetCurRes();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
254 for (int i = 0; i < _num_resolutions; i++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
255 list->push_back(new DropDownListStringItem(SPECSTR_RESOLUTION_START + i, i, false));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
256 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
257 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
258
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
259 case WID_GO_SCREENSHOT_DROPDOWN: // Setup screenshot format dropdown
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
260 list = new DropDownList();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
261 *selected_index = _cur_screenshot_format;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
262 for (uint i = 0; i < _num_screenshot_formats; i++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
263 list->push_back(new DropDownListStringItem(SPECSTR_SCREENSHOT_START + i, i, false));
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
264 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
265 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
266
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
267 case WID_GO_BASE_GRF_DROPDOWN:
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
268 list = BuiltSetDropDownList<BaseGraphics>(selected_index);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
269 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
270
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
271 case WID_GO_BASE_SFX_DROPDOWN:
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
272 list = BuiltSetDropDownList<BaseSounds>(selected_index);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
273 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
274
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
275 case WID_GO_BASE_MUSIC_DROPDOWN:
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
276 list = BuiltSetDropDownList<BaseMusic>(selected_index);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
277 break;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
278
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
279 default:
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
280 return NULL;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
281 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
282
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
283 return list;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
284 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
285
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
286 virtual void SetStringParameters(int widget) const
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
287 {
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
288 switch (widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
289 case WID_GO_CURRENCY_DROPDOWN: SetDParam(0, _currency_specs[this->opt->locale.currency].name); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
290 case WID_GO_DISTANCE_DROPDOWN: SetDParam(0, STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL + this->opt->locale.units); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
291 case WID_GO_ROADSIDE_DROPDOWN: SetDParam(0, STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT + this->opt->vehicle.road_side); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
292 case WID_GO_TOWNNAME_DROPDOWN: SetDParam(0, TownName(this->opt->game_creation.town_name)); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
293 case WID_GO_AUTOSAVE_DROPDOWN: SetDParam(0, _autosave_dropdown[_settings_client.gui.autosave]); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
294 case WID_GO_LANG_DROPDOWN: SetDParamStr(0, _current_language->own_name); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
295 case WID_GO_RESOLUTION_DROPDOWN: SetDParam(0, GetCurRes() == _num_resolutions ? STR_GAME_OPTIONS_RESOLUTION_OTHER : SPECSTR_RESOLUTION_START + GetCurRes()); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
296 case WID_GO_SCREENSHOT_DROPDOWN: SetDParam(0, SPECSTR_SCREENSHOT_START + _cur_screenshot_format); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
297 case WID_GO_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->name); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
298 case WID_GO_BASE_GRF_STATUS: SetDParam(0, BaseGraphics::GetUsedSet()->GetNumInvalid()); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
299 case WID_GO_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->name); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
300 case WID_GO_BASE_MUSIC_DROPDOWN: SetDParamStr(0, BaseMusic::GetUsedSet()->name); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
301 case WID_GO_BASE_MUSIC_STATUS: SetDParam(0, BaseMusic::GetUsedSet()->GetNumInvalid()); break;
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
302 }
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
303 }
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
304
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
305 virtual void DrawWidget(const Rect &r, int widget) const
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
306 {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
307 switch (widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
308 case WID_GO_BASE_GRF_DESCRIPTION:
13281
e241d1485669 (svn r17790) -Feature: translatable base sound/graphics set descriptions
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
309 SetDParamStr(0, BaseGraphics::GetUsedSet()->GetDescription(GetCurrentLanguageIsoCode()));
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
310 DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, STR_BLACK_RAW_STRING);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
311 break;
8190
eb210e97738e (svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas <belugas@openttd.org>
parents: 8189
diff changeset
312
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
313 case WID_GO_BASE_SFX_DESCRIPTION:
13281
e241d1485669 (svn r17790) -Feature: translatable base sound/graphics set descriptions
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
314 SetDParamStr(0, BaseSounds::GetUsedSet()->GetDescription(GetCurrentLanguageIsoCode()));
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
315 DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, STR_BLACK_RAW_STRING);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
316 break;
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
317
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
318 case WID_GO_BASE_MUSIC_DESCRIPTION:
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
319 SetDParamStr(0, BaseMusic::GetUsedSet()->GetDescription(GetCurrentLanguageIsoCode()));
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
320 DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, STR_BLACK_RAW_STRING);
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
321 break;
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
322 }
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
323 }
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
324
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
325 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
326 {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
327 switch (widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
328 case WID_GO_BASE_GRF_DESCRIPTION:
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
329 /* Find the biggest description for the default size. */
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
330 for (int i = 0; i < BaseGraphics::GetNumSets(); i++) {
13281
e241d1485669 (svn r17790) -Feature: translatable base sound/graphics set descriptions
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
331 SetDParamStr(0, BaseGraphics::GetSet(i)->GetDescription(GetCurrentLanguageIsoCode()));
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
332 size->height = max(size->height, (uint)GetStringHeight(STR_BLACK_RAW_STRING, size->width));
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
333 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
334 break;
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
335
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
336 case WID_GO_BASE_GRF_STATUS:
12704
dba29babe01f (svn r17167) -Fix: don't resize the 'base grf status' text part in the game options window when there is no base graphics set that misses files.
rubidium <rubidium@openttd.org>
parents: 12684
diff changeset
337 /* Find the biggest description for the default size. */
dba29babe01f (svn r17167) -Fix: don't resize the 'base grf status' text part in the game options window when there is no base graphics set that misses files.
rubidium <rubidium@openttd.org>
parents: 12684
diff changeset
338 for (int i = 0; i < BaseGraphics::GetNumSets(); i++) {
12771
7a25de72eb71 (svn r17241) -Change: make a distinction between missing and corrupted data files. If (at least) one data file is missing do not consider the set to be useable. Do also no autodetect sets with missing files.
rubidium <rubidium@openttd.org>
parents: 12704
diff changeset
339 uint invalid_files = BaseGraphics::GetSet(i)->GetNumInvalid();
7a25de72eb71 (svn r17241) -Change: make a distinction between missing and corrupted data files. If (at least) one data file is missing do not consider the set to be useable. Do also no autodetect sets with missing files.
rubidium <rubidium@openttd.org>
parents: 12704
diff changeset
340 if (invalid_files == 0) continue;
12704
dba29babe01f (svn r17167) -Fix: don't resize the 'base grf status' text part in the game options window when there is no base graphics set that misses files.
rubidium <rubidium@openttd.org>
parents: 12684
diff changeset
341
12771
7a25de72eb71 (svn r17241) -Change: make a distinction between missing and corrupted data files. If (at least) one data file is missing do not consider the set to be useable. Do also no autodetect sets with missing files.
rubidium <rubidium@openttd.org>
parents: 12704
diff changeset
342 SetDParam(0, invalid_files);
12704
dba29babe01f (svn r17167) -Fix: don't resize the 'base grf status' text part in the game options window when there is no base graphics set that misses files.
rubidium <rubidium@openttd.org>
parents: 12684
diff changeset
343 *size = maxdim(*size, GetStringBoundingBox(STR_GAME_OPTIONS_BASE_GRF_STATUS));
dba29babe01f (svn r17167) -Fix: don't resize the 'base grf status' text part in the game options window when there is no base graphics set that misses files.
rubidium <rubidium@openttd.org>
parents: 12684
diff changeset
344 }
dba29babe01f (svn r17167) -Fix: don't resize the 'base grf status' text part in the game options window when there is no base graphics set that misses files.
rubidium <rubidium@openttd.org>
parents: 12684
diff changeset
345 break;
dba29babe01f (svn r17167) -Fix: don't resize the 'base grf status' text part in the game options window when there is no base graphics set that misses files.
rubidium <rubidium@openttd.org>
parents: 12684
diff changeset
346
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
347 case WID_GO_BASE_SFX_DESCRIPTION:
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
348 /* Find the biggest description for the default size. */
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
349 for (int i = 0; i < BaseSounds::GetNumSets(); i++) {
13281
e241d1485669 (svn r17790) -Feature: translatable base sound/graphics set descriptions
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
350 SetDParamStr(0, BaseSounds::GetSet(i)->GetDescription(GetCurrentLanguageIsoCode()));
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
351 size->height = max(size->height, (uint)GetStringHeight(STR_BLACK_RAW_STRING, size->width));
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
352 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
353 break;
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
354
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
355 case WID_GO_BASE_MUSIC_DESCRIPTION:
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
356 /* Find the biggest description for the default size. */
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
357 for (int i = 0; i < BaseMusic::GetNumSets(); i++) {
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
358 SetDParamStr(0, BaseMusic::GetSet(i)->GetDescription(GetCurrentLanguageIsoCode()));
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
359 size->height = max(size->height, (uint)GetStringHeight(STR_BLACK_RAW_STRING, size->width));
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
360 }
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
361 break;
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
362
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
363 case WID_GO_BASE_MUSIC_STATUS:
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
364 /* Find the biggest description for the default size. */
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
365 for (int i = 0; i < BaseMusic::GetNumSets(); i++) {
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
366 uint invalid_files = BaseMusic::GetSet(i)->GetNumInvalid();
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
367 if (invalid_files == 0) continue;
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
368
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
369 SetDParam(0, invalid_files);
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
370 *size = maxdim(*size, GetStringBoundingBox(STR_GAME_OPTIONS_BASE_MUSIC_STATUS));
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
371 }
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
372 break;
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
373
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
374 default: {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
375 int selected;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
376 DropDownList *list = this->BuildDropDownList(widget, &selected);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
377 if (list != NULL) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
378 /* Find the biggest item for the default size. */
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
379 for (DropDownList::iterator it = list->begin(); it != list->end(); it++) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
380 static const Dimension extra = {WD_DROPDOWNTEXT_LEFT + WD_DROPDOWNTEXT_RIGHT, WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM};
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
381 Dimension string_dim;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
382 int width = (*it)->Width();
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
383 string_dim.width = width + extra.width;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
384 string_dim.height = (*it)->Height(width) + extra.height;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
385 *size = maxdim(*size, string_dim);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
386 delete *it;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
387 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
388 delete list;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
389 }
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
390 }
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
391 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
392 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
393
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14385
diff changeset
394 virtual void OnClick(Point pt, int widget, int click_count)
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
395 {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
396 switch (widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
397 case WID_GO_FULLSCREEN_BUTTON: // Click fullscreen on/off
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
398 /* try to toggle full-screen on/off */
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
399 if (!ToggleFullScreen(!_fullscreen)) {
14645
b7a22979b84e (svn r19224) -Codechange: change parameters passed to ShowErrorMessage() a bit
smatz <smatz@openttd.org>
parents: 14510
diff changeset
400 ShowErrorMessage(STR_ERROR_FULLSCREEN_FAILED, INVALID_STRING_ID, WL_ERROR);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
401 }
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
402 this->SetWidgetLoweredState(WID_GO_FULLSCREEN_BUTTON, _fullscreen);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
403 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
404 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
405
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
406 default: {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
407 int selected;
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
408 DropDownList *list = this->BuildDropDownList(widget, &selected);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
409 if (list != NULL) {
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
410 ShowDropDownList(this, list, selected, widget);
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
411 }
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
412 break;
17548
c0fce44f4000 (svn r22312) -Codechange: Add GameOptionsWindow::BuildDropDownList() for construction of all dropdown lists in the GameOptionsWindow.
frosch <frosch@openttd.org>
parents: 17486
diff changeset
413 }
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
414 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
415 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
416
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
417 /**
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
418 * Set the base media set.
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
419 * @param index the index of the media set
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
420 * @tparam T class of media set
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
421 */
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
422 template <class T>
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
423 void SetMediaSet(int index)
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
424 {
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
425 if (_game_mode == GM_MENU) {
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
426 const char *name = T::GetSet(index)->name;
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
427
18362
d7607ed4eef6 (svn r23198) -Codechange: introduce a free that takes const pointers so we don't need to cast to void/non-const before being able to free
rubidium <rubidium@openttd.org>
parents: 17827
diff changeset
428 free(T::ini_set);
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
429 T::ini_set = strdup(name);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
430
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
431 T::SetSet(name);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
432 this->reload = true;
13169
1f44cefc7825 (svn r17674) -Codechange: replace SetDirty + OnInvalidateData with InvalidateData (which does the same). Also call InvalidateData in a few cases where that was actually meant.
rubidium <rubidium@openttd.org>
parents: 13139
diff changeset
433 this->InvalidateData();
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
434 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
435 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
436
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
437 virtual void OnDropdownSelect(int widget, int index)
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
438 {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
439 switch (widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
440 case WID_GO_CURRENCY_DROPDOWN: // Currency
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
441 if (index == CUSTOM_CURRENCY_ID) ShowCustCurrency();
9466
f81fe8c0065a (svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium <rubidium@openttd.org>
parents: 9421
diff changeset
442 this->opt->locale.currency = index;
16302
78ed3fe0f2ee (svn r21010) -Fix [FS#4102]: the detailed performance rating window would occasionally be too narrow. Based on a patch by Krille
rubidium <rubidium@openttd.org>
parents: 16034
diff changeset
443 ReInitAllWindows();
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
444 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
445
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
446 case WID_GO_DISTANCE_DROPDOWN: // Measuring units
9466
f81fe8c0065a (svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium <rubidium@openttd.org>
parents: 9421
diff changeset
447 this->opt->locale.units = index;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
448 MarkWholeScreenDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
449 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
450
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
451 case WID_GO_ROADSIDE_DROPDOWN: // Road side
11075
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
452 if (this->opt->vehicle.road_side != index) { // only change if setting changed
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
453 uint i;
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
454 if (GetSettingFromName("vehicle.road_side", &i) == NULL) NOT_REACHED();
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
455 SetSettingValue(i, index);
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
456 MarkWholeScreenDirty();
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
457 }
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
458 break;
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
459
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
460 case WID_GO_TOWNNAME_DROPDOWN: // Town names
11973
e17a54c88806 (svn r16379) -Codechange: remove GetNumTowns(), GetNumIndustries() and GetActiveCompanyCount(), use PoolItem::GetNumItems() instead
smatz <smatz@openttd.org>
parents: 11939
diff changeset
461 if (_game_mode == GM_MENU || Town::GetNumItems() == 0) {
9358
12f4585b2124 (svn r13255) -Codechange: move _opt to _settings.
rubidium <rubidium@openttd.org>
parents: 9354
diff changeset
462 this->opt->game_creation.town_name = index;
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18703
diff changeset
463 SetWindowDirty(WC_GAME_OPTIONS, WN_GAME_OPTIONS_GAME_OPTIONS);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
464 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
465 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
466
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
467 case WID_GO_AUTOSAVE_DROPDOWN: // Autosave options
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9359
diff changeset
468 _settings_client.gui.autosave = index;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
469 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
470 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
471
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
472 case WID_GO_LANG_DROPDOWN: // Change interface language
16448
a94bb23bd67b (svn r21164) -Codechange: replace the hardcoded array of language metadata with a list
rubidium <rubidium@openttd.org>
parents: 16447
diff changeset
473 ReadLanguagePack(&_languages[index]);
16823
3a844b1791a9 (svn r21557) -Change: close the query windows when changing the language as often the strings are partly translated, which causes trouble in some cases
rubidium <rubidium@openttd.org>
parents: 16772
diff changeset
474 DeleteWindowByClass(WC_QUERY_STRING);
18431
d167deadae56 (svn r23273) -Codechange: allow passing a MissingGlyphSearcher to CheckForMissingGlyphs (default to the language pack strings)
rubidium <rubidium@openttd.org>
parents: 18427
diff changeset
475 CheckForMissingGlyphs();
13950
77bfe67f23bd (svn r18486) -Fix: when switching language and you're getting a different font, recalculate the coordinates/sizes of the viewport signs. Otherwise it gets glitchy or abbreviated (in the smallmap)
rubidium <rubidium@openttd.org>
parents: 13834
diff changeset
476 UpdateAllVirtCoords();
12272
c8708dfd0118 (svn r16687) -Codechange: Perform re-initialization of windows with nested widgets after a language change.
alberth <alberth@openttd.org>
parents: 12262
diff changeset
477 ReInitAllWindows();
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
478 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
479
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
480 case WID_GO_RESOLUTION_DROPDOWN: // Change resolution
9533
176a9fe1018f (svn r13537) -Fix [FS#2090](r13523): QSortT won't work this way, use Dimension instead of uint16[2] for resolutions
smatz <smatz@openttd.org>
parents: 9466
diff changeset
481 if (index < _num_resolutions && ChangeResInGame(_resolutions[index].width, _resolutions[index].height)) {
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
482 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
483 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
484 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
485
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
486 case WID_GO_SCREENSHOT_DROPDOWN: // Change screenshot format
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
487 SetScreenshotFormat(index);
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
488 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
489 break;
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
490
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
491 case WID_GO_BASE_GRF_DROPDOWN:
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
492 this->SetMediaSet<BaseGraphics>(index);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
493 break;
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
494
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
495 case WID_GO_BASE_SFX_DROPDOWN:
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
496 this->SetMediaSet<BaseSounds>(index);
11049
ed93627e213f (svn r15389) -Feature: Add ability to select which base graphics set is used from the Game Options window. The change takes effect when the window is closed. This option can only be used from the intro menu, as reloading graphics during a game may cause issues.
peter1138 <peter1138@openttd.org>
parents: 11000
diff changeset
497 break;
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
498
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
499 case WID_GO_BASE_MUSIC_DROPDOWN:
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
500 this->SetMediaSet<BaseMusic>(index);
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
501 break;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
502 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
503 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
504
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
505 /**
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
506 * Some data on this window has become invalid.
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17645
diff changeset
507 * @param data Information about the changed data. @see GameOptionsInvalidationData
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
508 * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
509 */
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
510 virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
511 {
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
512 if (!gui_scope) return;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
513 this->SetWidgetLoweredState(WID_GO_FULLSCREEN_BUTTON, _fullscreen);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
514
12678
ea203bb44a25 (svn r17133) -Codechange: generalise the code that searches for base graphics
rubidium <rubidium@openttd.org>
parents: 12676
diff changeset
515 bool missing_files = BaseGraphics::GetUsedSet()->GetNumMissing() == 0;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
516 this->GetWidget<NWidgetCore>(WID_GO_BASE_GRF_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_GRF_STATUS, STR_NULL);
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
517
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
518 missing_files = BaseMusic::GetUsedSet()->GetNumInvalid() == 0;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
519 this->GetWidget<NWidgetCore>(WID_GO_BASE_MUSIC_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_MUSIC_STATUS, STR_NULL);
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
520 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
521 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
522
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
523 static const NWidgetPart _nested_game_options_widgets[] = {
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
524 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
525 NWidget(WWT_CLOSEBOX, COLOUR_GREY),
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
526 NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
527 EndContainer(),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
528 NWidget(WWT_PANEL, COLOUR_GREY, WID_GO_BACKGROUND), SetPIP(6, 6, 10),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
529 NWidget(NWID_HORIZONTAL), SetPIP(10, 10, 10),
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
530 NWidget(NWID_VERTICAL), SetPIP(0, 6, 0),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
531 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
532 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
533 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
534 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME, STR_NULL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
535 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_ROADSIDE_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP), SetFill(1, 0),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
536 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
537 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_AUTOSAVE_FRAME, STR_NULL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
538 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_AUTOSAVE_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP), SetFill(1, 0),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
539 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
540 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_RESOLUTION, STR_NULL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
541 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_RESOLUTION_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_RESOLUTION_TOOLTIP), SetFill(1, 0), SetPadding(0, 0, 3, 0),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
542 NWidget(NWID_HORIZONTAL),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
543 NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_FULLSCREEN, STR_NULL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
544 NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_FULLSCREEN_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
545 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
546 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
547 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
548
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
549 NWidget(NWID_VERTICAL), SetPIP(0, 6, 0),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
550 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_MEASURING_UNITS_FRAME, STR_NULL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
551 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_DISTANCE_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_MEASURING_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
552 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
553 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_TOWN_NAMES_FRAME, STR_NULL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
554 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_TOWNNAME_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP), SetFill(1, 0),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
555 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
556 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_LANGUAGE, STR_NULL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
557 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_LANG_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_RAW_STRING, STR_GAME_OPTIONS_LANGUAGE_TOOLTIP), SetFill(1, 0),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
558 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
559 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_SCREENSHOT_FORMAT, STR_NULL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
560 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_SCREENSHOT_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_STRING, STR_GAME_OPTIONS_SCREENSHOT_FORMAT_TOOLTIP), SetFill(1, 0),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
561 EndContainer(),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
562 NWidget(NWID_SPACER), SetMinimalSize(0, 0), SetFill(0, 1),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
563 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
564 EndContainer(),
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
565
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
566 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_GRF, STR_NULL), SetPadding(0, 10, 0, 10),
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
567 NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 0),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
568 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_GRF_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_RAW_STRING, STR_GAME_OPTIONS_BASE_GRF_TOOLTIP),
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
569 NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_GRF_STATUS), SetMinimalSize(150, 12), SetDataTip(STR_EMPTY, STR_NULL), SetFill(1, 0),
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
570 EndContainer(),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
571 NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_GRF_DESCRIPTION), SetMinimalSize(330, 0), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 0, 0),
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
572 EndContainer(),
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
573
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
574 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_SFX, STR_NULL), SetPadding(0, 10, 0, 10),
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13665
diff changeset
575 NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 0),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
576 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_SFX_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_RAW_STRING, STR_GAME_OPTIONS_BASE_SFX_TOOLTIP),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
577 NWidget(NWID_SPACER), SetFill(1, 0),
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
578 EndContainer(),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
579 NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_SFX_DESCRIPTION), SetMinimalSize(330, 0), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 0, 0),
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
580 EndContainer(),
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
581
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
582 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_MUSIC, STR_NULL), SetPadding(0, 10, 0, 10),
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
583 NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 0),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
584 NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_MUSIC_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_RAW_STRING, STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP),
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
585 NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_MUSIC_STATUS), SetMinimalSize(150, 12), SetDataTip(STR_EMPTY, STR_NULL), SetFill(1, 0),
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
586 EndContainer(),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
587 NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_MUSIC_DESCRIPTION), SetMinimalSize(330, 0), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 0, 0),
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
588 EndContainer(),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
589 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
590 };
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
591
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
592 static const WindowDesc _game_options_desc(
13798
6f820ae12bb3 (svn r18324) -Codechange: there's no need for a default size when the window isn't resizable
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
593 WDP_CENTER, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5688
diff changeset
594 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
595 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
596 _nested_game_options_widgets, lengthof(_nested_game_options_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
597 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
598
16734
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
599 /** Open the game options window. */
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
600 void ShowGameOptions()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
601 {
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18703
diff changeset
602 DeleteWindowByClass(WC_GAME_OPTIONS);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
603 new GameOptionsWindow(&_game_options_desc);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
604 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
605
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
606 extern void StartupEconomy();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
607
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
608 void SetDifficultyLevel(int mode, DifficultySettings *gm_opt);
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
609
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
610 class GameDifficultyWindow : public Window {
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
611 private:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
612 /* Temporary holding place of values in the difficulty window until 'Save' is clicked */
9413
512ea64da840 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium <rubidium@openttd.org>
parents: 9359
diff changeset
613 GameSettings opt_mod_temp;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
614
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
615 public:
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
616 /** The number of difficulty settings */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
617 static const uint GAME_DIFFICULTY_NUM = 18;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
618 /** The number of widgets per difficulty setting */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
619 static const uint WIDGETS_PER_DIFFICULTY = 3;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
620
13132
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
621 GameDifficultyWindow(const WindowDesc *desc) : Window()
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
622 {
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18703
diff changeset
623 this->InitNested(desc, WN_GAME_OPTIONS_GAME_DIFFICULTY);
13131
f78f54c02ea0 (svn r17636) -Codechange: make the difficulty setting window nested
rubidium <rubidium@openttd.org>
parents: 13088
diff changeset
624
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
625 /* Setup disabled buttons when creating window
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
626 * disable all other difficulty buttons during gameplay except for 'custom' */
13139
3064addfd0ec (svn r17644) -Fix [FS#3219]: some inconsistencies with the difficulty settings in the scenario editor. Also re-enable changing some difficulty settings (e.g. max loan) in the scenario editor.
rubidium <rubidium@openttd.org>
parents: 13136
diff changeset
627 this->SetWidgetsDisabledState(_game_mode != GM_MENU,
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
628 WID_GD_LVL_EASY,
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
629 WID_GD_LVL_MEDIUM,
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
630 WID_GD_LVL_HARD,
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
631 WID_GD_LVL_CUSTOM,
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
632 WIDGET_LIST_END);
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
633 this->SetWidgetDisabledState(WID_GD_HIGHSCORE, _game_mode == GM_EDITOR || _networking); // highscore chart in multiplayer
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
634 this->SetWidgetDisabledState(WID_GD_ACCEPT, _networking && !_network_server); // Save-button in multiplayer (and if client)
17827
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
635
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
636 /* Read data */
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
637 this->OnInvalidateData(GOID_DIFFICULTY_CHANGED);
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
638 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
639
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
640 virtual void SetStringParameters(int widget) const
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
641 {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
642 widget -= WID_GD_OPTIONS_START;
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
643 if (widget < 0 || (widget % 3) != 2) return;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
644
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
645 widget /= 3;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
646
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
647 uint i;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
648 const SettingDesc *sd = GetSettingFromName("difficulty.max_no_competitors", &i) + widget;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
649 int32 value = (int32)ReadValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv);
17456
6dce16791f02 (svn r22210) -Add: Add a variable for the value strings in the settings tables.
alberth <alberth@openttd.org>
parents: 17444
diff changeset
650 SetDParam(0, sd->desc.val_str + value);
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
651 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
652
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
653 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
654 {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
655 /* Only for the 'descriptions' */
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
656 int index = widget - WID_GD_OPTIONS_START;
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
657 if (index < 0 || (index % 3) != 2) return;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
658
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
659 index /= 3;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
660
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
661 uint i;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
662 const SettingDesc *sd = GetSettingFromName("difficulty.max_no_competitors", &i) + index;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
663 const SettingDescBase *sdb = &sd->desc;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
664
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
665 /* Get the string and try all strings from the smallest to the highest value */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
666 StringID str = this->GetWidget<NWidgetCore>(widget)->widget_data;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
667 for (int32 value = sdb->min; (uint32)value <= sdb->max; value += sdb->interval) {
17456
6dce16791f02 (svn r22210) -Add: Add a variable for the value strings in the settings tables.
alberth <alberth@openttd.org>
parents: 17444
diff changeset
668 SetDParam(0, sdb->val_str + value);
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
669 *size = maxdim(*size, GetStringBoundingBox(str));
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
670 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
671 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
672
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14385
diff changeset
673 virtual void OnClick(Point pt, int widget, int click_count)
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
674 {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
675 if (widget >= WID_GD_OPTIONS_START) {
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
676 widget -= WID_GD_OPTIONS_START;
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
677 if ((widget % 3) == 2) return;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
678
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
679 /* Don't allow clients to make any changes */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
680 if (_networking && !_network_server) return;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
681
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
682 uint i;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
683 const SettingDesc *sd = GetSettingFromName("difficulty.max_no_competitors", &i) + (widget / 3);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
684 const SettingDescBase *sdb = &sd->desc;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
685
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
686 int32 val = (int32)ReadValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
687 if (widget % 3 == 1) {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
688 /* Increase button clicked */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
689 val = min(val + sdb->interval, (int32)sdb->max);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
690 } else {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
691 /* Decrease button clicked */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
692 val -= sdb->interval;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
693 val = max(val, sdb->min);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
694 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
695
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
696 /* save value in temporary variable */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
697 WriteValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv, val);
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
698 this->RaiseWidget(WID_GD_LVL_EASY + this->opt_mod_temp.difficulty.diff_level);
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
699 SetDifficultyLevel(3, &this->opt_mod_temp.difficulty); // set difficulty level to custom
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
700 this->LowerWidget(WID_GD_LVL_CUSTOM);
13169
1f44cefc7825 (svn r17674) -Codechange: replace SetDirty + OnInvalidateData with InvalidateData (which does the same). Also call InvalidateData in a few cases where that was actually meant.
rubidium <rubidium@openttd.org>
parents: 13139
diff changeset
701 this->InvalidateData();
14330
9caa7d57a6e3 (svn r18883) -Codechange: warn in the difficulty and AI configuration window when setting the number of AIs to non-zero when you don't have AIs
rubidium <rubidium@openttd.org>
parents: 14258
diff changeset
702
14510
38952764f91f (svn r19081) -Codechange: make it possible to disable compilation of the AI+Squirrel
rubidium <rubidium@openttd.org>
parents: 14493
diff changeset
703 if (widget / 3 == 0 &&
38952764f91f (svn r19081) -Codechange: make it possible to disable compilation of the AI+Squirrel
rubidium <rubidium@openttd.org>
parents: 14493
diff changeset
704 AI::GetInfoList()->size() == 0 &&
38952764f91f (svn r19081) -Codechange: make it possible to disable compilation of the AI+Squirrel
rubidium <rubidium@openttd.org>
parents: 14493
diff changeset
705 this->opt_mod_temp.difficulty.max_no_competitors != 0) {
14645
b7a22979b84e (svn r19224) -Codechange: change parameters passed to ShowErrorMessage() a bit
smatz <smatz@openttd.org>
parents: 14510
diff changeset
706 ShowErrorMessage(STR_WARNING_NO_SUITABLE_AI, INVALID_STRING_ID, WL_CRITICAL);
14330
9caa7d57a6e3 (svn r18883) -Codechange: warn in the difficulty and AI configuration window when setting the number of AIs to non-zero when you don't have AIs
rubidium <rubidium@openttd.org>
parents: 14258
diff changeset
707 }
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
708 return;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
709 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
710
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
711 switch (widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
712 case WID_GD_LVL_EASY:
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
713 case WID_GD_LVL_MEDIUM:
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
714 case WID_GD_LVL_HARD:
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
715 case WID_GD_LVL_CUSTOM:
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
716 /* temporarily change difficulty level */
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
717 this->RaiseWidget(WID_GD_LVL_EASY + this->opt_mod_temp.difficulty.diff_level);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
718 SetDifficultyLevel(widget - WID_GD_LVL_EASY, &this->opt_mod_temp.difficulty);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
719 this->LowerWidget(WID_GD_LVL_EASY + this->opt_mod_temp.difficulty.diff_level);
13169
1f44cefc7825 (svn r17674) -Codechange: replace SetDirty + OnInvalidateData with InvalidateData (which does the same). Also call InvalidateData in a few cases where that was actually meant.
rubidium <rubidium@openttd.org>
parents: 13139
diff changeset
720 this->InvalidateData();
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
721 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
722
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
723 case WID_GD_HIGHSCORE: // Highscore Table
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
724 ShowHighscoreTable(this->opt_mod_temp.difficulty.diff_level, -1);
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
725 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
726
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
727 case WID_GD_ACCEPT: { // Save button - save changes
16959
55b2bec60c52 (svn r21695) -Codechange: add helper function to get the currently applicable GameSettings object
yexo <yexo@openttd.org>
parents: 16945
diff changeset
728 GameSettings *opt_ptr = &GetGameSettings();
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
729
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
730 uint i;
13088
1008c63fa996 (svn r17588) -Fix [FS#3220]: erroneous message about changing the difficulty level
rubidium <rubidium@openttd.org>
parents: 13072
diff changeset
731 GetSettingFromName("difficulty.diff_level", &i);
1008c63fa996 (svn r17588) -Fix [FS#3220]: erroneous message about changing the difficulty level
rubidium <rubidium@openttd.org>
parents: 13072
diff changeset
732 DoCommandP(0, i, this->opt_mod_temp.difficulty.diff_level, CMD_CHANGE_SETTING);
1008c63fa996 (svn r17588) -Fix [FS#3220]: erroneous message about changing the difficulty level
rubidium <rubidium@openttd.org>
parents: 13072
diff changeset
733
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
734 const SettingDesc *sd = GetSettingFromName("difficulty.max_no_competitors", &i);
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
735 for (uint btn = 0; btn != GAME_DIFFICULTY_NUM; btn++, sd++) {
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
736 int32 new_val = (int32)ReadValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv);
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
737 int32 cur_val = (int32)ReadValue(GetVariableAddress(opt_ptr, &sd->save), sd->save.conv);
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
738 /* if setting has changed, change it */
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
739 if (new_val != cur_val) {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
740 DoCommandP(0, i + btn, new_val, CMD_CHANGE_SETTING);
9346
0c181c088ed8 (svn r13242) -Codechange: remove _opt_ptr.
rubidium <rubidium@openttd.org>
parents: 9334
diff changeset
741 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
742 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
743 delete this;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
744 /* If we are in the editor, we should reload the economy.
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
745 * This way when you load a game, the max loan and interest rate
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
746 * are loaded correctly. */
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
747 if (_game_mode == GM_EDITOR) StartupEconomy();
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
748 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
749 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
750
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
751 case WID_GD_CANCEL: // Cancel button - close window, abandon changes
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
752 delete this;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
753 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
754 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
755 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
756
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
757 /**
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
758 * Some data on this window has become invalid.
17826
03d75c842b87 (svn r22617) -Codechange: Add GameOptionsInvalidationData enum for data values for Window::OnInvalidateData() of windows with class WC_GAME_OPTIONS.
frosch <frosch@openttd.org>
parents: 17645
diff changeset
759 * @param data Information about the changed data. @see GameOptionsInvalidationData
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
760 * @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
761 */
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
762 virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
763 {
17486
e7672bafbe1c (svn r22241) -Codechange: Add additional to-be-used parameter to OnInvalidateData().
frosch <frosch@openttd.org>
parents: 17456
diff changeset
764 if (!gui_scope) return;
17827
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
765
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
766 if (data == GOID_DIFFICULTY_CHANGED) {
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
767 /* Window was created or settings were changed on server. Reread everything. */
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
768
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
769 /* Copy current settings (ingame or in intro) to temporary holding place
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
770 * change that when setting stuff, copy back on clicking 'OK' */
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
771 this->opt_mod_temp = GetGameSettings();
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
772
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
773 this->LowerWidget(WID_GD_LVL_EASY + this->opt_mod_temp.difficulty.diff_level);
17827
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
774 }
808fd7d57d64 (svn r22618) -Fix [FS#4653]: When changing difficulty settings over the network, do not just reopen the difficulty window if any game options window is opened; instead invalidate them properly.
frosch <frosch@openttd.org>
parents: 17826
diff changeset
775
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
776 uint i;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
777 const SettingDesc *sd = GetSettingFromName("difficulty.max_no_competitors", &i);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
778 for (i = 0; i < GAME_DIFFICULTY_NUM; i++, sd++) {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
779 const SettingDescBase *sdb = &sd->desc;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
780 /* skip deprecated difficulty options */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
781 if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
782 int32 value = (int32)ReadValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv);
13139
3064addfd0ec (svn r17644) -Fix [FS#3219]: some inconsistencies with the difficulty settings in the scenario editor. Also re-enable changing some difficulty settings (e.g. max loan) in the scenario editor.
rubidium <rubidium@openttd.org>
parents: 13136
diff changeset
783 bool disable = (sd->desc.flags & SGF_NEWGAME_ONLY) &&
3064addfd0ec (svn r17644) -Fix [FS#3219]: some inconsistencies with the difficulty settings in the scenario editor. Also re-enable changing some difficulty settings (e.g. max loan) in the scenario editor.
rubidium <rubidium@openttd.org>
parents: 13136
diff changeset
784 (_game_mode == GM_NORMAL ||
3064addfd0ec (svn r17644) -Fix [FS#3219]: some inconsistencies with the difficulty settings in the scenario editor. Also re-enable changing some difficulty settings (e.g. max loan) in the scenario editor.
rubidium <rubidium@openttd.org>
parents: 13136
diff changeset
785 (_game_mode == GM_EDITOR && (sd->desc.flags & SGF_SCENEDIT_TOO) == 0));
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
786
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
787 this->SetWidgetDisabledState(WID_GD_OPTIONS_START + i * 3 + 0, disable || sdb->min == value);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
788 this->SetWidgetDisabledState(WID_GD_OPTIONS_START + i * 3 + 1, disable || sdb->max == (uint32)value);
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
789 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
790 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
791 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
792
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
793 static NWidgetBase *MakeDifficultyOptionsWidgets(int *biggest_index)
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
794 {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
795 NWidgetVertical *vert_desc = new NWidgetVertical;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
796
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
797 int widnum = WID_GD_OPTIONS_START;
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
798 uint i, j;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
799 const SettingDesc *sd = GetSettingFromName("difficulty.max_no_competitors", &i);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
800
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
801 for (i = 0, j = 0; i < GameDifficultyWindow::GAME_DIFFICULTY_NUM; i++, sd++, widnum += GameDifficultyWindow::WIDGETS_PER_DIFFICULTY) {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
802 if (!SlIsObjectCurrentlyValid(sd->save.version_from, sd->save.version_to)) continue;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
803
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
804 NWidgetHorizontal *hor = new NWidgetHorizontal;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
805
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
806 /* [<] button. */
15795
c9cf5fe6d6a1 (svn r20470) -Codechange: Make arrow buttons lower and raise like other buttons when clicked.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
807 NWidgetLeaf *leaf = new NWidgetLeaf(WWT_PUSHARROWBTN, COLOUR_YELLOW, widnum, AWV_DECREASE, STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST);
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
808 hor->Add(leaf);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
809
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
810 /* [>] button. */
15795
c9cf5fe6d6a1 (svn r20470) -Codechange: Make arrow buttons lower and raise like other buttons when clicked.
frosch <frosch@openttd.org>
parents: 15787
diff changeset
811 leaf = new NWidgetLeaf(WWT_PUSHARROWBTN, COLOUR_YELLOW, widnum + 1, AWV_INCREASE, STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST);
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
812 hor->Add(leaf);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
813
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
814 /* Some spacing between the text and the description */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
815 NWidgetSpacer *spacer = new NWidgetSpacer(5, 0);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
816 hor->Add(spacer);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
817
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
818 /* Descriptive text. */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
819 leaf = new NWidgetLeaf(WWT_TEXT, COLOUR_YELLOW, widnum + 2, STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS + (j++), STR_NULL);
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
820 leaf->SetFill(1, 0);
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
821 hor->Add(leaf);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
822 vert_desc->Add(hor);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
823
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
824 /* Space vertically */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
825 vert_desc->Add(new NWidgetSpacer(0, 2));
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
826 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
827 *biggest_index = widnum - 1;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
828 return vert_desc;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
829 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
830
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
831
13132
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
832 /** Widget definition for the game difficulty settings window */
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
833 static const NWidgetPart _nested_game_difficulty_widgets[] = {
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
834 NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_DIFFICULTY_LEVEL_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
835 NWidget(WWT_PANEL, COLOUR_MAUVE),
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
836 NWidget(NWID_VERTICAL), SetPIP(2, 0, 2),
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
837 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
838 NWidget(WWT_TEXTBTN, COLOUR_YELLOW, WID_GD_LVL_EASY), SetDataTip(STR_DIFFICULTY_LEVEL_EASY, STR_NULL), SetFill(1, 0),
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
839 NWidget(WWT_TEXTBTN, COLOUR_YELLOW, WID_GD_LVL_MEDIUM), SetDataTip(STR_DIFFICULTY_LEVEL_MEDIUM, STR_NULL), SetFill(1, 0),
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
840 NWidget(WWT_TEXTBTN, COLOUR_YELLOW, WID_GD_LVL_HARD), SetDataTip(STR_DIFFICULTY_LEVEL_HARD, STR_NULL), SetFill(1, 0),
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
841 NWidget(WWT_TEXTBTN, COLOUR_YELLOW, WID_GD_LVL_CUSTOM), SetDataTip(STR_DIFFICULTY_LEVEL_CUSTOM, STR_NULL), SetFill(1, 0),
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
842 EndContainer(),
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
843 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 10),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
844 NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GD_HIGHSCORE), SetDataTip(STR_DIFFICULTY_LEVEL_HIGH_SCORE_BUTTON, STR_NULL), SetFill(1, 0),
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
845 EndContainer(),
13132
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
846 EndContainer(),
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
847 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
848 NWidget(WWT_PANEL, COLOUR_MAUVE),
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
849 NWidget(NWID_VERTICAL), SetPIP(3, 0, 1),
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
850 NWidget(NWID_HORIZONTAL), SetPIP(5, 0, 5),
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
851 NWidgetFunction(MakeDifficultyOptionsWidgets),
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
852 EndContainer(),
13132
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
853 EndContainer(),
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
854 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
855 NWidget(WWT_PANEL, COLOUR_MAUVE),
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
856 NWidget(NWID_VERTICAL), SetPIP(2, 0, 2),
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
857 NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
858 NWidget(NWID_SPACER), SetFill(1, 0),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
859 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GD_ACCEPT), SetDataTip(STR_DIFFICULTY_LEVEL_SAVE, STR_NULL), SetFill(1, 0),
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
860 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GD_CANCEL), SetDataTip(STR_BUTTON_CANCEL, STR_NULL), SetFill(1, 0),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
861 NWidget(NWID_SPACER), SetFill(1, 0),
13134
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
862 EndContainer(),
13132
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
863 EndContainer(),
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
864 EndContainer(),
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
865 };
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
866
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
867 /** Window definition for the game difficulty settings window */
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
868 static const WindowDesc _game_difficulty_desc(
13798
6f820ae12bb3 (svn r18324) -Codechange: there's no need for a default size when the window isn't resizable
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
869 WDP_CENTER, 0, 0,
13132
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
870 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
871 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
872 _nested_game_difficulty_widgets, lengthof(_nested_game_difficulty_widgets)
13132
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
873 );
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
874
16734
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
875 /** Open the game-difficulty window. */
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
876 void ShowGameDifficulty()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
877 {
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18703
diff changeset
878 DeleteWindowByClass(WC_GAME_OPTIONS);
13132
dc0ab6265137 (svn r17637) -Codechange: move the game difficulty window's window/widget description below the window class
rubidium <rubidium@openttd.org>
parents: 13131
diff changeset
879 new GameDifficultyWindow(&_game_difficulty_desc);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
880 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
881
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
882 static int SETTING_HEIGHT = 11; ///< Height of a single setting in the tree view in pixels
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
883 static const int LEVEL_WIDTH = 15; ///< Indenting width of a sub-page in pixels
10538
24ddd67a00be (svn r14795) -Codechange: replace a magic number with a constant (Alberth)
rubidium <rubidium@openttd.org>
parents: 10537
diff changeset
884
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
885 /**
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
886 * Flags for #SettingEntry
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
887 * @note The #SEF_BUTTONS_MASK matches expectations of the formal parameter 'state' of #DrawArrowButtons
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
888 */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
889 enum SettingEntryFlags {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
890 SEF_LEFT_DEPRESSED = 0x01, ///< Of a numeric setting entry, the left button is depressed
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
891 SEF_RIGHT_DEPRESSED = 0x02, ///< Of a numeric setting entry, the right button is depressed
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
892 SEF_BUTTONS_MASK = (SEF_LEFT_DEPRESSED | SEF_RIGHT_DEPRESSED), ///< Bit-mask for button flags
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
893
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
894 SEF_LAST_FIELD = 0x04, ///< This entry is the last one in a (sub-)page
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
895
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
896 /* Entry kind */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
897 SEF_SETTING_KIND = 0x10, ///< Entry kind: Entry is a setting
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
898 SEF_SUBTREE_KIND = 0x20, ///< Entry kind: Entry is a sub-tree
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
899 SEF_KIND_MASK = (SEF_SETTING_KIND | SEF_SUBTREE_KIND), ///< Bit-mask for fetching entry kind
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
900 };
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
901
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
902 struct SettingsPage; // Forward declaration
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
903
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
904 /** Data fields for a sub-page (#SEF_SUBTREE_KIND kind)*/
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
905 struct SettingEntrySubtree {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
906 SettingsPage *page; ///< Pointer to the sub-page
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
907 bool folded; ///< Sub-page is folded (not visible except for its title)
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
908 StringID title; ///< Title of the sub-page
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
909 };
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
910
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
911 /** Data fields for a single setting (#SEF_SETTING_KIND kind) */
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
912 struct SettingEntrySetting {
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
913 const char *name; ///< Name of the setting
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
914 const SettingDesc *setting; ///< Setting description of the setting
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
915 uint index; ///< Index of the setting in the settings table
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
916 };
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
917
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
918 /** Data structure describing a single setting in a tab */
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
919 struct SettingEntry {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
920 byte flags; ///< Flags of the setting entry. @see SettingEntryFlags
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
921 byte level; ///< Nesting level of this setting entry
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
922 union {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
923 SettingEntrySetting entry; ///< Data fields if entry is a setting
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
924 SettingEntrySubtree sub; ///< Data fields if entry is a sub-page
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
925 } d; ///< Data fields for each kind
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
926
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
927 SettingEntry(const char *nm);
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
928 SettingEntry(SettingsPage *sub, StringID title);
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
929
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
930 void Init(byte level, bool last_field);
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
931 void FoldAll();
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
932 void SetButtons(byte new_val);
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
933
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
934 uint Length() const;
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
935 SettingEntry *FindEntry(uint row, uint *cur_row);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
936
11217
bbb1eaa48906 (svn r15570) -Fix: Too long strings in the advanced settings window are now truncated.
yexo <yexo@openttd.org>
parents: 11085
diff changeset
937 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);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
938
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
939 private:
11217
bbb1eaa48906 (svn r15570) -Fix: Too long strings in the advanced settings window are now truncated.
yexo <yexo@openttd.org>
parents: 11085
diff changeset
940 void DrawSetting(GameSettings *settings_ptr, const SettingDesc *sd, int x, int y, int max_x, int state);
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
941 };
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
942
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
943 /** Data structure describing one page of settings in the settings window. */
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
944 struct SettingsPage {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
945 SettingEntry *entries; ///< Array of setting entries of the page.
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
946 byte num; ///< Number of entries on the page (statically filled).
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
947
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
948 void Init(byte level = 0);
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
949 void FoldAll();
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
950
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
951 uint Length() const;
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
952 SettingEntry *FindEntry(uint row, uint *cur_row) const;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
953
11217
bbb1eaa48906 (svn r15570) -Fix: Too long strings in the advanced settings window are now truncated.
yexo <yexo@openttd.org>
parents: 11085
diff changeset
954 uint Draw(GameSettings *settings_ptr, int base_x, int base_y, int max_x, uint first_row, uint max_row, uint cur_row = 0, uint parent_last = 0) const;
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
955 };
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
956
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
957
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
958 /* == SettingEntry methods == */
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
959
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
960 /**
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
961 * Constructor for a single setting in the 'advanced settings' window
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
962 * @param nm Name of the setting in the setting table
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
963 */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
964 SettingEntry::SettingEntry(const char *nm)
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
965 {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
966 this->flags = SEF_SETTING_KIND;
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
967 this->level = 0;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
968 this->d.entry.name = nm;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
969 this->d.entry.setting = NULL;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
970 this->d.entry.index = 0;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
971 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
972
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
973 /**
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
974 * Constructor for a sub-page in the 'advanced settings' window
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
975 * @param sub Sub-page
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
976 * @param title Title of the sub-page
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
977 */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
978 SettingEntry::SettingEntry(SettingsPage *sub, StringID title)
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
979 {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
980 this->flags = SEF_SUBTREE_KIND;
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
981 this->level = 0;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
982 this->d.sub.page = sub;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
983 this->d.sub.folded = true;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
984 this->d.sub.title = title;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
985 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
986
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
987 /**
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
988 * Initialization of a setting entry
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
989 * @param level Page nesting level of this entry
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
990 * @param last_field Boolean indicating this entry is the last at the (sub-)page
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
991 */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
992 void SettingEntry::Init(byte level, bool last_field)
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
993 {
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
994 this->level = level;
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
995 if (last_field) this->flags |= SEF_LAST_FIELD;
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
996
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
997 switch (this->flags & SEF_KIND_MASK) {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
998 case SEF_SETTING_KIND:
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
999 this->d.entry.setting = GetSettingFromName(this->d.entry.name, &this->d.entry.index);
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1000 assert(this->d.entry.setting != NULL);
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1001 break;
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1002 case SEF_SUBTREE_KIND:
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1003 this->d.sub.page->Init(level + 1);
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1004 break;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1005 default: NOT_REACHED();
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1006 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1007 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1008
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1009 /** Recursively close all folds of sub-pages */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1010 void SettingEntry::FoldAll()
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1011 {
12676
d1ed749a9ce5 (svn r17131) -Codechange: apply coding style to some switch statements
smatz <smatz@openttd.org>
parents: 12632
diff changeset
1012 switch (this->flags & SEF_KIND_MASK) {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1013 case SEF_SETTING_KIND:
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1014 break;
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1015
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1016 case SEF_SUBTREE_KIND:
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1017 this->d.sub.folded = true;
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1018 this->d.sub.page->FoldAll();
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1019 break;
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1020
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1021 default: NOT_REACHED();
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1022 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1023 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1024
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1025
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1026 /**
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1027 * Set the button-depressed flags (#SEF_LEFT_DEPRESSED and #SEF_RIGHT_DEPRESSED) to a specified value
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1028 * @param new_val New value for the button flags
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1029 * @see SettingEntryFlags
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1030 */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1031 void SettingEntry::SetButtons(byte new_val)
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1032 {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1033 assert((new_val & ~SEF_BUTTONS_MASK) == 0); // Should not touch any flags outside the buttons
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1034 this->flags = (this->flags & ~SEF_BUTTONS_MASK) | new_val;
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1035 }
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1036
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1037 /** Return numbers of rows needed to display the entry */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1038 uint SettingEntry::Length() const
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1039 {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1040 switch (this->flags & SEF_KIND_MASK) {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1041 case SEF_SETTING_KIND:
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1042 return 1;
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1043 case SEF_SUBTREE_KIND:
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1044 if (this->d.sub.folded) return 1; // Only displaying the title
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1045
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1046 return 1 + this->d.sub.page->Length(); // 1 extra row for the title
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1047 default: NOT_REACHED();
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1048 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1049 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1050
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1051 /**
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1052 * Find setting entry at row \a row_num
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1053 * @param row_num Index of entry to return
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1054 * @param cur_row Current row number
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1055 * @return The requested setting entry or \c NULL if it not found
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1056 */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1057 SettingEntry *SettingEntry::FindEntry(uint row_num, uint *cur_row)
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1058 {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1059 if (row_num == *cur_row) return this;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1060
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1061 switch (this->flags & SEF_KIND_MASK) {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1062 case SEF_SETTING_KIND:
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1063 (*cur_row)++;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1064 break;
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1065 case SEF_SUBTREE_KIND:
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1066 (*cur_row)++; // add one for row containing the title
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1067 if (this->d.sub.folded) {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1068 break;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1069 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1070
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1071 /* sub-page is visible => search it too */
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1072 return this->d.sub.page->FindEntry(row_num, cur_row);
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1073 default: NOT_REACHED();
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1074 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1075 return NULL;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1076 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1077
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1078 /**
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1079 * Draw a row in the settings panel.
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1080 *
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1081 * See SettingsPage::Draw() for an explanation about how drawing is performed.
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1082 *
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1083 * The \a parent_last parameter ensures that the vertical lines at the left are
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1084 * only drawn when another entry follows, that it prevents output like
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1085 * \verbatim
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1086 * |-- setting
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1087 * |-- (-) - Title
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1088 * | |-- setting
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1089 * | |-- setting
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1090 * \endverbatim
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1091 * The left-most vertical line is not wanted. It is prevented by setting the
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1092 * appropiate bit in the \a parent_last parameter.
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1093 *
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1094 * @param settings_ptr Pointer to current values of all settings
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1095 * @param left Left-most position in window/panel to start drawing \a first_row
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1096 * @param right Right-most x position to draw strings at.
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1097 * @param base_y Upper-most position in window/panel to start drawing \a first_row
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1098 * @param first_row First row number to draw
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1099 * @param max_row Row-number to stop drawing (the row-number of the row below the last row to draw)
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1100 * @param cur_row Current row number (internal variable)
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1101 * @param parent_last Last-field booleans of parent page level (page level \e i sets bit \e i to 1 if it is its last field)
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1102 * @return Row number of the next row to draw
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1103 */
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1104 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)
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1105 {
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1106 if (cur_row >= max_row) return cur_row;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1107
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16302
diff changeset
1108 bool rtl = _current_text_dir == TD_RTL;
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1109 int offset = rtl ? -4 : 4;
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1110 int level_width = rtl ? -LEVEL_WIDTH : LEVEL_WIDTH;
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1111
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1112 int x = rtl ? right : left;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1113 int y = base_y;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1114 if (cur_row >= first_row) {
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1115 int colour = _colour_gradient[COLOUR_ORANGE][4];
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1116 y = base_y + (cur_row - first_row) * SETTING_HEIGHT; // Compute correct y start position
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1117
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1118 /* Draw vertical for parent nesting levels */
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1119 for (uint lvl = 0; lvl < this->level; lvl++) {
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1120 if (!HasBit(parent_last, lvl)) GfxDrawLine(x + offset, y, x + offset, y + SETTING_HEIGHT - 1, colour);
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1121 x += level_width;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1122 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1123 /* draw own |- prefix */
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1124 int halfway_y = y + SETTING_HEIGHT / 2;
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1125 int bottom_y = (flags & SEF_LAST_FIELD) ? halfway_y : y + SETTING_HEIGHT - 1;
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1126 GfxDrawLine(x + offset, y, x + offset, bottom_y, colour);
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1127 /* Small horizontal line from the last vertical line */
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1128 GfxDrawLine(x + offset, halfway_y, x + level_width - offset, halfway_y, colour);
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1129 x += level_width;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1130 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1131
12676
d1ed749a9ce5 (svn r17131) -Codechange: apply coding style to some switch statements
smatz <smatz@openttd.org>
parents: 12632
diff changeset
1132 switch (this->flags & SEF_KIND_MASK) {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1133 case SEF_SETTING_KIND:
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1134 if (cur_row >= first_row) {
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1135 DrawSetting(settings_ptr, this->d.entry.setting, rtl ? left : x, rtl ? x : right, y, this->flags & SEF_BUTTONS_MASK);
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1136 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1137 cur_row++;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1138 break;
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1139 case SEF_SUBTREE_KIND:
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1140 if (cur_row >= first_row) {
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1141 DrawSprite((this->d.sub.folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED), PAL_NONE, rtl ? x - 8 : x, y + (SETTING_HEIGHT - 11) / 2);
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1142 DrawString(rtl ? left : x + 12, rtl ? x - 12 : right, y, this->d.sub.title);
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1143 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1144 cur_row++;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1145 if (!this->d.sub.folded) {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1146 if (this->flags & SEF_LAST_FIELD) {
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1147 assert(this->level < sizeof(parent_last));
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1148 SetBit(parent_last, this->level); // Add own last-field state
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1149 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1150
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1151 cur_row = this->d.sub.page->Draw(settings_ptr, left, right, base_y, first_row, max_row, cur_row, parent_last);
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1152 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1153 break;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1154 default: NOT_REACHED();
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1155 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1156 return cur_row;
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1157 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1158
13509
59959bee9f95 (svn r18028) -Codechange: unglobalise some functions
rubidium <rubidium@openttd.org>
parents: 13419
diff changeset
1159 static const void *ResolveVariableAddress(const GameSettings *settings_ptr, const SettingDesc *sd)
12022
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1160 {
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1161 if ((sd->desc.flags & SGF_PER_COMPANY) != 0) {
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1162 if (Company::IsValidID(_local_company) && _game_mode != GM_MENU) {
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1163 return GetVariableAddress(&Company::Get(_local_company)->settings, &sd->save);
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1164 } else {
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1165 return GetVariableAddress(&_settings_client.company, &sd->save);
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1166 }
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1167 } else {
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1168 return GetVariableAddress(settings_ptr, &sd->save);
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1169 }
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1170 }
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1171
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1172 /**
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1173 * Private function to draw setting value (button + text + current value)
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1174 * @param settings_ptr Pointer to current values of all settings
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1175 * @param sd Pointer to value description of setting to draw
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1176 * @param left Left-most position in window/panel to start drawing
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1177 * @param right Right-most position in window/panel to draw
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1178 * @param y Upper-most position in window/panel to start drawing
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1179 * @param state State of the left + right arrow buttons to draw for the setting
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1180 */
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1181 void SettingEntry::DrawSetting(GameSettings *settings_ptr, const SettingDesc *sd, int left, int right, int y, int state)
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1182 {
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1183 const SettingDescBase *sdb = &sd->desc;
12022
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1184 const void *var = ResolveVariableAddress(settings_ptr, sd);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1185 bool editable = true;
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1186 bool disabled = false;
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1187
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16302
diff changeset
1188 bool rtl = _current_text_dir == TD_RTL;
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1189 uint buttons_left = rtl ? right - 19 : left;
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1190 uint text_left = left + (rtl ? 0 : 25);
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1191 uint text_right = right - (rtl ? 25 : 0);
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1192 uint button_y = y + (SETTING_HEIGHT - 11) / 2;
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1193
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1194 /* We do not allow changes of some items when we are a client in a networkgame */
17444
bf88fe868439 (svn r22198) -Codechange: make some constants name more explicit
rubidium <rubidium@openttd.org>
parents: 17244
diff changeset
1195 if (!(sd->save.conv & SLF_NO_NETWORK_SYNC) && _networking && !_network_server && !(sdb->flags & SGF_PER_COMPANY)) editable = false;
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1196 if ((sdb->flags & SGF_NETWORK_ONLY) && !_networking) editable = false;
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1197 if ((sdb->flags & SGF_NO_NETWORK) && _networking) editable = false;
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1198
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1199 if (sdb->cmd == SDT_BOOLX) {
11085
8da1855e9f14 (svn r15428) -Codechange: consistently use colour instead of having both color and colour.
rubidium <rubidium@openttd.org>
parents: 11075
diff changeset
1200 static const Colours _bool_ctabs[2][2] = {{COLOUR_CREAM, COLOUR_RED}, {COLOUR_DARK_GREEN, COLOUR_GREEN}};
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1201 /* Draw checkbox for boolean-value either on/off */
16945
32309494f10d (svn r21680) -Fix (r21656): of course MSVC complains
glx <glx@openttd.org>
parents: 16921
diff changeset
1202 bool on = ReadValue(var, sd->save.conv) != 0;
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1203
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1204 DrawFrameRect(buttons_left, button_y, buttons_left + 19, button_y + 8, _bool_ctabs[!!on][!!editable], on ? FR_LOWERED : FR_NONE);
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1205 SetDParam(0, on ? STR_CONFIG_SETTING_ON : STR_CONFIG_SETTING_OFF);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1206 } else {
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1207 int32 value;
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1208
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1209 value = (int32)ReadValue(var, sd->save.conv);
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1210
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1211 /* Draw [<][>] boxes for settings of an integer-type */
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1212 DrawArrowButtons(buttons_left, button_y, COLOUR_YELLOW, state, editable && value != (sdb->flags & SGF_0ISDISABLED ? 0 : sdb->min), editable && (uint32)value != sdb->max);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1213
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1214 disabled = (value == 0) && (sdb->flags & SGF_0ISDISABLED);
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1215 if (disabled) {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1216 SetDParam(0, STR_CONFIG_SETTING_DISABLED);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1217 } else {
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1218 if (sdb->flags & SGF_CURRENCY) {
18427
980c099600c8 (svn r23269) -Codechange: rename some control/string codes/IDs to be more consistent
rubidium <rubidium@openttd.org>
parents: 18362
diff changeset
1219 SetDParam(0, STR_JUST_CURRENCY_LONG);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1220 } else if (sdb->flags & SGF_MULTISTRING) {
17456
6dce16791f02 (svn r22210) -Add: Add a variable for the value strings in the settings tables.
alberth <alberth@openttd.org>
parents: 17444
diff changeset
1221 SetDParam(0, sdb->val_str - sdb->min + value);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1222 } else {
12493
32e2de3d509a (svn r16930) -Codechange: more StringID name unification and grouping
rubidium <rubidium@openttd.org>
parents: 12475
diff changeset
1223 SetDParam(0, (sdb->flags & SGF_NOCOMMA) ? STR_JUST_INT : STR_JUST_COMMA);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1224 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1225 SetDParam(1, value);
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1226 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1227 }
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1228 DrawString(text_left, text_right, y, (sdb->str) + disabled);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1229 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1230
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1231
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1232 /* == SettingsPage methods == */
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1233
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1234 /**
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1235 * Initialization of an entire setting page
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1236 * @param level Nesting level of this page (internal variable, do not provide a value for it when calling)
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1237 */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1238 void SettingsPage::Init(byte level)
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1239 {
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1240 for (uint field = 0; field < this->num; field++) {
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1241 this->entries[field].Init(level, field + 1 == num);
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1242 }
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
1243 }
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
1244
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1245 /** Recursively close all folds of sub-pages */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1246 void SettingsPage::FoldAll()
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1247 {
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1248 for (uint field = 0; field < this->num; field++) {
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1249 this->entries[field].FoldAll();
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1250 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1251 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1252
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1253 /** Return number of rows needed to display the whole page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1254 uint SettingsPage::Length() const
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1255 {
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1256 uint length = 0;
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1257 for (uint field = 0; field < this->num; field++) {
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1258 length += this->entries[field].Length();
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1259 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1260 return length;
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1261 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1262
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1263 /**
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1264 * Find the setting entry at row number \a row_num
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1265 * @param row_num Index of entry to return
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1266 * @param cur_row Variable used for keeping track of the current row number. Should point to memory initialized to \c 0 when first called.
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1267 * @return The requested setting entry or \c NULL if it does not exist
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1268 */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1269 SettingEntry *SettingsPage::FindEntry(uint row_num, uint *cur_row) const
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1270 {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1271 SettingEntry *pe = NULL;
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1272
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1273 for (uint field = 0; field < this->num; field++) {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1274 pe = this->entries[field].FindEntry(row_num, cur_row);
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1275 if (pe != NULL) {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1276 break;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1277 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1278 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1279 return pe;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1280 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1281
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1282 /**
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1283 * Draw a selected part of the settings page.
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1284 *
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1285 * The scrollbar uses rows of the page, while the page data strucure is a tree of #SettingsPage and #SettingEntry objects.
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1286 * As a result, the drawing routing traverses the tree from top to bottom, counting rows in \a cur_row until it reaches \a first_row.
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1287 * Then it enables drawing rows while traversing until \a max_row is reached, at which point drawing is terminated.
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1288 *
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1289 * @param settings_ptr Pointer to current values of all settings
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1290 * @param left Left-most position in window/panel to start drawing of each setting row
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1291 * @param right Right-most position in window/panel to draw at
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1292 * @param base_y Upper-most position in window/panel to start drawing of row number \a first_row
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1293 * @param first_row Number of first row to draw
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1294 * @param max_row Row-number to stop drawing (the row-number of the row below the last row to draw)
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1295 * @param cur_row Current row number (internal variable)
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1296 * @param parent_last Last-field booleans of parent page level (page level \e i sets bit \e i to 1 if it is its last field)
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1297 * @return Row number of the next row to draw
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1298 */
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1299 uint SettingsPage::Draw(GameSettings *settings_ptr, int left, int right, int base_y, uint first_row, uint max_row, uint cur_row, uint parent_last) const
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1300 {
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1301 if (cur_row >= max_row) return cur_row;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1302
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1303 for (uint i = 0; i < this->num; i++) {
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1304 cur_row = this->entries[i].Draw(settings_ptr, left, right, base_y, first_row, max_row, cur_row, parent_last);
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1305 if (cur_row >= max_row) {
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1306 break;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1307 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1308 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1309 return cur_row;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1310 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1311
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
1312
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1313 static SettingEntry _settings_ui_display[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1314 SettingEntry("gui.date_format_in_default_names"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1315 SettingEntry("gui.population_in_label"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1316 SettingEntry("gui.measure_tooltip"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1317 SettingEntry("gui.loading_indicators"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1318 SettingEntry("gui.liveries"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1319 SettingEntry("gui.show_track_reservation"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1320 SettingEntry("gui.expenses_layout"),
14493
522dc4972f9f (svn r19064) -Feature: Allow to select different land colours for the smallmap (reworked by Alberth).
terkhen <terkhen@openttd.org>
parents: 14409
diff changeset
1321 SettingEntry("gui.smallmap_land_colour"),
18470
64ea4c57dcb9 (svn r23314) -Add: Add settings to restrict viewport zoom levels.
peter1138 <peter1138@openttd.org>
parents: 18469
diff changeset
1322 SettingEntry("gui.zoom_min"),
64ea4c57dcb9 (svn r23314) -Add: Add settings to restrict viewport zoom levels.
peter1138 <peter1138@openttd.org>
parents: 18469
diff changeset
1323 SettingEntry("gui.zoom_max"),
18650
7e084b7495c6 (svn r23497) -Add: Advanced display setting to control the linewidth in graphs. (ChillCore)
frosch <frosch@openttd.org>
parents: 18627
diff changeset
1324 SettingEntry("gui.graph_line_thickness"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1325 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1326 /** Display options sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1327 static SettingsPage _settings_ui_display_page = {_settings_ui_display, lengthof(_settings_ui_display)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1328
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1329 static SettingEntry _settings_ui_interaction[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1330 SettingEntry("gui.window_snap_radius"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1331 SettingEntry("gui.window_soft_limit"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1332 SettingEntry("gui.link_terraform_toolbar"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1333 SettingEntry("gui.prefer_teamchat"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1334 SettingEntry("gui.autoscroll"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1335 SettingEntry("gui.reverse_scroll"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1336 SettingEntry("gui.smooth_scroll"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1337 SettingEntry("gui.left_mouse_btn_scrolling"),
6289
7830dc08984a (svn r9111) -Feature: [OSX] mighty mice and touchpads can now scroll the map (in all directions)
bjarni <bjarni@openttd.org>
parents: 6259
diff changeset
1338 /* While the horizontal scrollwheel scrolling is written as general code, only
7830dc08984a (svn r9111) -Feature: [OSX] mighty mice and touchpads can now scroll the map (in all directions)
bjarni <bjarni@openttd.org>
parents: 6259
diff changeset
1339 * the cocoa (OSX) driver generates input for it.
6296
94f5e47fddaa (svn r9126) -Feature: "Function of scrollwheel" can now be set to off as well
bjarni <bjarni@openttd.org>
parents: 6293
diff changeset
1340 * Since it's also able to completely disable the scrollwheel will we display it on all platforms anyway */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1341 SettingEntry("gui.scrollwheel_scrolling"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1342 SettingEntry("gui.scrollwheel_multiplier"),
7485
f7dd4bbc720d (svn r10996) -Feature: [OSX] added more options for right click emulation (controlled from the interface tab in the patch window)
bjarni <bjarni@openttd.org>
parents: 7341
diff changeset
1343 #ifdef __APPLE__
f7dd4bbc720d (svn r10996) -Feature: [OSX] added more options for right click emulation (controlled from the interface tab in the patch window)
bjarni <bjarni@openttd.org>
parents: 7341
diff changeset
1344 /* We might need to emulate a right mouse button on mac */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1345 SettingEntry("gui.right_mouse_btn_emulation"),
7485
f7dd4bbc720d (svn r10996) -Feature: [OSX] added more options for right click emulation (controlled from the interface tab in the patch window)
bjarni <bjarni@openttd.org>
parents: 7341
diff changeset
1346 #endif
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1347 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1348 /** Interaction sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1349 static SettingsPage _settings_ui_interaction_page = {_settings_ui_interaction, lengthof(_settings_ui_interaction)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1350
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1351 static SettingEntry _settings_ui[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1352 SettingEntry(&_settings_ui_display_page, STR_CONFIG_SETTING_DISPLAY_OPTIONS),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1353 SettingEntry(&_settings_ui_interaction_page, STR_CONFIG_SETTING_INTERACTION),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1354 SettingEntry("gui.show_finances"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1355 SettingEntry("gui.errmsg_duration"),
15495
9cffefe9d5db (svn r20144) -Feature: Allow to configure the delay of hover events, or to disable them completely.
terkhen <terkhen@openttd.org>
parents: 15405
diff changeset
1356 SettingEntry("gui.hover_delay"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1357 SettingEntry("gui.toolbar_pos"),
16463
4c4c9177f5eb (svn r21179) -Fix [FS#4201] (r69): if the main toolbar's location is configurable, why isn't the statusbar's location configurable?
rubidium <rubidium@openttd.org>
parents: 16448
diff changeset
1358 SettingEntry("gui.statusbar_pos"),
17645
a758139e348a (svn r22417) -Add: an advanced setting to specify the default palette to use for NewGRFs without action 14 palette information; this makes the default choice independent from the used base graphics and '-i' option.
frosch <frosch@openttd.org>
parents: 17579
diff changeset
1359 SettingEntry("gui.newgrf_default_palette"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1360 SettingEntry("gui.pause_on_newgame"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1361 SettingEntry("gui.advanced_vehicle_list"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1362 SettingEntry("gui.timetable_in_ticks"),
13760
a9c5c2c91d71 (svn r18285) -Feature: show the expected arrival/departure dates in the timetable window. Based on work by PhilSophus.
rubidium <rubidium@openttd.org>
parents: 13756
diff changeset
1363 SettingEntry("gui.timetable_arrival_departure"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1364 SettingEntry("gui.quick_goto"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1365 SettingEntry("gui.default_rail_type"),
17089
6e590e642890 (svn r21826) -Fix [FS#4007]: the expectations from the "always build infrastructure" setting name/description didn't match the behaviour
rubidium <rubidium@openttd.org>
parents: 16959
diff changeset
1366 SettingEntry("gui.disable_unsuitable_building"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1367 SettingEntry("gui.persistent_buildingtools"),
11085
8da1855e9f14 (svn r15428) -Codechange: consistently use colour instead of having both color and colour.
rubidium <rubidium@openttd.org>
parents: 11075
diff changeset
1368 SettingEntry("gui.coloured_news_year"),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1369 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1370 /** Interface subpage */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1371 static SettingsPage _settings_ui_page = {_settings_ui, lengthof(_settings_ui)};
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1372
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1373 static SettingEntry _settings_construction_signals[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1374 SettingEntry("construction.signal_side"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1375 SettingEntry("gui.enable_signal_gui"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1376 SettingEntry("gui.drag_signals_density"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1377 SettingEntry("gui.semaphore_build_before"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1378 SettingEntry("gui.default_signal_type"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1379 SettingEntry("gui.cycle_signal_types"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1380 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1381 /** Signals subpage */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1382 static SettingsPage _settings_construction_signals_page = {_settings_construction_signals, lengthof(_settings_construction_signals)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1383
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1384 static SettingEntry _settings_construction[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1385 SettingEntry(&_settings_construction_signals_page, STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1386 SettingEntry("construction.build_on_slopes"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1387 SettingEntry("construction.autoslope"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1388 SettingEntry("construction.extra_dynamite"),
17220
026d5463e627 (svn r21959) -Change: replace longbridges with custom maximum bridge and tunnel length setting
rubidium <rubidium@openttd.org>
parents: 17219
diff changeset
1389 SettingEntry("construction.max_bridge_length"),
026d5463e627 (svn r21959) -Change: replace longbridges with custom maximum bridge and tunnel length setting
rubidium <rubidium@openttd.org>
parents: 17219
diff changeset
1390 SettingEntry("construction.max_tunnel_length"),
12200
abcb7c9c1d4d (svn r16614) -Codechange: Make the airport min/max available year a property of the Airport class.
yexo <yexo@openttd.org>
parents: 12067
diff changeset
1391 SettingEntry("station.never_expire_airports"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1392 SettingEntry("construction.freeform_edges"),
13983
aaf1fd51e6ac (svn r18522) -Feature: add the possibility to not make new tree tiles in-game
rubidium <rubidium@openttd.org>
parents: 13950
diff changeset
1393 SettingEntry("construction.extra_tree_placement"),
16694
2b17fca1c754 (svn r21426) -Change: introduce a setting for the types of commands that are allowed to be executed while paused
rubidium <rubidium@openttd.org>
parents: 16601
diff changeset
1394 SettingEntry("construction.command_pause_level"),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1395 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1396 /** Construction sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1397 static SettingsPage _settings_construction_page = {_settings_construction, lengthof(_settings_construction)};
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1398
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1399 static SettingEntry _settings_stations_cargo[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1400 SettingEntry("order.improved_load"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1401 SettingEntry("order.gradual_loading"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1402 SettingEntry("order.selectgoods"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1403 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1404 /** Cargo handling sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1405 static SettingsPage _settings_stations_cargo_page = {_settings_stations_cargo, lengthof(_settings_stations_cargo)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1406
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1407 static SettingEntry _settings_stations[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1408 SettingEntry(&_settings_stations_cargo_page, STR_CONFIG_SETTING_STATIONS_CARGOHANDLING),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1409 SettingEntry("station.adjacent_stations"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1410 SettingEntry("station.distant_join_stations"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1411 SettingEntry("station.station_spread"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1412 SettingEntry("economy.station_noise_level"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1413 SettingEntry("station.modified_catchment"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1414 SettingEntry("construction.road_stop_on_town_road"),
11252
f7b6f8f03e5e (svn r15601) -Fix [FS#2615]: bridges/tunnels don't store tram owner making it possible to remove someone's tram tracks.
rubidium <rubidium@openttd.org>
parents: 11217
diff changeset
1415 SettingEntry("construction.road_stop_on_competitor_road"),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1416 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1417 /** Stations sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1418 static SettingsPage _settings_stations_page = {_settings_stations, lengthof(_settings_stations)};
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1419
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1420 static SettingEntry _settings_economy_towns[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1421 SettingEntry("economy.bribe"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1422 SettingEntry("economy.exclusive_rights"),
17234
08d6a07fe4ce (svn r21974) -Feature: Add a setting to enable/disable funding local road reconstruction.
terkhen <terkhen@openttd.org>
parents: 17223
diff changeset
1423 SettingEntry("economy.fund_roads"),
18469
3780c7d15df2 (svn r23313) -Fix: economy.fund_buildings was not shown in the GUI
truebrain <truebrain@openttd.org>
parents: 18431
diff changeset
1424 SettingEntry("economy.fund_buildings"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1425 SettingEntry("economy.town_layout"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1426 SettingEntry("economy.allow_town_roads"),
15405
fa04125ca60d (svn r20048) -Feature: Add a setting to forbid towns building level crossings.
michi_cc <michi_cc@openttd.org>
parents: 14902
diff changeset
1427 SettingEntry("economy.allow_town_level_crossings"),
13756
9f062af2f34a (svn r18281) -Feature: founding towns in-game (based on work by Belugas, TheJosh, GeekToo, Terkhen and others)
smatz <smatz@openttd.org>
parents: 13755
diff changeset
1428 SettingEntry("economy.found_town"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1429 SettingEntry("economy.mod_road_rebuild"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1430 SettingEntry("economy.town_growth_rate"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1431 SettingEntry("economy.larger_towns"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1432 SettingEntry("economy.initial_city_size"),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1433 };
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1434 /** Towns sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1435 static SettingsPage _settings_economy_towns_page = {_settings_economy_towns, lengthof(_settings_economy_towns)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1436
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1437 static SettingEntry _settings_economy_industries[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1438 SettingEntry("construction.raw_industry_construction"),
15971
4a7b8f4d73dc (svn r20659) -Feature: make the (flat) area around an industry configurable (Eddi|zuHause)
rubidium <rubidium@openttd.org>
parents: 15944
diff changeset
1439 SettingEntry("construction.industry_platform"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1440 SettingEntry("economy.multiple_industry_per_town"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1441 SettingEntry("game_creation.oil_refinery_limit"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1442 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1443 /** Industries sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1444 static SettingsPage _settings_economy_industries_page = {_settings_economy_industries, lengthof(_settings_economy_industries)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1445
18543
1ba866a592fd (svn r23387) -Fix: move ai.script_max_opcode_till_suspend to script.script_max_opcode_till_suspend
truebrain <truebrain@openttd.org>
parents: 18540
diff changeset
1446 static SettingEntry _settings_economy_scripts[] = {
1ba866a592fd (svn r23387) -Fix: move ai.script_max_opcode_till_suspend to script.script_max_opcode_till_suspend
truebrain <truebrain@openttd.org>
parents: 18540
diff changeset
1447 SettingEntry("script.script_max_opcode_till_suspend"),
1ba866a592fd (svn r23387) -Fix: move ai.script_max_opcode_till_suspend to script.script_max_opcode_till_suspend
truebrain <truebrain@openttd.org>
parents: 18540
diff changeset
1448 };
1ba866a592fd (svn r23387) -Fix: move ai.script_max_opcode_till_suspend to script.script_max_opcode_till_suspend
truebrain <truebrain@openttd.org>
parents: 18540
diff changeset
1449 /** Scripts sub-page */
1ba866a592fd (svn r23387) -Fix: move ai.script_max_opcode_till_suspend to script.script_max_opcode_till_suspend
truebrain <truebrain@openttd.org>
parents: 18540
diff changeset
1450 static SettingsPage _settings_economy_scripts_page = {_settings_economy_scripts, lengthof(_settings_economy_scripts)};
1ba866a592fd (svn r23387) -Fix: move ai.script_max_opcode_till_suspend to script.script_max_opcode_till_suspend
truebrain <truebrain@openttd.org>
parents: 18540
diff changeset
1451
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1452 static SettingEntry _settings_economy[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1453 SettingEntry(&_settings_economy_towns_page, STR_CONFIG_SETTING_ECONOMY_TOWNS),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1454 SettingEntry(&_settings_economy_industries_page, STR_CONFIG_SETTING_ECONOMY_INDUSTRIES),
18543
1ba866a592fd (svn r23387) -Fix: move ai.script_max_opcode_till_suspend to script.script_max_opcode_till_suspend
truebrain <truebrain@openttd.org>
parents: 18540
diff changeset
1455 SettingEntry(&_settings_economy_scripts_page, STR_CONFIG_SETTING_ECONOMY_SCRIPTS),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1456 SettingEntry("economy.inflation"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1457 SettingEntry("economy.smooth_economy"),
14155
96be446af436 (svn r18703) -Feature-ish: allow virtually paying a percentage of the leg profit in feeder chains. This to give the user a better chance to get a feeder system without "losses".
rubidium <rubidium@openttd.org>
parents: 14127
diff changeset
1458 SettingEntry("economy.feeder_payment_share"),
18570
bbdb2c13eb92 (svn r23415) -Feature: Infrastructure maintenance costs.
michi_cc <michi_cc@openttd.org>
parents: 18543
diff changeset
1459 SettingEntry("economy.infrastructure_maintenance"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1460 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1461 /** Economy sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1462 static SettingsPage _settings_economy_page = {_settings_economy, lengthof(_settings_economy)};
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1463
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1464 static SettingEntry _settings_ai_npc[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1465 SettingEntry("ai.ai_in_multiplayer"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1466 SettingEntry("ai.ai_disable_veh_train"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1467 SettingEntry("ai.ai_disable_veh_roadveh"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1468 SettingEntry("ai.ai_disable_veh_aircraft"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1469 SettingEntry("ai.ai_disable_veh_ship"),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1470 };
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1471 /** Computer players sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1472 static SettingsPage _settings_ai_npc_page = {_settings_ai_npc, lengthof(_settings_ai_npc)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1473
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1474 static SettingEntry _settings_ai[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1475 SettingEntry(&_settings_ai_npc_page, STR_CONFIG_SETTING_AI_NPC),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1476 SettingEntry("economy.give_money"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1477 SettingEntry("economy.allow_shares"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1478 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1479 /** AI sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1480 static SettingsPage _settings_ai_page = {_settings_ai, lengthof(_settings_ai)};
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1481
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1482 static SettingEntry _settings_vehicles_routing[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1483 SettingEntry("pf.pathfinder_for_trains"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1484 SettingEntry("pf.forbid_90_deg"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1485 SettingEntry("pf.pathfinder_for_roadvehs"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1486 SettingEntry("pf.roadveh_queue"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1487 SettingEntry("pf.pathfinder_for_ships"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1488 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1489 /** Autorenew sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1490 static SettingsPage _settings_vehicles_routing_page = {_settings_vehicles_routing, lengthof(_settings_vehicles_routing)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1491
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1492 static SettingEntry _settings_vehicles_autorenew[] = {
11913
f67b6243e05a (svn r16315) -Codechange: move the autorenew settings to a new CompanySettings struct
yexo <yexo@openttd.org>
parents: 11897
diff changeset
1493 SettingEntry("company.engine_renew"),
f67b6243e05a (svn r16315) -Codechange: move the autorenew settings to a new CompanySettings struct
yexo <yexo@openttd.org>
parents: 11897
diff changeset
1494 SettingEntry("company.engine_renew_months"),
f67b6243e05a (svn r16315) -Codechange: move the autorenew settings to a new CompanySettings struct
yexo <yexo@openttd.org>
parents: 11897
diff changeset
1495 SettingEntry("company.engine_renew_money"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1496 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1497 /** Autorenew sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1498 static SettingsPage _settings_vehicles_autorenew_page = {_settings_vehicles_autorenew, lengthof(_settings_vehicles_autorenew)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1499
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1500 static SettingEntry _settings_vehicles_servicing[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1501 SettingEntry("vehicle.servint_ispercent"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1502 SettingEntry("vehicle.servint_trains"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1503 SettingEntry("vehicle.servint_roadveh"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1504 SettingEntry("vehicle.servint_ships"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1505 SettingEntry("vehicle.servint_aircraft"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1506 SettingEntry("order.no_servicing_if_no_breakdowns"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1507 SettingEntry("order.serviceathelipad"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1508 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1509 /** Servicing sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1510 static SettingsPage _settings_vehicles_servicing_page = {_settings_vehicles_servicing, lengthof(_settings_vehicles_servicing)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1511
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1512 static SettingEntry _settings_vehicles_trains[] = {
17223
a1dda316ecbe (svn r21962) -Feature-ish: GUI setting to disable reversing at signals
rubidium <rubidium@openttd.org>
parents: 17221
diff changeset
1513 SettingEntry("pf.reverse_at_signals"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1514 SettingEntry("vehicle.train_acceleration_model"),
14127
39a257893f4c (svn r18674) -Feature (FS#3459): Configurable slope steepness for trains from 0% to 10%, default is 3% as before (mostly by Terkhen)
peter1138 <peter1138@openttd.org>
parents: 14065
diff changeset
1515 SettingEntry("vehicle.train_slope_steepness"),
17221
edf36d7f3f86 (svn r21960) -Change: show the length of vehicles in tiles, instead of half tiles in the depot
rubidium <rubidium@openttd.org>
parents: 17220
diff changeset
1516 SettingEntry("vehicle.max_train_length"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1517 SettingEntry("vehicle.wagon_speed_limits"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1518 SettingEntry("vehicle.disable_elrails"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1519 SettingEntry("vehicle.freight_trains"),
11657
ff1084d0d8a0 (svn r16037) -Feature: allow (per order) to let a train stop at the near end, middle or far end of a platform from the point of view of the driver of the train that enters the station.
rubidium <rubidium@openttd.org>
parents: 11524
diff changeset
1520 SettingEntry("gui.stop_location"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1521 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1522 /** Trains sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1523 static SettingsPage _settings_vehicles_trains_page = {_settings_vehicles_trains, lengthof(_settings_vehicles_trains)};
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1524
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1525 static SettingEntry _settings_vehicles[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1526 SettingEntry(&_settings_vehicles_routing_page, STR_CONFIG_SETTING_VEHICLES_ROUTING),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1527 SettingEntry(&_settings_vehicles_autorenew_page, STR_CONFIG_SETTING_VEHICLES_AUTORENEW),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1528 SettingEntry(&_settings_vehicles_servicing_page, STR_CONFIG_SETTING_VEHICLES_SERVICING),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1529 SettingEntry(&_settings_vehicles_trains_page, STR_CONFIG_SETTING_VEHICLES_TRAINS),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1530 SettingEntry("gui.new_nonstop"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1531 SettingEntry("gui.order_review_system"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1532 SettingEntry("gui.vehicle_income_warn"),
16772
975815b08336 (svn r21505) -Change: generalise the lost_train_warning setting to lost_vehicle_warning
rubidium <rubidium@openttd.org>
parents: 16734
diff changeset
1533 SettingEntry("gui.lost_vehicle_warn"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1534 SettingEntry("vehicle.never_expire_vehicles"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1535 SettingEntry("vehicle.max_trains"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1536 SettingEntry("vehicle.max_roadveh"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1537 SettingEntry("vehicle.max_aircraft"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1538 SettingEntry("vehicle.max_ships"),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1539 SettingEntry("vehicle.plane_speed"),
14385
5539b78ca7a4 (svn r18942) -Feature [FS#2678]: add a setting to reduce/disable aircraft crashes
yexo <yexo@openttd.org>
parents: 14350
diff changeset
1540 SettingEntry("vehicle.plane_crashes"),
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1541 SettingEntry("vehicle.dynamic_engines"),
14757
1cefc36bd6b2 (svn r19345) -Feature: Realistic acceleration for road vehicles.
terkhen <terkhen@openttd.org>
parents: 14645
diff changeset
1542 SettingEntry("vehicle.roadveh_acceleration_model"),
14758
bb75781f712c (svn r19346) -Feature: Configurable slope steepness for road vehicles from 0% to 10%, default is 7%.
terkhen <terkhen@openttd.org>
parents: 14757
diff changeset
1543 SettingEntry("vehicle.roadveh_slope_steepness"),
16505
0e4e40cd6128 (svn r21231) -Codechange: Generalize the naming of some settings and variables related to visual effects (Hirundo)
rubidium <rubidium@openttd.org>
parents: 16502
diff changeset
1544 SettingEntry("vehicle.smoke_amount"),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1545 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1546 /** Vehicles sub-page */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1547 static SettingsPage _settings_vehicles_page = {_settings_vehicles, lengthof(_settings_vehicles)};
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1548
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1549 static SettingEntry _settings_main[] = {
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1550 SettingEntry(&_settings_ui_page, STR_CONFIG_SETTING_GUI),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1551 SettingEntry(&_settings_construction_page, STR_CONFIG_SETTING_CONSTRUCTION),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1552 SettingEntry(&_settings_vehicles_page, STR_CONFIG_SETTING_VEHICLES),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1553 SettingEntry(&_settings_stations_page, STR_CONFIG_SETTING_STATIONS),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1554 SettingEntry(&_settings_economy_page, STR_CONFIG_SETTING_ECONOMY),
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1555 SettingEntry(&_settings_ai_page, STR_CONFIG_SETTING_AI),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1556 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1557
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1558 /** Main page, holding all advanced settings */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1559 static SettingsPage _settings_main_page = {_settings_main, lengthof(_settings_main)};
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1560
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1561 struct GameSettingsWindow : Window {
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1562 static const int SETTINGTREE_LEFT_OFFSET = 5; ///< Position of left edge of setting values
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1563 static const int SETTINGTREE_RIGHT_OFFSET = 5; ///< Position of right edge of setting values
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1564 static const int SETTINGTREE_TOP_OFFSET = 5; ///< Position of top edge of setting values
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1565 static const int SETTINGTREE_BOTTOM_OFFSET = 5; ///< Position of bottom edge of setting values
10540
ad93cc8a687f (svn r14797) -Codechange: replace even more magic numbers with constants (Alberth)
rubidium <rubidium@openttd.org>
parents: 10539
diff changeset
1566
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1567 static GameSettings *settings_ptr; ///< Pointer to the game settings being displayed and modified
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1568
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1569 SettingEntry *valuewindow_entry; ///< If non-NULL, pointer to setting for which a value-entering window has been opened
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1570 SettingEntry *clicked_entry; ///< If non-NULL, pointer to a clicked numeric setting (with a depressed left or right button)
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1571
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1572 Scrollbar *vscroll;
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1573
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1574 GameSettingsWindow(const WindowDesc *desc) : Window()
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1575 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1576 static bool first_time = true;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1577
16959
55b2bec60c52 (svn r21695) -Codechange: add helper function to get the currently applicable GameSettings object
yexo <yexo@openttd.org>
parents: 16945
diff changeset
1578 settings_ptr = &GetGameSettings();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1579
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1580 /* Build up the dynamic settings-array only once per OpenTTD session */
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1581 if (first_time) {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1582 _settings_main_page.Init();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1583 first_time = false;
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1584 } else {
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1585 _settings_main_page.FoldAll(); // Close all sub-pages
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1586 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1587
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1588 this->valuewindow_entry = NULL; // No setting entry for which a entry window is opened
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1589 this->clicked_entry = NULL; // No numeric setting buttons are depressed
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1590
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1591 this->CreateNestedTree(desc);
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1592 this->vscroll = this->GetScrollbar(WID_GS_SCROLLBAR);
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18703
diff changeset
1593 this->FinishInitNested(desc, WN_GAME_OPTIONS_GAME_SETTINGS);
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1594
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1595 this->vscroll->SetCount(_settings_main_page.Length());
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1596 }
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1597
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
1598 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1599 {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1600 if (widget != WID_GS_OPTIONSPANEL) return;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1601
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1602 resize->height = SETTING_HEIGHT = max(11, FONT_HEIGHT_NORMAL + 1);
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1603 resize->width = 1;
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1604
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1605 size->height = 5 * resize->height + SETTINGTREE_TOP_OFFSET + SETTINGTREE_BOTTOM_OFFSET;
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1606 }
8593
90ffef351faa (svn r12174) -Codechange: Make the patches window dynamically resize to the largest patch tab, so adding patch options is simply a case of adding to the lists.
peter1138 <peter1138@openttd.org>
parents: 8551
diff changeset
1607
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1608 virtual void DrawWidget(const Rect &r, int widget) const
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1609 {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1610 if (widget != WID_GS_OPTIONSPANEL) return;
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1611
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1612 _settings_main_page.Draw(settings_ptr, r.left + SETTINGTREE_LEFT_OFFSET, r.right - SETTINGTREE_RIGHT_OFFSET, r.top + SETTINGTREE_TOP_OFFSET,
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1613 this->vscroll->GetPosition(), this->vscroll->GetPosition() + this->vscroll->GetCapacity());
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1614 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1615
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14385
diff changeset
1616 virtual void OnClick(Point pt, int widget, int click_count)
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1617 {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1618 if (widget != WID_GS_OPTIONSPANEL) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1619
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1620 uint btn = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_GS_OPTIONSPANEL, SETTINGTREE_TOP_OFFSET - 1);
15563
011c8bee59d1 (svn r20223) -Codechange: Replace scrolled row calculations by a call to GetScrolledRowFromWidget().
alberth <alberth@openttd.org>
parents: 15495
diff changeset
1621 if (btn == INT_MAX) return;
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1622
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1623 uint cur_row = 0;
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1624 SettingEntry *pe = _settings_main_page.FindEntry(btn, &cur_row);
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1625
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1626 if (pe == NULL) return; // Clicked below the last setting of the page
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1627
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16302
diff changeset
1628 int x = (_current_text_dir == TD_RTL ? this->width - pt.x : pt.x) - SETTINGTREE_LEFT_OFFSET - (pe->level + 1) * LEVEL_WIDTH; // Shift x coordinate
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1629 if (x < 0) return; // Clicked left of the entry
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1630
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1631 if ((pe->flags & SEF_KIND_MASK) == SEF_SUBTREE_KIND) {
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1632 pe->d.sub.folded = !pe->d.sub.folded; // Flip 'folded'-ness of the sub-page
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1633
15779
9ad2843db6f4 (svn r20453) -Codechange: Remove direct accesses to Window::hscroll, vscroll and vscroll2.
frosch <frosch@openttd.org>
parents: 15778
diff changeset
1634 this->vscroll->SetCount(_settings_main_page.Length());
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1635 this->SetDirty();
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1636 return;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1637 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1638
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1639 assert((pe->flags & SEF_KIND_MASK) == SEF_SETTING_KIND);
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1640 const SettingDesc *sd = pe->d.entry.setting;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1641
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1642 /* return if action is only active in network, or only settable by server */
17444
bf88fe868439 (svn r22198) -Codechange: make some constants name more explicit
rubidium <rubidium@openttd.org>
parents: 17244
diff changeset
1643 if (!(sd->save.conv & SLF_NO_NETWORK_SYNC) && _networking && !_network_server && !(sd->desc.flags & SGF_PER_COMPANY)) return;
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1644 if ((sd->desc.flags & SGF_NETWORK_ONLY) && !_networking) return;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1645 if ((sd->desc.flags & SGF_NO_NETWORK) && _networking) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1646
12022
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1647 const void *var = ResolveVariableAddress(settings_ptr, sd);
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1648 int32 value = (int32)ReadValue(var, sd->save.conv);
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1649
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1650 /* clicked on the icon on the left side. Either scroller or bool on/off */
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1651 if (x < 21) {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1652 const SettingDescBase *sdb = &sd->desc;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1653 int32 oldvalue = value;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1654
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1655 switch (sdb->cmd) {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1656 case SDT_BOOLX: value ^= 1; break;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1657 case SDT_ONEOFMANY:
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1658 case SDT_NUMX: {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1659 /* Add a dynamic step-size to the scroller. In a maximum of
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1660 * 50-steps you should be able to get from min to max,
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1661 * unless specified otherwise in the 'interval' variable
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1662 * of the current setting. */
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1663 uint32 step = (sdb->interval == 0) ? ((sdb->max - sdb->min) / 50) : sdb->interval;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1664 if (step == 0) step = 1;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1665
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1666 /* don't allow too fast scrolling */
18677
7077d1f6763b (svn r23525) -Codechange: make Window::flags4 WindowFlags instead of uint16, with only values known in WindowFlags (and move out 2 timers to their own variable)
truebrain <truebrain@openttd.org>
parents: 18650
diff changeset
1667 if ((this->flags & WF_TIMEOUT) && this->timeout_timer > 1) {
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1668 _left_button_clicked = false;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1669 return;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1670 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1671
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1672 /* Increase or decrease the value and clamp it to extremes */
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1673 if (x >= 10) {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1674 value += step;
12357
8fe6b4cef297 (svn r16781) -Fix [FS#3026] (r16297): don't cast negative values to uints when the settings' range is "negative..positive".
rubidium <rubidium@openttd.org>
parents: 12272
diff changeset
1675 if (sdb->min < 0) {
8fe6b4cef297 (svn r16781) -Fix [FS#3026] (r16297): don't cast negative values to uints when the settings' range is "negative..positive".
rubidium <rubidium@openttd.org>
parents: 12272
diff changeset
1676 assert((int32)sdb->max >= 0);
8fe6b4cef297 (svn r16781) -Fix [FS#3026] (r16297): don't cast negative values to uints when the settings' range is "negative..positive".
rubidium <rubidium@openttd.org>
parents: 12272
diff changeset
1677 if (value > (int32)sdb->max) value = (int32)sdb->max;
8fe6b4cef297 (svn r16781) -Fix [FS#3026] (r16297): don't cast negative values to uints when the settings' range is "negative..positive".
rubidium <rubidium@openttd.org>
parents: 12272
diff changeset
1678 } else {
8fe6b4cef297 (svn r16781) -Fix [FS#3026] (r16297): don't cast negative values to uints when the settings' range is "negative..positive".
rubidium <rubidium@openttd.org>
parents: 12272
diff changeset
1679 if ((uint32)value > sdb->max) value = (int32)sdb->max;
8fe6b4cef297 (svn r16781) -Fix [FS#3026] (r16297): don't cast negative values to uints when the settings' range is "negative..positive".
rubidium <rubidium@openttd.org>
parents: 12272
diff changeset
1680 }
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1681 if (value < sdb->min) value = sdb->min; // skip between "disabled" and minimum
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1682 } else {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1683 value -= step;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1684 if (value < sdb->min) value = (sdb->flags & SGF_0ISDISABLED) ? 0 : sdb->min;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1685 }
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1686
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1687 /* Set up scroller timeout for numeric values */
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1688 if (value != oldvalue && !(sd->desc.flags & SGF_MULTISTRING)) {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1689 if (this->clicked_entry != NULL) { // Release previous buttons if any
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1690 this->clicked_entry->SetButtons(0);
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1691 }
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1692 this->clicked_entry = pe;
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16302
diff changeset
1693 this->clicked_entry->SetButtons((x >= 10) != (_current_text_dir == TD_RTL) ? SEF_RIGHT_DEPRESSED : SEF_LEFT_DEPRESSED);
18677
7077d1f6763b (svn r23525) -Codechange: make Window::flags4 WindowFlags instead of uint16, with only values known in WindowFlags (and move out 2 timers to their own variable)
truebrain <truebrain@openttd.org>
parents: 18650
diff changeset
1694 this->SetTimeout();
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1695 _left_button_clicked = false;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1696 }
15618
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15563
diff changeset
1697 break;
e4640748f223 (svn r20281) -Codechange: unify case scope closure + break coding style
rubidium <rubidium@openttd.org>
parents: 15563
diff changeset
1698 }
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1699
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1700 default: NOT_REACHED();
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1701 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1702
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1703 if (value != oldvalue) {
12022
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1704 if ((sd->desc.flags & SGF_PER_COMPANY) != 0) {
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1705 SetCompanySetting(pe->d.entry.index, value);
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1706 } else {
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1707 SetSettingValue(pe->d.entry.index, value);
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
1708 }
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1709 this->SetDirty();
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1710 }
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1711 } else {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1712 /* only open editbox for types that its sensible for */
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1713 if (sd->desc.cmd != SDT_BOOLX && !(sd->desc.flags & SGF_MULTISTRING)) {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1714 /* Show the correct currency-translated value */
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1715 if (sd->desc.flags & SGF_CURRENCY) value *= _currency->rate;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1716
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1717 this->valuewindow_entry = pe;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1718 SetDParam(0, value);
17579
105b4e4eb168 (svn r22343) -Change: Remove pixel limiter for query strings.
terkhen <terkhen@openttd.org>
parents: 17551
diff changeset
1719 ShowQueryString(STR_JUST_INT, STR_CONFIG_SETTING_QUERY_CAPTION, 10, this, CS_NUMERAL, QSF_ENABLE_DEFAULT);
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1720 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1721 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1722 }
8190
eb210e97738e (svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas <belugas@openttd.org>
parents: 8189
diff changeset
1723
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1724 virtual void OnTimeout()
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1725 {
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1726 if (this->clicked_entry != NULL) { // On timeout, release any depressed buttons
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1727 this->clicked_entry->SetButtons(0);
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1728 this->clicked_entry = NULL;
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1729 this->SetDirty();
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1730 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1731 }
8190
eb210e97738e (svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas <belugas@openttd.org>
parents: 8189
diff changeset
1732
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1733 virtual void OnQueryTextFinished(char *str)
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1734 {
14347
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1735 /* The user pressed cancel */
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1736 if (str == NULL) return;
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1737
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1738 assert(this->valuewindow_entry != NULL);
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1739 assert((this->valuewindow_entry->flags & SEF_KIND_MASK) == SEF_SETTING_KIND);
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1740 const SettingDesc *sd = this->valuewindow_entry->d.entry.setting;
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1741
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1742 int32 value;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1743 if (!StrEmpty(str)) {
14347
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1744 value = atoi(str);
8190
eb210e97738e (svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas <belugas@openttd.org>
parents: 8189
diff changeset
1745
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1746 /* Save the correct currency-translated value */
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1747 if (sd->desc.flags & SGF_CURRENCY) value /= _currency->rate;
14347
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1748 } else {
14350
1718b22a6aa8 (svn r18905) -Fix (r18902): Compile error on 64-bit with gcc
peter1138 <peter1138@openttd.org>
parents: 14347
diff changeset
1749 value = (int32)(size_t)sd->desc.def;
14347
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1750 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1751
14347
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1752 if ((sd->desc.flags & SGF_PER_COMPANY) != 0) {
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1753 SetCompanySetting(this->valuewindow_entry->d.entry.index, value);
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1754 } else {
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1755 SetSettingValue(this->valuewindow_entry->d.entry.index, value);
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1756 }
14347
a3c6860ea115 (svn r18902) -Fix [FS#3559]: the default button for the advanced settings didn't work
rubidium <rubidium@openttd.org>
parents: 14330
diff changeset
1757 this->SetDirty();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1758 }
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
1759
13344
04b02b2cfa2b (svn r17853) -Codechange: remove the 'delta' parameter from OnResize; it was used in ways that aren't always wanted, causing bugs and the like. Also with nested widgets most reasons for handling OnResize have gone.
rubidium <rubidium@openttd.org>
parents: 13281
diff changeset
1760 virtual void OnResize()
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
1761 {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1762 this->vscroll->SetCapacityFromWidget(this, WID_GS_OPTIONSPANEL, SETTINGTREE_TOP_OFFSET + SETTINGTREE_BOTTOM_OFFSET);
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
1763 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1764 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1765
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1766 GameSettings *GameSettingsWindow::settings_ptr = NULL;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1767
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1768 static const NWidgetPart _nested_settings_selection_widgets[] = {
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1769 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
1770 NWidget(WWT_CLOSEBOX, COLOUR_MAUVE),
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
1771 NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_CONFIG_SETTING_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1772 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1773 NWidget(NWID_HORIZONTAL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1774 NWidget(WWT_PANEL, COLOUR_MAUVE, WID_GS_OPTIONSPANEL), SetMinimalSize(400, 174), SetScrollbar(WID_GS_SCROLLBAR), EndContainer(),
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1775 NWidget(NWID_VERTICAL),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1776 NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_GS_SCROLLBAR),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
1777 NWidget(WWT_RESIZEBOX, COLOUR_MAUVE),
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1778 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1779 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1780 };
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1781
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1782 static const WindowDesc _settings_selection_desc(
13796
3e68f07eb821 (svn r18322) -Codechange: remove the WDP duplication; no need to tell the same twice.
rubidium <rubidium@openttd.org>
parents: 13760
diff changeset
1783 WDP_CENTER, 450, 397,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5688
diff changeset
1784 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1785 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
1786 _nested_settings_selection_widgets, lengthof(_nested_settings_selection_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
1787 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1788
16734
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
1789 /** Open advanced settings window. */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1790 void ShowGameSettings()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1791 {
18753
8d2cdabac894 (svn r23601) -Fix: fix the conflict in window number
truebrain <truebrain@openttd.org>
parents: 18703
diff changeset
1792 DeleteWindowByClass(WC_GAME_OPTIONS);
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1793 new GameSettingsWindow(&_settings_selection_desc);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1794 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1795
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1796
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1797 /**
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1798 * Draw [<][>] boxes.
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1799 * @param x the x position to draw
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1800 * @param y the y position to draw
9871
fa16e41cec2c (svn r14017) -Codechange: DrawArrowButtons now uses Colours enum to specify the colour of the button
belugas <belugas@openttd.org>
parents: 9793
diff changeset
1801 * @param button_colour the colour of the button
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1802 * @param state 0 = none clicked, 1 = first clicked, 2 = second clicked
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1803 * @param clickable_left is the left button clickable?
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1804 * @param clickable_right is the right button clickable?
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1805 */
9872
c26adcd5367e (svn r14018) -Fix (r14017): Typos prevented compilation.
peter1138 <peter1138@openttd.org>
parents: 9871
diff changeset
1806 void DrawArrowButtons(int x, int y, Colours button_colour, byte state, bool clickable_left, bool clickable_right)
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1807 {
10358
531cadaa0bbc (svn r14609) -Codechange: Use supplied button colour instead of hardcoded yellow, for 'greyed out' arrow buttons. (Yorick)
peter1138 <peter1138@openttd.org>
parents: 10310
diff changeset
1808 int colour = _colour_gradient[button_colour][2];
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1809
9871
fa16e41cec2c (svn r14017) -Codechange: DrawArrowButtons now uses Colours enum to specify the colour of the button
belugas <belugas@openttd.org>
parents: 9793
diff changeset
1810 DrawFrameRect(x, y + 1, x + 9, y + 9, button_colour, (state == 1) ? FR_LOWERED : FR_NONE);
fa16e41cec2c (svn r14017) -Codechange: DrawArrowButtons now uses Colours enum to specify the colour of the button
belugas <belugas@openttd.org>
parents: 9793
diff changeset
1811 DrawFrameRect(x + 10, y + 1, x + 19, y + 9, button_colour, (state == 2) ? FR_LOWERED : FR_NONE);
13665
d9309c7b84bf (svn r18189) -Codechange: remove some now unneeded strings
rubidium <rubidium@openttd.org>
parents: 13663
diff changeset
1812 DrawSprite(SPR_ARROW_LEFT, PAL_NONE, x + WD_IMGBTN_LEFT, y + WD_IMGBTN_TOP);
d9309c7b84bf (svn r18189) -Codechange: remove some now unneeded strings
rubidium <rubidium@openttd.org>
parents: 13663
diff changeset
1813 DrawSprite(SPR_ARROW_RIGHT, PAL_NONE, x + WD_IMGBTN_LEFT + 10, y + WD_IMGBTN_TOP);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1814
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1815 /* Grey out the buttons that aren't clickable */
16441
86fd9bcc9d2f (svn r21157) -Codechange: remove information about the text direction out of the language "list"
rubidium <rubidium@openttd.org>
parents: 16302
diff changeset
1816 bool rtl = _current_text_dir == TD_RTL;
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1817 if (rtl ? !clickable_right : !clickable_left) {
9871
fa16e41cec2c (svn r14017) -Codechange: DrawArrowButtons now uses Colours enum to specify the colour of the button
belugas <belugas@openttd.org>
parents: 9793
diff changeset
1818 GfxFillRect(x + 1, y + 1, x + 1 + 8, y + 8, colour, FILLRECT_CHECKER);
9872
c26adcd5367e (svn r14018) -Fix (r14017): Typos prevented compilation.
peter1138 <peter1138@openttd.org>
parents: 9871
diff changeset
1819 }
13672
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1820 if (rtl ? !clickable_left : !clickable_right) {
9872
c26adcd5367e (svn r14018) -Fix (r14017): Typos prevented compilation.
peter1138 <peter1138@openttd.org>
parents: 9871
diff changeset
1821 GfxFillRect(x + 11, y + 1, x + 11 + 8, y + 8, colour, FILLRECT_CHECKER);
c26adcd5367e (svn r14018) -Fix (r14017): Typos prevented compilation.
peter1138 <peter1138@openttd.org>
parents: 9871
diff changeset
1822 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1823 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1824
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1825 struct CustomCurrencyWindow : Window {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1826 int query_widget;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1827
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1828 CustomCurrencyWindow(const WindowDesc *desc) : Window()
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1829 {
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1830 this->InitNested(desc);
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1831
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1832 SetButtonState();
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1833 }
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1834
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1835 void SetButtonState()
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1836 {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1837 this->SetWidgetDisabledState(WID_CC_RATE_DOWN, _custom_currency.rate == 1);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1838 this->SetWidgetDisabledState(WID_CC_RATE_UP, _custom_currency.rate == UINT16_MAX);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1839 this->SetWidgetDisabledState(WID_CC_YEAR_DOWN, _custom_currency.to_euro == CF_NOEURO);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1840 this->SetWidgetDisabledState(WID_CC_YEAR_UP, _custom_currency.to_euro == MAX_YEAR);
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1841 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1842
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1843 virtual void SetStringParameters(int widget) const
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1844 {
13136
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1845 switch (widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1846 case WID_CC_RATE: SetDParam(0, 1); SetDParam(1, 1); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1847 case WID_CC_SEPARATOR: SetDParamStr(0, _custom_currency.separator); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1848 case WID_CC_PREFIX: SetDParamStr(0, _custom_currency.prefix); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1849 case WID_CC_SUFFIX: SetDParamStr(0, _custom_currency.suffix); break;
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1850 case WID_CC_YEAR:
13136
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1851 SetDParam(0, (_custom_currency.to_euro != CF_NOEURO) ? STR_CURRENCY_SWITCH_TO_EURO : STR_CURRENCY_SWITCH_TO_EURO_NEVER);
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1852 SetDParam(1, _custom_currency.to_euro);
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1853 break;
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1854
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1855 case WID_CC_PREVIEW:
13136
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1856 SetDParam(0, 10000);
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1857 break;
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1858 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1859 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1860
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
1861 virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1862 {
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1863 switch (widget) {
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1864 /* Set the appropriate width for the edit 'buttons' */
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1865 case WID_CC_SEPARATOR_EDIT:
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1866 case WID_CC_PREFIX_EDIT:
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1867 case WID_CC_SUFFIX_EDIT:
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1868 size->width = this->GetWidget<NWidgetBase>(WID_CC_RATE_DOWN)->smallest_x + this->GetWidget<NWidgetBase>(WID_CC_RATE_UP)->smallest_x;
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1869 break;
13136
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1870
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1871 /* Make sure the window is wide enough for the widest exchange rate */
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1872 case WID_CC_RATE:
13136
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1873 SetDParam(0, 1);
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1874 SetDParam(1, INT32_MAX);
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1875 *size = GetStringBoundingBox(STR_CURRENCY_EXCHANGE_RATE);
7db0723659c0 (svn r17641) -Codechange: remove the {N:...} that's not needed anymore since the currency window is nested.
rubidium <rubidium@openttd.org>
parents: 13135
diff changeset
1876 break;
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1877 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1878 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1879
14409
1eaefde497fd (svn r18966) -Codechange: Remove Window::OnDoubleClick() in favour of a parameter for OnClick().
frosch <frosch@openttd.org>
parents: 14385
diff changeset
1880 virtual void OnClick(Point pt, int widget, int click_count)
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1881 {
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1882 int line = 0;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1883 int len = 0;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1884 StringID str = 0;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1885 CharSetFilter afilter = CS_ALPHANUMERAL;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1886
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1887 switch (widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1888 case WID_CC_RATE_DOWN:
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1889 if (_custom_currency.rate > 1) _custom_currency.rate--;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1890 if (_custom_currency.rate == 1) this->DisableWidget(WID_CC_RATE_DOWN);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1891 this->EnableWidget(WID_CC_RATE_UP);
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1892 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1893
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1894 case WID_CC_RATE_UP:
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1895 if (_custom_currency.rate < UINT16_MAX) _custom_currency.rate++;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1896 if (_custom_currency.rate == UINT16_MAX) this->DisableWidget(WID_CC_RATE_UP);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1897 this->EnableWidget(WID_CC_RATE_DOWN);
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1898 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1899
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1900 case WID_CC_RATE:
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1901 SetDParam(0, _custom_currency.rate);
12493
32e2de3d509a (svn r16930) -Codechange: more StringID name unification and grouping
rubidium <rubidium@openttd.org>
parents: 12475
diff changeset
1902 str = STR_JUST_INT;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1903 len = 5;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1904 line = WID_CC_RATE;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1905 afilter = CS_NUMERAL;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1906 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1907
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1908 case WID_CC_SEPARATOR_EDIT:
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1909 case WID_CC_SEPARATOR:
11754
1b84d3b57f8b (svn r16144) -Fix (r16129): setting the custom digit grouping separator required to restart OpenTTD to take effect. Now also support non 1 ASCII character custom grouping separators.
rubidium <rubidium@openttd.org>
parents: 11752
diff changeset
1910 SetDParamStr(0, _custom_currency.separator);
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9607
diff changeset
1911 str = STR_JUST_RAW_STRING;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1912 len = 1;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1913 line = WID_CC_SEPARATOR;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1914 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1915
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1916 case WID_CC_PREFIX_EDIT:
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1917 case WID_CC_PREFIX:
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9607
diff changeset
1918 SetDParamStr(0, _custom_currency.prefix);
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9607
diff changeset
1919 str = STR_JUST_RAW_STRING;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1920 len = 12;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1921 line = WID_CC_PREFIX;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1922 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1923
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1924 case WID_CC_SUFFIX_EDIT:
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1925 case WID_CC_SUFFIX:
9648
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9607
diff changeset
1926 SetDParamStr(0, _custom_currency.suffix);
b53049484e44 (svn r13715) -Fix [FS#2129]: C-like strings had to be rebound each time they were printed, otherwise the text could change due to the few number of slots that could be used to bind.
rubidium <rubidium@openttd.org>
parents: 9607
diff changeset
1927 str = STR_JUST_RAW_STRING;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1928 len = 12;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1929 line = WID_CC_SUFFIX;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1930 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1931
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1932 case WID_CC_YEAR_DOWN:
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1933 _custom_currency.to_euro = (_custom_currency.to_euro <= 2000) ? CF_NOEURO : _custom_currency.to_euro - 1;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1934 if (_custom_currency.to_euro == CF_NOEURO) this->DisableWidget(WID_CC_YEAR_DOWN);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1935 this->EnableWidget(WID_CC_YEAR_UP);
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1936 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1937
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1938 case WID_CC_YEAR_UP:
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1939 _custom_currency.to_euro = Clamp(_custom_currency.to_euro + 1, 2000, MAX_YEAR);
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1940 if (_custom_currency.to_euro == MAX_YEAR) this->DisableWidget(WID_CC_YEAR_UP);
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1941 this->EnableWidget(WID_CC_YEAR_DOWN);
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1942 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1943
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1944 case WID_CC_YEAR:
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1945 SetDParam(0, _custom_currency.to_euro);
12493
32e2de3d509a (svn r16930) -Codechange: more StringID name unification and grouping
rubidium <rubidium@openttd.org>
parents: 12475
diff changeset
1946 str = STR_JUST_INT;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1947 len = 7;
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1948 line = WID_CC_YEAR;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1949 afilter = CS_NUMERAL;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1950 break;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1951 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1952
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1953 if (len != 0) {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1954 this->query_widget = line;
17579
105b4e4eb168 (svn r22343) -Change: Remove pixel limiter for query strings.
terkhen <terkhen@openttd.org>
parents: 17551
diff changeset
1955 ShowQueryString(str, STR_CURRENCY_CHANGE_PARAMETER, len + 1, this, afilter, QSF_NONE);
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1956 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1957
18677
7077d1f6763b (svn r23525) -Codechange: make Window::flags4 WindowFlags instead of uint16, with only values known in WindowFlags (and move out 2 timers to their own variable)
truebrain <truebrain@openttd.org>
parents: 18650
diff changeset
1958 this->SetTimeout();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1959 this->SetDirty();
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1960 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1961
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1962 virtual void OnQueryTextFinished(char *str)
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1963 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1964 if (str == NULL) return;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1965
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1966 switch (this->query_widget) {
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1967 case WID_CC_RATE:
10510
c317167cc7a4 (svn r14767) -Codechange: remove some unneeded artificial limits from currencies and use the bounds of the data type.
rubidium <rubidium@openttd.org>
parents: 10500
diff changeset
1968 _custom_currency.rate = Clamp(atoi(str), 1, UINT16_MAX);
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1969 break;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1970
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1971 case WID_CC_SEPARATOR: // Thousands seperator
11754
1b84d3b57f8b (svn r16144) -Fix (r16129): setting the custom digit grouping separator required to restart OpenTTD to take effect. Now also support non 1 ASCII character custom grouping separators.
rubidium <rubidium@openttd.org>
parents: 11752
diff changeset
1972 strecpy(_custom_currency.separator, str, lastof(_custom_currency.separator));
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1973 break;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1974
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1975 case WID_CC_PREFIX:
10310
5cefbb1c3fd7 (svn r14555) -Codechange: replace ttd_strlcat and ttd_strlcpy with strecat and strecpy where direct conversion is possible
skidd13 <skidd13@openttd.org>
parents: 10234
diff changeset
1976 strecpy(_custom_currency.prefix, str, lastof(_custom_currency.prefix));
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1977 break;
8188
2ca3ac32fa76 (svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas <belugas@openttd.org>
parents: 8182
diff changeset
1978
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1979 case WID_CC_SUFFIX:
10310
5cefbb1c3fd7 (svn r14555) -Codechange: replace ttd_strlcat and ttd_strlcpy with strecat and strecpy where direct conversion is possible
skidd13 <skidd13@openttd.org>
parents: 10234
diff changeset
1980 strecpy(_custom_currency.suffix, str, lastof(_custom_currency.suffix));
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1981 break;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1982
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
1983 case WID_CC_YEAR: { // Year to switch to euro
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1984 int val = atoi(str);
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1985
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1986 _custom_currency.to_euro = (val < 2000 ? CF_NOEURO : min(val, MAX_YEAR));
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1987 break;
8188
2ca3ac32fa76 (svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas <belugas@openttd.org>
parents: 8182
diff changeset
1988 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1989 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1990 MarkWholeScreenDirty();
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1991 SetButtonState();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1992 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1993
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1994 virtual void OnTimeout()
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1995 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1996 this->SetDirty();
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1997 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1998 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1999
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
2000 static const NWidgetPart _nested_cust_currency_widgets[] = {
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
2001 NWidget(NWID_HORIZONTAL),
13752
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
2002 NWidget(WWT_CLOSEBOX, COLOUR_GREY),
517d77f53919 (svn r18277) -Codechange: remove unneeded widget indices for close, resize and sticky boxes and for window captions
rubidium <rubidium@openttd.org>
parents: 13749
diff changeset
2003 NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_CURRENCY_WINDOW, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
2004 EndContainer(),
13755
bf8a4ced15fe (svn r18280) -Codechange: remove widget indices that are not needed for custom drawing/handling input
rubidium <rubidium@openttd.org>
parents: 13752
diff changeset
2005 NWidget(WWT_PANEL, COLOUR_GREY),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2006 NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(7, 3, 0),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2007 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2008 NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_RATE_DOWN), SetDataTip(AWV_DECREASE, STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP),
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2009 NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_RATE_UP), SetDataTip(AWV_INCREASE, STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2010 NWidget(NWID_SPACER), SetMinimalSize(5, 0),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2011 NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_RATE), SetDataTip(STR_CURRENCY_EXCHANGE_RATE, STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP), SetFill(1, 0),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2012 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2013 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2014 NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, WID_CC_SEPARATOR_EDIT), SetDataTip(0x0, STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP), SetFill(0, 1),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2015 NWidget(NWID_SPACER), SetMinimalSize(5, 0),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2016 NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_SEPARATOR), SetDataTip(STR_CURRENCY_SEPARATOR, STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP), SetFill(1, 0),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2017 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2018 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2019 NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, WID_CC_PREFIX_EDIT), SetDataTip(0x0, STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP), SetFill(0, 1),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2020 NWidget(NWID_SPACER), SetMinimalSize(5, 0),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2021 NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_PREFIX), SetDataTip(STR_CURRENCY_PREFIX, STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP), SetFill(1, 0),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2022 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2023 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2024 NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, WID_CC_SUFFIX_EDIT), SetDataTip(0x0, STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP), SetFill(0, 1),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2025 NWidget(NWID_SPACER), SetMinimalSize(5, 0),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2026 NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_SUFFIX), SetDataTip(STR_CURRENCY_SUFFIX, STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP), SetFill(1, 0),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2027 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2028 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2029 NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_YEAR_DOWN), SetDataTip(AWV_DECREASE, STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP),
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2030 NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_YEAR_UP), SetDataTip(AWV_INCREASE, STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2031 NWidget(NWID_SPACER), SetMinimalSize(5, 0),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2032 NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_YEAR), SetDataTip(STR_JUST_STRING, STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), SetFill(1, 0),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
2033 EndContainer(),
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
2034 EndContainer(),
18703
b8177a6923bb (svn r23551) -Codechange: document and rename widgets to be consistent and understandable
truebrain <truebrain@openttd.org>
parents: 18680
diff changeset
2035 NWidget(WWT_LABEL, COLOUR_BLUE, WID_CC_PREVIEW),
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
2036 SetDataTip(STR_CURRENCY_PREVIEW, STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP), SetPadding(15, 1, 18, 2),
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
2037 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
2038 };
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
2039
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
2040 static const WindowDesc _cust_currency_desc(
13798
6f820ae12bb3 (svn r18324) -Codechange: there's no need for a default size when the window isn't resizable
rubidium <rubidium@openttd.org>
parents: 13796
diff changeset
2041 WDP_CENTER, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5688
diff changeset
2042 WC_CUSTOM_CURRENCY, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
2043 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
2044 _nested_cust_currency_widgets, lengthof(_nested_cust_currency_widgets)
11373
474ba6cc0946 (svn r15723) -Codechange: use a constructor for WindowDescs as that makes expanding them much easier (Alberth)
rubidium <rubidium@openttd.org>
parents: 11368
diff changeset
2045 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2046
16734
634ab1038a43 (svn r21467) -Doc: Add a few doxygen comments to config file settings code.
alberth <alberth@openttd.org>
parents: 16694
diff changeset
2047 /** Open custom currency window. */
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
2048 static void ShowCustCurrency()
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2049 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2050 DeleteWindowById(WC_CUSTOM_CURRENCY, 0);
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
2051 new CustomCurrencyWindow(&_cust_currency_desc);
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2052 }