annotate src/settings_gui.cpp @ 13983:aaf1fd51e6ac draft

(svn r18522) -Feature: add the possibility to not make new tree tiles in-game
author rubidium <rubidium@openttd.org>
date Thu, 17 Dec 2009 16:59:33 +0000 (2009-12-17)
parents 77bfe67f23bd
children ca29deba0f1a
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 "openttd.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
14 #include "currency.h"
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 "window_gui.h"
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
17 #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
18 #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
19 #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
20 #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
21 #include "town.h"
8208
ddc34919158f (svn r11771) -Codechange: split settings.h into better separated headers.
rubidium <rubidium@openttd.org>
parents: 8191
diff changeset
22 #include "settings_internal.h"
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
23 #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
24 #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
25 #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
26 #include "string_func.h"
8224
c45446125bf0 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium <rubidium@openttd.org>
parents: 8214
diff changeset
27 #include "gfx_func.h"
8321
c361d51b1bb8 (svn r11886) -Add: sort the strings in languages dropdown
glx <glx@openttd.org>
parents: 8319
diff changeset
28 #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
29 #include "widgets/dropdown_func.h"
8785
2a8950a812dc (svn r12489) -Codechange: split station.h into station_base.h and station_func.h.
rubidium <rubidium@openttd.org>
parents: 8648
diff changeset
30 #include "station_func.h"
10558
15517829eb17 (svn r14815) -Codechange: separate 'highscore' code from 'company' code
smatz <smatz@openttd.org>
parents: 10543
diff changeset
31 #include "highscore.h"
12678
ea203bb44a25 (svn r17133) -Codechange: generalise the code that searches for base graphics
rubidium <rubidium@openttd.org>
parents: 12676
diff changeset
32 #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
33 #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
34 #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
35 #include "viewport_func.h"
9581
9a3e1ee617ce (svn r13618) -Codechange: move tar-specific declarations to separate file
smatz <smatz@openttd.org>
parents: 9533
diff changeset
36 #include <map>
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
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 #include "table/sprites.h"
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
39 #include "table/strings.h"
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
40
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
41 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
42 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
43 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
44 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
45 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
46 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
47
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
48 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
49 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
50 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
51 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
52 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
53
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
54 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
55 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
56 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
57 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
58 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
59 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
60 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
61 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
62
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
63 static StringID *BuildDynamicDropdown(StringID base, int num)
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
64 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
65 static StringID buf[32 + 1];
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
66 StringID *p = buf;
8969
01cc3ee6ecb1 (svn r12761) -Codechange: lots of minor whitespace coding style fixes around operators.
rubidium <rubidium@openttd.org>
parents: 8881
diff changeset
67 while (--num >= 0) *p++ = base++;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
68 *p = 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
69 return buf;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
70 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
71
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
72 int _nb_orig_names = SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
73 static StringID *_grf_names = NULL;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
74 static int _nb_grf_names = 0;
6797
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
75
8323
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
76 void InitGRFTownGeneratorNames()
6797
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
77 {
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
78 free(_grf_names);
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
79 _grf_names = GetGRFTownNameList();
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
80 _nb_grf_names = 0;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
81 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
82 }
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
83
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
84 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
85 {
12619
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
86 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
87 town_name -= _nb_orig_names;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
88 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
89 return STR_UNDEFINED;
6797
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
90 }
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
91
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
92 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
93 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
94 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
95
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
96 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
97 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
98 (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
99 break;
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 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
102 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
103 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
104
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
105 /** Widgets of the game options menu */
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
106 enum GameOptionsWidgets {
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
107 GOW_BACKGROUND, ///< Background of the window
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
108 GOW_CURRENCY_DROPDOWN, ///< Currency dropdown
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
109 GOW_DISTANCE_DROPDOWN, ///< Measuring unit dropdown
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
110 GOW_ROADSIDE_DROPDOWN, ///< Dropdown to select the road side (to set the right side ;))
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
111 GOW_TOWNNAME_DROPDOWN, ///< Town name dropdown
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
112 GOW_AUTOSAVE_DROPDOWN, ///< Dropdown to say how often to autosave
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
113 GOW_LANG_DROPDOWN, ///< Language dropdown
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
114 GOW_RESOLUTION_DROPDOWN, ///< Dropdown for the resolution
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
115 GOW_FULLSCREEN_BUTTON, ///< Toggle fullscreen
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
116 GOW_SCREENSHOT_DROPDOWN, ///< Select the screenshot type... please use PNG!
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
117 GOW_BASE_GRF_DROPDOWN, ///< Use to select a base GRF
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
118 GOW_BASE_GRF_STATUS, ///< Info about missing files etc.
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
119 GOW_BASE_GRF_DESCRIPTION,///< Description of selected base GRF
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
120 GOW_BASE_SFX_DROPDOWN, ///< Use to select a base SFX
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
121 GOW_BASE_SFX_DESCRIPTION,///< Description of selected base SFX
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
122 };
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
123
8321
c361d51b1bb8 (svn r11886) -Add: sort the strings in languages dropdown
glx <glx@openttd.org>
parents: 8319
diff changeset
124 /**
8323
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
125 * Update/redraw the townnames dropdown
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
126 * @param w the window the dropdown belongs to
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
127 * @param sel the currently selected townname generator
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
128 */
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
129 static void ShowTownnameDropdown(Window *w, int sel)
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
130 {
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
131 typedef std::map<StringID, int, StringIDCompare> TownList;
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
132 TownList townnames;
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
133
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
134 /* Add and sort original townnames generators */
12619
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
135 for (int i = 0; i < _nb_orig_names; i++) townnames[STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH + i] = i;
8323
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
136
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
137 /* Add and sort newgrf townnames generators */
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
138 for (int i = 0; i < _nb_grf_names; i++) townnames[_grf_names[i]] = _nb_orig_names + i;
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
139
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
140 DropDownList *list = new DropDownList();
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
141 for (TownList::iterator it = townnames.begin(); it != townnames.end(); it++) {
11973
e17a54c88806 (svn r16379) -Codechange: remove GetNumTowns(), GetNumIndustries() and GetActiveCompanyCount(), use PoolItem::GetNumItems() instead
smatz <smatz@openttd.org>
parents: 11939
diff changeset
142 list->push_back(new DropDownListStringItem((*it).first, (*it).second, !(_game_mode == GM_MENU || Town::GetNumItems() == 0 || (*it).second == sel)));
8323
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
143 }
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
144
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
145 ShowDropDownList(w, list, sel, GOW_TOWNNAME_DROPDOWN);
8323
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
146 }
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
147
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
148 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
149
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
150 template <class T>
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
151 static void ShowSetMenu(Window *w, int widget)
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
152 {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
153 int n = T::GetNumSets();
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
154 int current = 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
155
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
156 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
157 for (int i = 0; i < n; i++) {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
158 list->push_back(new DropDownListCharStringItem(T::GetSet(i)->name, i, (_game_mode == GM_MENU) ? false : (current != 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
159 }
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
160
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
161 ShowDropDownList(w, list, current, widget);
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
162 }
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
163
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
164 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
165 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
166 bool reload;
9346
0c181c088ed8 (svn r13242) -Codechange: remove _opt_ptr.
rubidium <rubidium@openttd.org>
parents: 9334
diff changeset
167
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
168 GameOptionsWindow(const WindowDesc *desc) : Window()
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
169 {
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
170 this->opt = (_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game;
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
171 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
172
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
173 this->InitNested(desc);
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
174 this->OnInvalidateData(0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
175 }
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
176
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
177 ~GameOptionsWindow()
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
178 {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
179 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
180 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
181 }
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
182
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
183 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
184 {
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
185 switch (widget) {
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
186 case GOW_CURRENCY_DROPDOWN: SetDParam(0, _currency_specs[this->opt->locale.currency].name); break;
12619
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
187 case GOW_DISTANCE_DROPDOWN: SetDParam(0, STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL + this->opt->locale.units); break;
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
188 case GOW_ROADSIDE_DROPDOWN: SetDParam(0, STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT + this->opt->vehicle.road_side); break;
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
189 case GOW_TOWNNAME_DROPDOWN: SetDParam(0, TownName(this->opt->game_creation.town_name)); break;
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
190 case GOW_AUTOSAVE_DROPDOWN: SetDParam(0, _autosave_dropdown[_settings_client.gui.autosave]); break;
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
191 case GOW_LANG_DROPDOWN: SetDParam(0, SPECSTR_LANGUAGE_START + _dynlang.curr); break;
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
192 case GOW_RESOLUTION_DROPDOWN: SetDParam(0, GetCurRes() == _num_resolutions ? STR_RES_OTHER : SPECSTR_RESOLUTION_START + GetCurRes()); break;
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
193 case GOW_SCREENSHOT_DROPDOWN: SetDParam(0, SPECSTR_SCREENSHOT_START + _cur_screenshot_format); break;
12678
ea203bb44a25 (svn r17133) -Codechange: generalise the code that searches for base graphics
rubidium <rubidium@openttd.org>
parents: 12676
diff changeset
194 case GOW_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->name); break;
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
195 case GOW_BASE_GRF_STATUS: SetDParam(0, BaseGraphics::GetUsedSet()->GetNumInvalid()); break;
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
196 case GOW_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->name); break;
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
197 }
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
198 }
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
199
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
200 virtual void OnPaint()
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
201 {
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
202 this->DrawWidgets();
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
203 }
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
204
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
205 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
206 {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
207 switch (widget) {
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
208 case GOW_BASE_GRF_DESCRIPTION:
13281
e241d1485669 (svn r17790) -Feature: translatable base sound/graphics set descriptions
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
209 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
210 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
211 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
212
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
213 case GOW_BASE_SFX_DESCRIPTION:
13281
e241d1485669 (svn r17790) -Feature: translatable base sound/graphics set descriptions
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
214 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
215 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
216 break;
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
217 }
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
218 }
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
219
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
220 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
221 {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
222 switch (widget) {
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
223 case GOW_BASE_GRF_DESCRIPTION:
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
224 /* 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
225 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
226 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
227 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
228 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
229 break;
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
230
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
231 case GOW_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
232 /* 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
233 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
234 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
235 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
236
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
237 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
238 *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
239 }
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
240 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
241
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
242 case GOW_BASE_SFX_DESCRIPTION:
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
243 /* 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
244 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
245 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
246 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
247 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
248 break;
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
249 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
250 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
251
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
252 virtual void OnClick(Point pt, int widget)
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
253 {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
254 switch (widget) {
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
255 case GOW_CURRENCY_DROPDOWN: // Setup currencies dropdown
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
256 ShowDropDownMenu(this, BuildCurrencyDropdown(), this->opt->locale.currency, GOW_CURRENCY_DROPDOWN, _game_mode == GM_MENU ? 0 : ~GetMaskOfAllowedCurrencies(), 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
257 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
258
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
259 case GOW_DISTANCE_DROPDOWN: // Setup distance unit dropdown
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
260 ShowDropDownMenu(this, _units_dropdown, this->opt->locale.units, GOW_DISTANCE_DROPDOWN, 0, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
261 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
262
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
263 case GOW_ROADSIDE_DROPDOWN: { // Setup road-side dropdown
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
264 int i = 0;
9298
b2a46cf9b23e (svn r13166) -Codechange: CmdSetRoadDriveSide belongs in road_cmd.cpp, not settings_gui.cpp.
rubidium <rubidium@openttd.org>
parents: 9291
diff changeset
265 extern bool RoadVehiclesAreBuilt();
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
266
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
267 /* You can only change the drive side if you are in the menu or ingame with
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
268 * no vehicles present. In a networking game only the server can change it */
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
269 if ((_game_mode != GM_MENU && RoadVehiclesAreBuilt()) || (_networking && !_network_server)) {
9358
12f4585b2124 (svn r13255) -Codechange: move _opt to _settings.
rubidium <rubidium@openttd.org>
parents: 9354
diff changeset
270 i = (-1) ^ (1 << this->opt->vehicle.road_side); // disable the other value
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
271 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
272
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
273 ShowDropDownMenu(this, _driveside_dropdown, this->opt->vehicle.road_side, GOW_ROADSIDE_DROPDOWN, i, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
274 } break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
275
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
276 case GOW_TOWNNAME_DROPDOWN: // Setup townname dropdown
9358
12f4585b2124 (svn r13255) -Codechange: move _opt to _settings.
rubidium <rubidium@openttd.org>
parents: 9354
diff changeset
277 ShowTownnameDropdown(this, this->opt->game_creation.town_name);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
278 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
279
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
280 case GOW_AUTOSAVE_DROPDOWN: // Setup autosave dropdown
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
281 ShowDropDownMenu(this, _autosave_dropdown, _settings_client.gui.autosave, GOW_AUTOSAVE_DROPDOWN, 0, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
282 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
283
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
284 case GOW_LANG_DROPDOWN: { // Setup interface language dropdown
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
285 typedef std::map<StringID, int, StringIDCompare> LangList;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
286
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
287 /* Sort language names */
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
288 LangList langs;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
289 for (int i = 0; i < _dynlang.num; i++) langs[SPECSTR_LANGUAGE_START + i] = i;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
290
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
291 DropDownList *list = new DropDownList();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
292 for (LangList::iterator it = langs.begin(); it != langs.end(); it++) {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
293 list->push_back(new DropDownListStringItem((*it).first, (*it).second, false));
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
294 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
295
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
296 ShowDropDownList(this, list, _dynlang.curr, GOW_LANG_DROPDOWN);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
297 } break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
298
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
299 case GOW_RESOLUTION_DROPDOWN: // Setup resolution dropdown
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
300 ShowDropDownMenu(this, BuildDynamicDropdown(SPECSTR_RESOLUTION_START, _num_resolutions), GetCurRes(), GOW_RESOLUTION_DROPDOWN, 0, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
301 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
302
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
303 case GOW_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
304 /* 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
305 if (!ToggleFullScreen(!_fullscreen)) {
13419
ddfb6a69b9c3 (svn r17928) -Codechange: ShowErrorMessage() now takes the summary string before the details string.
alberth <alberth@openttd.org>
parents: 13364
diff changeset
306 ShowErrorMessage(STR_ERROR_FULLSCREEN_FAILED, INVALID_STRING_ID, 0, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
307 }
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
308 this->SetWidgetLoweredState(GOW_FULLSCREEN_BUTTON, _fullscreen);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
309 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
310 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
311
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
312 case GOW_SCREENSHOT_DROPDOWN: // Setup screenshot format dropdown
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
313 ShowDropDownMenu(this, BuildDynamicDropdown(SPECSTR_SCREENSHOT_START, _num_screenshot_formats), _cur_screenshot_format, GOW_SCREENSHOT_DROPDOWN, 0, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
314 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
315
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
316 case GOW_BASE_GRF_DROPDOWN:
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
317 ShowSetMenu<BaseGraphics>(this, GOW_BASE_GRF_DROPDOWN);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
318 break;
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
319
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
320 case GOW_BASE_SFX_DROPDOWN:
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
321 ShowSetMenu<BaseSounds>(this, GOW_BASE_SFX_DROPDOWN);
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
322 break;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
323 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
324 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
325
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
326 /**
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
327 * Set the base media set.
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
328 * @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
329 * @tparam T class of media set
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
330 */
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
331 template <class T>
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
332 void SetMediaSet(int index)
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 if (_game_mode == GM_MENU) {
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
335 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
336
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
337 free(const_cast<char *>(T::ini_set));
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
338 T::ini_set = strdup(name);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
339
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
340 T::SetSet(name);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
341 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
342 this->InvalidateData();
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
343 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
344 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
345
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
346 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
347 {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
348 switch (widget) {
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
349 case GOW_CURRENCY_DROPDOWN: // Currency
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
350 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
351 this->opt->locale.currency = index;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
352 MarkWholeScreenDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
353 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
354
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
355 case GOW_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
356 this->opt->locale.units = index;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
357 MarkWholeScreenDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
358 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
359
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
360 case GOW_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
361 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
362 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
363 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
364 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
365 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
366 }
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
367 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
368
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
369 case GOW_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
370 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
371 this->opt->game_creation.town_name = index;
13034
6eb3f749890a (svn r17532) -Codechange: Rename several Invalidate functions to SetDirty for more consistency and distinguishability.
frosch <frosch@openttd.org>
parents: 12880
diff changeset
372 SetWindowDirty(WC_GAME_OPTIONS, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
373 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
374 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
375
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
376 case GOW_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
377 _settings_client.gui.autosave = index;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
378 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
379 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
380
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
381 case GOW_LANG_DROPDOWN: // Change interface language
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
382 ReadLanguagePack(index);
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
383 CheckForMissingGlyphsInLoadedLanguagePack();
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
384 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
385 ReInitAllWindows();
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
386 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
387
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
388 case GOW_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
389 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
390 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
391 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
392 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
393
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
394 case GOW_SCREENSHOT_DROPDOWN: // Change screenshot format
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
395 SetScreenshotFormat(index);
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
396 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
397 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
398
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
399 case GOW_BASE_GRF_DROPDOWN:
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
400 this->SetMediaSet<BaseGraphics>(index);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
401 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
402
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
403 case GOW_BASE_SFX_DROPDOWN:
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
404 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
405 break;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
406 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
407 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
408
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
409 virtual void OnInvalidateData(int data)
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
410 {
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
411 this->SetWidgetLoweredState(GOW_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
412
12678
ea203bb44a25 (svn r17133) -Codechange: generalise the code that searches for base graphics
rubidium <rubidium@openttd.org>
parents: 12676
diff changeset
413 bool missing_files = BaseGraphics::GetUsedSet()->GetNumMissing() == 0;
13072
75bd67594af2 (svn r17572) -Codechange: Use the Window::GetWidget() function to access nested widgets through the nested_array.
alberth <alberth@openttd.org>
parents: 13034
diff changeset
414 this->GetWidget<NWidgetCore>(GOW_BASE_GRF_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_GRF_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
415 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
416 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
417
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
418 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
419 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
420 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
421 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
422 EndContainer(),
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
423 NWidget(WWT_PANEL, COLOUR_GREY, GOW_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
424 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
425 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
426 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, 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
427 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_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
428 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
429 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME, 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
430 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_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
431 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
432 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_AUTOSAVE_FRAME, 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
433 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_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
434 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
435 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_RESOLUTION, 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
436 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_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
437 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
438 NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_FULLSCREEN, STR_NULL),
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13665
diff changeset
439 NWidget(WWT_TEXTBTN, COLOUR_GREY, GOW_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
440 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
441 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
442 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
443
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
444 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
445 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_MEASURING_UNITS_FRAME, 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
446 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_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
447 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
448 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_TOWN_NAMES_FRAME, 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
449 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_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
450 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
451 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_LANGUAGE, 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
452 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_LANG_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_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
453 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
454 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_SCREENSHOT_FORMAT, 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
455 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_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
456 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
457 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
458 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
459 EndContainer(),
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
460
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
461 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_GRF, 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
462 NWidget(NWID_HORIZONTAL), SetPIP(00, 30, 0),
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13665
diff changeset
463 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_BASE_GRF_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_RAW_STRING, STR_GAME_OPTIONS_BASE_GRF_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
464 NWidget(WWT_TEXT, COLOUR_GREY, GOW_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
465 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
466 NWidget(WWT_TEXT, COLOUR_GREY, GOW_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
467 EndContainer(),
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
468
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
469 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
470 NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 0),
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13665
diff changeset
471 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_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
472 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
473 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
474 NWidget(WWT_TEXT, COLOUR_GREY, GOW_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
475 EndContainer(),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
476 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
477 };
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
478
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
479 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
480 WDP_CENTER, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5688
diff changeset
481 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
482 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
483 _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
484 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
485
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
486
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
487 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
488 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
489 DeleteWindowById(WC_GAME_OPTIONS, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
490 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
491 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
492
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
493 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
494
11505
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
495
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
496 /* Names of the game difficulty settings window */
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
497 enum GameDifficultyWidgets {
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
498 GDW_LVL_EASY,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
499 GDW_LVL_MEDIUM,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
500 GDW_LVL_HARD,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
501 GDW_LVL_CUSTOM,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
502 GDW_HIGHSCORE,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
503 GDW_ACCEPT,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
504 GDW_CANCEL,
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
505
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
506 GDW_OPTIONS_START,
11505
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
507 };
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
508
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
509 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
510
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
511 class GameDifficultyWindow : public Window {
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
512 private:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
513 /* 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
514 GameSettings opt_mod_temp;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
515
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
516 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
517 /** 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
518 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
519 /** 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
520 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
521
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
522 GameDifficultyWindow(const WindowDesc *desc) : Window()
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
523 {
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
524 this->InitNested(desc);
13131
f78f54c02ea0 (svn r17636) -Codechange: make the difficulty setting window nested
rubidium <rubidium@openttd.org>
parents: 13088
diff changeset
525
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
526 /* Copy current settings (ingame or in intro) to temporary holding place
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
527 * change that when setting stuff, copy back on clicking 'OK' */
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
528 this->opt_mod_temp = (_game_mode == GM_MENU) ? _settings_newgame : _settings_game;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
529 /* Setup disabled buttons when creating window
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
530 * 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
531 this->SetWidgetsDisabledState(_game_mode != GM_MENU,
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
532 GDW_LVL_EASY,
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
533 GDW_LVL_MEDIUM,
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
534 GDW_LVL_HARD,
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
535 GDW_LVL_CUSTOM,
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
536 WIDGET_LIST_END);
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
537 this->SetWidgetDisabledState(GDW_HIGHSCORE, _game_mode == GM_EDITOR || _networking); // highscore chart in multiplayer
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
538 this->SetWidgetDisabledState(GDW_ACCEPT, _networking && !_network_server); // Save-button in multiplayer (and if client)
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
539 this->LowerWidget(GDW_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
540 this->OnInvalidateData();
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
541 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
542
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
543 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
544 {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
545 widget -= GDW_OPTIONS_START;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
546 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
547
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
548 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
549
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
550 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
551 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
552 int32 value = (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
553 SetDParam(0, sd->desc.str + 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
554 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
555
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
556 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
557 {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
558 /* Only for the 'descriptions' */
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
559 int index = widget - GDW_OPTIONS_START;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
560 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
561
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
562 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
563
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
564 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
565 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
566 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
567
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
568 /* 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
569 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
570 for (int32 value = sdb->min; (uint32)value <= sdb->max; value += 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
571 SetDParam(0, sdb->str + 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
572 *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
573 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
574 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
575
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
576 virtual void OnPaint()
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
577 {
9273
72a6d2e60834 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents: 9246
diff changeset
578 this->DrawWidgets();
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
579 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
580
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
581 virtual void OnClick(Point pt, int widget)
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
582 {
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
583 if (widget >= GDW_OPTIONS_START) {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
584 widget -= GDW_OPTIONS_START;
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
585 if ((widget % 3) == 2) return;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
586
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
587 /* 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
588 if (_networking && !_network_server) return;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
589
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
590 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
591 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
592 const SettingDescBase *sdb = &sd->desc;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
593
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
594 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
595 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
596 /* 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
597 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
598 } 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
599 /* 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
600 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
601 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
602 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
603
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
604 /* 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
605 WriteValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv, val);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
606 this->RaiseWidget(GDW_LVL_EASY + this->opt_mod_temp.difficulty.diff_level);
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
607 SetDifficultyLevel(3, &this->opt_mod_temp.difficulty); // set difficulty level to custom
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
608 this->LowerWidget(GDW_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
609 this->InvalidateData();
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 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
611 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
612
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
613 switch (widget) {
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
614 case GDW_LVL_EASY:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
615 case GDW_LVL_MEDIUM:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
616 case GDW_LVL_HARD:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
617 case GDW_LVL_CUSTOM:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
618 /* temporarily change difficulty level */
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
619 this->RaiseWidget(GDW_LVL_EASY + this->opt_mod_temp.difficulty.diff_level);
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
620 SetDifficultyLevel(widget - GDW_LVL_EASY, &this->opt_mod_temp.difficulty);
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
621 this->LowerWidget(GDW_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
622 this->InvalidateData();
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
623 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
624
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
625 case GDW_HIGHSCORE: // Highscore Table
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
626 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
627 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
628
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
629 case GDW_ACCEPT: { // Save button - save changes
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
630 GameSettings *opt_ptr = (_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game;
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
631
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
632 uint i;
13088
1008c63fa996 (svn r17588) -Fix [FS#3220]: erroneous message about changing the difficulty level
rubidium <rubidium@openttd.org>
parents: 13072
diff changeset
633 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
634 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
635
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
636 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
637 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
638 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
639 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
640 /* 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
641 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
642 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
643 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
644 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
645 delete this;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
646 /* 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
647 * 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
648 * are loaded correctly. */
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
649 if (_game_mode == GM_EDITOR) StartupEconomy();
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
650 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
651 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
652
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
653 case GDW_CANCEL: // Cancel button - close window, abandon changes
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
654 delete this;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
655 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
656 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
657 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
658
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
659 virtual void OnInvalidateData(int data = 0)
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
660 {
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
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);
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 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
664 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
665 /* 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
666 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
667 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
668 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
669 (_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
670 (_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
671
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
672 this->SetWidgetDisabledState(GDW_OPTIONS_START + i * 3 + 0, disable || sdb->min == value);
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
673 this->SetWidgetDisabledState(GDW_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
674 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
675 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
676 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
677
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
678 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
679 {
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 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
681
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 int widnum = GDW_OPTIONS_START;
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 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
684 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
685
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 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
687 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
688
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 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
690
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 /* [<] button. */
13663
62985032eb6e (svn r18187) -Codechange: make the advanced face selection, custom currency, difficulty, news settings, signal, sign and vehicle details window RTL aware (use the arrow widget)
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
692 NWidgetLeaf *leaf = new NWidgetLeaf(NWID_BUTTON_ARROW, 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
693 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
694
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
695 /* [>] button. */
13663
62985032eb6e (svn r18187) -Codechange: make the advanced face selection, custom currency, difficulty, news settings, signal, sign and vehicle details window RTL aware (use the arrow widget)
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
696 leaf = new NWidgetLeaf(NWID_BUTTON_ARROW, 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
697 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
698
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 /* 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
700 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
701 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
702
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
703 /* 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
704 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
705 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
706 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
707 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
708
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 /* 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
710 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
711 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
712 *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
713 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
714 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
715
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
716
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
717 /** 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
718 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
719 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
720 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
721 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
722 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
723 NWidget(WWT_TEXTBTN, COLOUR_YELLOW, GDW_LVL_EASY), SetDataTip(STR_DIFFICULTY_LEVEL_EASY, STR_NULL), SetFill(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
724 NWidget(WWT_TEXTBTN, COLOUR_YELLOW, GDW_LVL_MEDIUM), SetDataTip(STR_DIFFICULTY_LEVEL_MEDIUM, STR_NULL), SetFill(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
725 NWidget(WWT_TEXTBTN, COLOUR_YELLOW, GDW_LVL_HARD), SetDataTip(STR_DIFFICULTY_LEVEL_HARD, STR_NULL), SetFill(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
726 NWidget(WWT_TEXTBTN, COLOUR_YELLOW, GDW_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
727 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
728 NWidget(NWID_HORIZONTAL), 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
729 NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, GDW_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
730 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
731 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
732 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
733 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
734 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
735 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
736 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
737 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
738 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
739 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
740 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
741 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
742 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
743 NWidget(NWID_SPACER), SetFill(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
744 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, GDW_ACCEPT), SetDataTip(STR_DIFFICULTY_LEVEL_SAVE, STR_NULL), SetFill(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
745 NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, GDW_CANCEL), SetDataTip(STR_BUTTON_CANCEL, STR_NULL), SetFill(1, 0),
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
746 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
747 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
748 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
749 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
750 };
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
751
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
752 /** 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
753 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
754 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
755 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
756 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
757 _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
758 );
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
759
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
760 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
761 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
762 DeleteWindowById(WC_GAME_OPTIONS, 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
763 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
764 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
765
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
766 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
767 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
768
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
769 /**
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
770 * 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
771 * @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
772 */
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
773 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
774 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
775 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
776 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
777
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
778 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
779
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
780 /* 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
781 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
782 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
783 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
784 };
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
785
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
786 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
787
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
788 /** 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
789 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
790 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
791 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
792 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
793 };
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
794
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
795 /** 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
796 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
797 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
798 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
799 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
800 };
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
801
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
802 /** 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
803 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
804 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
805 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
806 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
807 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
808 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
809 } 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
810
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
811 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
812 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
813
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
814 void Init(byte level, bool last_field);
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
815 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
816 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
817
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
818 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
819 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
820
11217
bbb1eaa48906 (svn r15570) -Fix: Too long strings in the advanced settings window are now truncated.
yexo <yexo@openttd.org>
parents: 11085
diff changeset
821 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
822
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
823 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
824 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
825 };
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
826
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
827 /** 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
828 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
829 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
830 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
831
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
832 void Init(byte level = 0);
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
833 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
834
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
835 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
836 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
837
11217
bbb1eaa48906 (svn r15570) -Fix: Too long strings in the advanced settings window are now truncated.
yexo <yexo@openttd.org>
parents: 11085
diff changeset
838 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
839 };
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
840
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
841
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
842 /* == 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
843
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
844 /**
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
845 * 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
846 * @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
847 */
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
848 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
849 {
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
850 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
851 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
852 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
853 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
854 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
855 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
856
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
857 /**
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
858 * 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
859 * @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
860 * @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
861 */
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
862 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
863 {
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
864 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
865 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
866 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
867 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
868 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
869 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
870
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
871 /**
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
872 * 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
873 * @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
874 * @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
875 */
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
876 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
877 {
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
878 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
879 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
880
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
881 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
882 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
883 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
884 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
885 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
886 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
887 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
888 break;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
889 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
890 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
891 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
892
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
893 /** 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
894 void SettingEntry::FoldAll()
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
895 {
12676
d1ed749a9ce5 (svn r17131) -Codechange: apply coding style to some switch statements
smatz <smatz@openttd.org>
parents: 12632
diff changeset
896 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
897 case SEF_SETTING_KIND:
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
898 break;
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
899
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
900 case SEF_SUBTREE_KIND:
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
901 this->d.sub.folded = true;
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
902 this->d.sub.page->FoldAll();
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
903 break;
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
904
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
905 default: NOT_REACHED();
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
906 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
907 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
908
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
909
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
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 * 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
912 * @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
913 * @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
914 */
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
915 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
916 {
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
917 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
918 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
919 }
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
920
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
921 /** 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
922 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
923 {
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
924 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
925 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
926 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
927 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
928 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
929
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
930 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
931 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
932 }
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
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
935 /**
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
936 * 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
937 * @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
938 * @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
939 * @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
940 */
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
941 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
942 {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
943 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
944
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
945 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
946 case SEF_SETTING_KIND:
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
947 (*cur_row)++;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
948 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
949 case SEF_SUBTREE_KIND:
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
950 (*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
951 if (this->d.sub.folded) {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
952 break;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
953 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
954
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
955 /* 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
956 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
957 default: NOT_REACHED();
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
958 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
959 return NULL;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
960 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
961
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
962 /**
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
963 * Draw a row in the settings panel.
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
964 *
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
965 * 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
966 *
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
967 * 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
968 * 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
969 * \verbatim
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
970 * |-- setting
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
971 * |-- (-) - Title
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
972 * | |-- setting
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
973 * | |-- setting
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
974 * \endverbatim
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
975 * 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
976 * 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
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 * @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
979 * @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
980 * @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
981 * @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
982 * @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
983 * @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
984 * @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
985 * @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
986 * @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
987 */
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
988 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
989 {
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
990 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
991
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
992 bool rtl = _dynlang.text_dir == TD_RTL;
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
993 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
994 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
995
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
996 int x = rtl ? right : left;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
997 int y = base_y;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
998 if (cur_row >= first_row) {
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
999 int colour = _colour_gradient[COLOUR_ORANGE][4];
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1000 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
1001
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1002 /* Draw vertical for parent nesting levels */
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1003 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
1004 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
1005 x += level_width;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1006 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1007 /* draw own |- prefix */
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1008 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
1009 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
1010 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
1011 /* 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
1012 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
1013 x += level_width;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1014 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1015
12676
d1ed749a9ce5 (svn r17131) -Codechange: apply coding style to some switch statements
smatz <smatz@openttd.org>
parents: 12632
diff changeset
1016 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
1017 case SEF_SETTING_KIND:
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1018 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
1019 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
1020 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1021 cur_row++;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1022 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
1023 case SEF_SUBTREE_KIND:
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1024 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
1025 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
1026 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
1027 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1028 cur_row++;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1029 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
1030 if (this->flags & SEF_LAST_FIELD) {
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1031 assert(this->level < sizeof(parent_last));
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1032 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
1033 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1034
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
1035 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
1036 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1037 break;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1038 default: NOT_REACHED();
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1039 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1040 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
1041 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1042
13509
59959bee9f95 (svn r18028) -Codechange: unglobalise some functions
rubidium <rubidium@openttd.org>
parents: 13419
diff changeset
1043 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
1044 {
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
1045 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
1046 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
1047 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
1048 } 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
1049 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
1050 }
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
1051 } 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
1052 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
1053 }
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
1054 }
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
1055
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1056 /**
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1057 * 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
1058 * @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
1059 * @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
1060 * @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
1061 * @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
1062 * @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
1063 * @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
1064 */
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
1065 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
1066 {
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1067 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
1068 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
1069 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
1070 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
1071
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
1072 bool rtl = _dynlang.text_dir == TD_RTL;
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1073 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
1074 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
1075 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
1076 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
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 /* We do not allow changes of some items when we are a client in a networkgame */
12024
ca8b215793c4 (svn r16431) -Fix (16429): Company settings can also be changed in multiplayer games
yexo <yexo@openttd.org>
parents: 12022
diff changeset
1079 if (!(sd->save.conv & SLF_NETWORK_NO) && _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
1080 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
1081 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
1082
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1083 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
1084 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
1085 /* Draw checkbox for boolean-value either on/off */
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1086 bool on = (*(bool*)var);
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1087
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
1088 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
1089 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
1090 } else {
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1091 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
1092
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1093 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
1094
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1095 /* 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
1096 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
1097
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1098 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
1099 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
1100 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
1101 } else {
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1102 if (sdb->flags & SGF_CURRENCY) {
12493
32e2de3d509a (svn r16930) -Codechange: more StringID name unification and grouping
rubidium <rubidium@openttd.org>
parents: 12475
diff changeset
1103 SetDParam(0, STR_JUST_CURRENCY);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1104 } else if (sdb->flags & SGF_MULTISTRING) {
13834
0af12668a112 (svn r18363) -Feature: do not require advanced settings multistrings to start at 0
rubidium <rubidium@openttd.org>
parents: 13798
diff changeset
1105 SetDParam(0, sdb->str - sdb->min + value + 1);
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1106 } else {
12493
32e2de3d509a (svn r16930) -Codechange: more StringID name unification and grouping
rubidium <rubidium@openttd.org>
parents: 12475
diff changeset
1107 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
1108 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1109 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
1110 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1111 }
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
1112 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
1113 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1114
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1115
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
1116 /* == 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
1117
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1118 /**
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1119 * 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
1120 * @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
1121 */
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
1122 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
1123 {
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1124 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
1125 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
1126 }
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
1127 }
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
1128
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1129 /** 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
1130 void SettingsPage::FoldAll()
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1131 {
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1132 for (uint field = 0; field < this->num; field++) {
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1133 this->entries[field].FoldAll();
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1134 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1135 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1136
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1137 /** 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
1138 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
1139 {
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1140 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
1141 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
1142 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
1143 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1144 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
1145 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1146
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1147 /**
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
1148 * 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
1149 * @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
1150 * @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
1151 * @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
1152 */
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
1153 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
1154 {
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
1155 SettingEntry *pe = NULL;
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1156
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1157 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
1158 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
1159 if (pe != NULL) {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1160 break;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1161 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1162 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1163 return pe;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1164 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1165
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1166 /**
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1167 * 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
1168 *
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
1169 * 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
1170 * 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
1171 * 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
1172 *
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
1173 * @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
1174 * @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
1175 * @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
1176 * @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
1177 * @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
1178 * @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
1179 * @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
1180 * @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
1181 * @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
1182 */
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
1183 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
1184 {
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1185 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
1186
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1187 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
1188 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
1189 if (cur_row >= max_row) {
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1190 break;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1191 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1192 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1193 return cur_row;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1194 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1195
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
1196
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
1197 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
1198 SettingEntry("gui.vehicle_speed"),
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
1199 SettingEntry("gui.status_long_date"),
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
1200 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
1201 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
1202 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
1203 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
1204 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
1205 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
1206 SettingEntry("gui.expenses_layout"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1207 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1208 /** 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
1209 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
1210
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
1211 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
1212 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
1213 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
1214 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
1215 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
1216 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
1217 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
1218 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
1219 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
1220 /* 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
1221 * 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
1222 * 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
1223 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
1224 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
1225 #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
1226 /* 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
1227 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
1228 #endif
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1229 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1230 /** 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
1231 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
1232
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
1233 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
1234 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
1235 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
1236 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
1237 SettingEntry("gui.errmsg_duration"),
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 SettingEntry("gui.toolbar_pos"),
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
1239 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
1240 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
1241 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
1242 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
1243 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
1244 SettingEntry("gui.default_rail_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
1245 SettingEntry("gui.always_build_infrastructure"),
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 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
1247 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
1248 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1249 /** 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
1250 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
1251
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
1252 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
1253 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
1254 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
1255 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
1256 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
1257 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
1258 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
1259 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1260 /** 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
1261 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
1262
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
1263 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
1264 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
1265 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
1266 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
1267 SettingEntry("construction.extra_dynamite"),
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
1268 SettingEntry("construction.longbridges"),
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
1269 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
1270 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
1271 SettingEntry("construction.extra_tree_placement"),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1272 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1273 /** 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
1274 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
1275
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
1276 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
1277 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
1278 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
1279 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
1280 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1281 /** 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
1282 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
1283
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
1284 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
1285 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
1286 SettingEntry("station.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
1287 SettingEntry("station.nonuniform_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
1288 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
1289 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
1290 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
1291 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
1292 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
1293 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
1294 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
1295 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1296 /** 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
1297 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
1298
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
1299 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
1300 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
1301 SettingEntry("economy.exclusive_rights"),
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
1302 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
1303 SettingEntry("economy.allow_town_roads"),
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
1304 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
1305 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
1306 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
1307 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
1308 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
1309 };
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1310 /** 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
1311 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
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_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
1314 SettingEntry("construction.raw_industry_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
1315 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
1316 SettingEntry("economy.same_industry_close"),
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("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
1318 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1319 /** 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
1320 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
1321
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
1322 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
1323 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
1324 SettingEntry(&_settings_economy_industries_page, STR_CONFIG_SETTING_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
1325 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
1326 SettingEntry("economy.smooth_economy"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1327 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1328 /** 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
1329 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
1330
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
1331 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
1332 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
1333 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
1334 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
1335 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
1336 SettingEntry("ai.ai_disable_veh_ship"),
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("ai.ai_max_opcode_till_suspend"),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1338 };
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1339 /** 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
1340 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
1341
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
1342 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
1343 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
1344 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
1345 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
1346 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1347 /** 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
1348 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
1349
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
1350 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
1351 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
1352 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
1353 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
1354 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
1355 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
1356 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1357 /** 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
1358 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
1359
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 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
1361 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
1362 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
1363 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
1364 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1365 /** 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
1366 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
1367
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
1368 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
1369 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
1370 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
1371 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
1372 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
1373 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
1374 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
1375 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
1376 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1377 /** 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
1378 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
1379
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
1380 static SettingEntry _settings_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
1381 SettingEntry("vehicle.train_acceleration_model"),
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 SettingEntry("vehicle.mammoth_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
1383 SettingEntry("gui.lost_train_warn"),
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 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
1385 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
1386 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
1387 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
1388 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1389 /** 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
1390 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
1391
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 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
1393 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
1394 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
1395 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
1396 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
1397 SettingEntry("order.gotodepot"),
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
1398 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
1399 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
1400 SettingEntry("gui.vehicle_income_warn"),
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("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
1402 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
1403 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
1404 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
1405 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
1406 SettingEntry("vehicle.plane_speed"),
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 SettingEntry("order.timetabling"),
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("vehicle.dynamic_engines"),
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1409 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1410 /** 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
1411 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
1412
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
1413 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
1414 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
1415 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
1416 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
1417 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
1418 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
1419 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
1420 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1421
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1422 /** 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
1423 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
1424
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 /** Widget numbers of 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
1426 enum GameSettingsWidgets {
11697
ef293835ecc2 (svn r16082) -Codechange: Completed the widget numbers of the advanced settings window.
alberth <alberth@openttd.org>
parents: 11657
diff changeset
1427 SETTINGSEL_OPTIONSPANEL, ///< Panel widget containing the option lists
ef293835ecc2 (svn r16082) -Codechange: Completed the widget numbers of the advanced settings window.
alberth <alberth@openttd.org>
parents: 11657
diff changeset
1428 SETTINGSEL_SCROLLBAR, ///< Scrollbar
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
1429 };
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
1430
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
1431 struct GameSettingsWindow : Window {
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1432 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
1433 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
1434 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
1435 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
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 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
1438
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
1439 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
1440 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
1441
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1442 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
1443 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1444 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
1445
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
1446 settings_ptr = (_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1447
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1448 /* 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
1449 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
1450 _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
1451 first_time = false;
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1452 } 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
1453 _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
1454 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1455
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 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
1457 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
1458
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1459 this->InitNested(desc, 0);
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1460
12880
09381837656b (svn r17372) -Codechange: make the settings, rail and sign GUIs use the scrollbar wrappers
rubidium <rubidium@openttd.org>
parents: 12790
diff changeset
1461 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
1462 }
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1463
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
1464 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
1465 {
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1466 if (widget != SETTINGSEL_OPTIONSPANEL) return;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1467
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1468 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
1469 resize->width = 1;
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1470
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1471 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
1472 }
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
1473
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1474 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
1475 {
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1476 if (widget != SETTINGSEL_OPTIONSPANEL) return;
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1477
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
1478 _settings_main_page.Draw(settings_ptr, r.left + SETTINGTREE_LEFT_OFFSET, r.right - SETTINGTREE_RIGHT_OFFSET, r.top + SETTINGTREE_TOP_OFFSET,
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1479 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
1480 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1481
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1482 virtual void OnPaint()
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1483 {
9273
72a6d2e60834 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium <rubidium@openttd.org>
parents: 9246
diff changeset
1484 this->DrawWidgets();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1485 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1486
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1487 virtual void OnClick(Point pt, int widget)
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1488 {
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
1489 if (widget != SETTINGSEL_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
1490
13695
75560523443c (svn r18220) -Codechange: Reduce number of nested widget dynamic casts.
alberth <alberth@openttd.org>
parents: 13672
diff changeset
1491 int y = pt.y - this->GetWidget<NWidgetBase>(widget)->pos_y - SETTINGTREE_TOP_OFFSET; // Shift y 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
1492 if (y < 0) return; // Clicked above first entry
10541
9742f1fb3d1b (svn r14798) -Codechange: move variable declaration to first use of variable (Alberth)
rubidium <rubidium@openttd.org>
parents: 10540
diff changeset
1493
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1494 byte btn = this->vscroll.GetPosition() + y / this->resize.step_height; // Compute which setting is selected
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1495 if (y % this->resize.step_height > this->resize.step_height - 2) return; // Clicked too low at the setting
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1496
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1497 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
1498 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
1499
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1500 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
1501
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
1502 int x = (_dynlang.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
1503 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
1504
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
1505 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
1506 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
1507
12880
09381837656b (svn r17372) -Codechange: make the settings, rail and sign GUIs use the scrollbar wrappers
rubidium <rubidium@openttd.org>
parents: 12790
diff changeset
1508 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
1509 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
1510 return;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1511 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1512
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
1513 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
1514 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
1515
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1516 /* return if action is only active in network, or only settable by server */
12024
ca8b215793c4 (svn r16431) -Fix (16429): Company settings can also be changed in multiplayer games
yexo <yexo@openttd.org>
parents: 12022
diff changeset
1517 if (!(sd->save.conv & SLF_NETWORK_NO) && _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
1518 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
1519 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
1520
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
1521 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
1522 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
1523
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1524 /* 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
1525 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
1526 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
1527 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
1528
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1529 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
1530 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
1531 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
1532 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
1533 /* 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
1534 * 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
1535 * 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
1536 * 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
1537 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
1538 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
1539
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1540 /* don't allow too fast scrolling */
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1541 if ((this->flags4 & WF_TIMEOUT_MASK) > WF_TIMEOUT_TRIGGER) {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1542 _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
1543 return;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1544 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1545
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1546 /* 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
1547 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
1548 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
1549 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
1550 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
1551 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
1552 } 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
1553 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
1554 }
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1555 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
1556 } else {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1557 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
1558 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
1559 }
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1560
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1561 /* 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
1562 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
1563 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
1564 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
1565 }
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1566 this->clicked_entry = pe;
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
1567 this->clicked_entry->SetButtons((x >= 10) != (_dynlang.text_dir == TD_RTL) ? SEF_RIGHT_DEPRESSED : SEF_LEFT_DEPRESSED);
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1568 this->flags4 |= WF_TIMEOUT_BEGIN;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1569 _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
1570 }
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1571 } break;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1572
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1573 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
1574 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1575
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1576 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
1577 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
1578 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
1579 } 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
1580 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
1581 }
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1582 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
1583 }
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1584 } else {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1585 /* 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
1586 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
1587 /* 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
1588 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
1589
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1590 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
1591 SetDParam(0, value);
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
1592 ShowQueryString(STR_JUST_INT, STR_CONFIG_SETTING_QUERY_CAPTION, 10, 100, this, CS_NUMERAL, QSF_NONE);
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1593 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1594 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1595 }
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
1596
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1597 virtual void OnTimeout()
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1598 {
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1599 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
1600 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
1601 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
1602 this->SetDirty();
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1603 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1604 }
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
1605
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1606 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
1607 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1608 if (!StrEmpty(str)) {
10663
41ac7281100a (svn r14965) -Codechange: remember the patch entry instead of the page and index of the entry for handling the "input box" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10662
diff changeset
1609 assert(this->valuewindow_entry != NULL);
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
1610 assert((this->valuewindow_entry->flags & SEF_KIND_MASK) == SEF_SETTING_KIND);
10663
41ac7281100a (svn r14965) -Codechange: remember the patch entry instead of the page and index of the entry for handling the "input box" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10662
diff changeset
1611 const SettingDesc *sd = this->valuewindow_entry->d.entry.setting;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1612 int32 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
1613
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1614 /* 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
1615 if (sd->desc.flags & SGF_CURRENCY) value /= _currency->rate;
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1616
12067
43d8d69b7a31 (svn r16474) -Fix [FS#2933]: could set company related settings via query window
rubidium <rubidium@openttd.org>
parents: 12024
diff changeset
1617 if ((sd->desc.flags & SGF_PER_COMPANY) != 0) {
43d8d69b7a31 (svn r16474) -Fix [FS#2933]: could set company related settings via query window
rubidium <rubidium@openttd.org>
parents: 12024
diff changeset
1618 SetCompanySetting(this->valuewindow_entry->d.entry.index, value);
43d8d69b7a31 (svn r16474) -Fix [FS#2933]: could set company related settings via query window
rubidium <rubidium@openttd.org>
parents: 12024
diff changeset
1619 } else {
43d8d69b7a31 (svn r16474) -Fix [FS#2933]: could set company related settings via query window
rubidium <rubidium@openttd.org>
parents: 12024
diff changeset
1620 SetSettingValue(this->valuewindow_entry->d.entry.index, value);
43d8d69b7a31 (svn r16474) -Fix [FS#2933]: could set company related settings via query window
rubidium <rubidium@openttd.org>
parents: 12024
diff changeset
1621 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1622 this->SetDirty();
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1623 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1624 }
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
1625
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
1626 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
1627 {
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1628 this->vscroll.SetCapacity((this->GetWidget<NWidgetBase>(SETTINGSEL_OPTIONSPANEL)->current_y - SETTINGTREE_TOP_OFFSET - SETTINGTREE_BOTTOM_OFFSET) / this->resize.step_height);
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
1629 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1630 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1631
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
1632 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
1633
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1634 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
1635 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
1636 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
1637 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
1638 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1639 NWidget(NWID_HORIZONTAL),
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1640 NWidget(WWT_PANEL, COLOUR_MAUVE, SETTINGSEL_OPTIONSPANEL), SetMinimalSize(400, 174), 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
1641 NWidget(NWID_VERTICAL),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1642 NWidget(WWT_SCROLLBAR, COLOUR_MAUVE, SETTINGSEL_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
1643 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
1644 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1645 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1646 };
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1647
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
1648 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
1649 WDP_CENTER, 450, 397,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5688
diff changeset
1650 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1651 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
1652 _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
1653 );
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
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
1655 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
1656 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1657 DeleteWindowById(WC_GAME_OPTIONS, 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
1658 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
1659 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1660
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1661
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1662 /**
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1663 * 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
1664 * @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
1665 * @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
1666 * @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
1667 * @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
1668 * @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
1669 * @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
1670 */
9872
c26adcd5367e (svn r14018) -Fix (r14017): Typos prevented compilation.
peter1138 <peter1138@openttd.org>
parents: 9871
diff changeset
1671 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
1672 {
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
1673 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
1674
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
1675 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
1676 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
1677 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
1678 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
1679
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1680 /* Grey out the buttons that aren't clickable */
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
1681 bool rtl = _dynlang.text_dir == TD_RTL;
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1682 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
1683 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
1684 }
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
1685 if (rtl ? !clickable_left : !clickable_right) {
9872
c26adcd5367e (svn r14018) -Fix (r14017): Typos prevented compilation.
peter1138 <peter1138@openttd.org>
parents: 9871
diff changeset
1686 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
1687 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1688 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1689
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1690 /** Widget numbers of the custom currency window. */
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1691 enum CustomCurrencyWidgets {
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1692 CUSTCURR_RATE_DOWN,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1693 CUSTCURR_RATE_UP,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1694 CUSTCURR_RATE,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1695 CUSTCURR_SEPARATOR_EDIT,
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
1696 CUSTCURR_SEPARATOR,
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1697 CUSTCURR_PREFIX_EDIT,
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
1698 CUSTCURR_PREFIX,
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1699 CUSTCURR_SUFFIX_EDIT,
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
1700 CUSTCURR_SUFFIX,
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1701 CUSTCURR_YEAR_DOWN,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1702 CUSTCURR_YEAR_UP,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1703 CUSTCURR_YEAR,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1704 CUSTCURR_PREVIEW,
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
1705 };
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
1706
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1707 struct CustomCurrencyWindow : Window {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1708 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
1709
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1710 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
1711 {
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1712 this->InitNested(desc);
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1713
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1714 SetButtonState();
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1715 }
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1716
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1717 void SetButtonState()
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1718 {
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1719 this->SetWidgetDisabledState(CUSTCURR_RATE_DOWN, _custom_currency.rate == 1);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1720 this->SetWidgetDisabledState(CUSTCURR_RATE_UP, _custom_currency.rate == UINT16_MAX);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1721 this->SetWidgetDisabledState(CUSTCURR_YEAR_DOWN, _custom_currency.to_euro == CF_NOEURO);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1722 this->SetWidgetDisabledState(CUSTCURR_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
1723 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1724
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1725 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
1726 {
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
1727 switch (widget) {
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
1728 case CUSTCURR_RATE: SetDParam(0, 1); SetDParam(1, 1); 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
1729 case CUSTCURR_SEPARATOR: SetDParamStr(0, _custom_currency.separator); 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
1730 case CUSTCURR_PREFIX: SetDParamStr(0, _custom_currency.prefix); 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
1731 case CUSTCURR_SUFFIX: SetDParamStr(0, _custom_currency.suffix); 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
1732 case CUSTCURR_YEAR:
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
1733 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
1734 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
1735 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
1736
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
1737 case CUSTCURR_PREVIEW:
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
1738 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
1739 break;
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1740 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1741 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1742
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
1743 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
1744 {
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1745 switch (widget) {
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1746 /* Set the appropriate width for the edit 'buttons' */
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1747 case CUSTCURR_SEPARATOR_EDIT:
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1748 case CUSTCURR_PREFIX_EDIT:
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1749 case CUSTCURR_SUFFIX_EDIT:
13695
75560523443c (svn r18220) -Codechange: Reduce number of nested widget dynamic casts.
alberth <alberth@openttd.org>
parents: 13672
diff changeset
1750 size->width = this->GetWidget<NWidgetBase>(CUSTCURR_RATE_DOWN)->smallest_x + this->GetWidget<NWidgetBase>(CUSTCURR_RATE_UP)->smallest_x;
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1751 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
1752
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
1753 /* Make sure the window is wide enough for the widest 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
1754 case CUSTCURR_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
1755 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
1756 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
1757 *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
1758 break;
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1759 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1760 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1761
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1762 virtual void OnPaint()
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1763 {
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1764 this->DrawWidgets();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1765 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1766
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1767 virtual void OnClick(Point pt, int widget)
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1768 {
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1769 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
1770 int len = 0;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1771 StringID str = 0;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1772 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
1773
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1774 switch (widget) {
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1775 case CUSTCURR_RATE_DOWN:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1776 if (_custom_currency.rate > 1) _custom_currency.rate--;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1777 if (_custom_currency.rate == 1) this->DisableWidget(CUSTCURR_RATE_DOWN);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1778 this->EnableWidget(CUSTCURR_RATE_UP);
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1779 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
1780
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1781 case CUSTCURR_RATE_UP:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1782 if (_custom_currency.rate < UINT16_MAX) _custom_currency.rate++;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1783 if (_custom_currency.rate == UINT16_MAX) this->DisableWidget(CUSTCURR_RATE_UP);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1784 this->EnableWidget(CUSTCURR_RATE_DOWN);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1785 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1786
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1787 case CUSTCURR_RATE:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1788 SetDParam(0, _custom_currency.rate);
12493
32e2de3d509a (svn r16930) -Codechange: more StringID name unification and grouping
rubidium <rubidium@openttd.org>
parents: 12475
diff changeset
1789 str = STR_JUST_INT;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1790 len = 5;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1791 line = CUSTCURR_RATE;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1792 afilter = CS_NUMERAL;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1793 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1794
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1795 case CUSTCURR_SEPARATOR_EDIT:
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1796 case CUSTCURR_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
1797 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
1798 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
1799 len = 1;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1800 line = CUSTCURR_SEPARATOR;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1801 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
1802
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1803 case CUSTCURR_PREFIX_EDIT:
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1804 case CUSTCURR_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
1805 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
1806 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
1807 len = 12;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1808 line = CUSTCURR_PREFIX;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1809 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
1810
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1811 case CUSTCURR_SUFFIX_EDIT:
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1812 case CUSTCURR_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
1813 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
1814 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
1815 len = 12;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1816 line = CUSTCURR_SUFFIX;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1817 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1818
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1819 case CUSTCURR_YEAR_DOWN:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1820 _custom_currency.to_euro = (_custom_currency.to_euro <= 2000) ? CF_NOEURO : _custom_currency.to_euro - 1;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1821 if (_custom_currency.to_euro == CF_NOEURO) this->DisableWidget(CUSTCURR_YEAR_DOWN);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1822 this->EnableWidget(CUSTCURR_YEAR_UP);
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1823 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
1824
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1825 case CUSTCURR_YEAR_UP:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1826 _custom_currency.to_euro = Clamp(_custom_currency.to_euro + 1, 2000, MAX_YEAR);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1827 if (_custom_currency.to_euro == MAX_YEAR) this->DisableWidget(CUSTCURR_YEAR_UP);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1828 this->EnableWidget(CUSTCURR_YEAR_DOWN);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1829 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1830
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1831 case CUSTCURR_YEAR:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1832 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
1833 str = STR_JUST_INT;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1834 len = 7;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1835 line = CUSTCURR_YEAR;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1836 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
1837 break;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1838 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1839
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1840 if (len != 0) {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1841 this->query_widget = line;
10145
dbe302da93a8 (svn r14331) -Codechange: use an enum as additional parameter for ShowQueryString()
smatz <smatz@openttd.org>
parents: 9872
diff changeset
1842 ShowQueryString(str, STR_CURRENCY_CHANGE_PARAMETER, len + 1, 250, 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
1843 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1844
10180
e024f1d28082 (svn r14390) -Codechange: replace magic constants with symbolic constants.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1845 this->flags4 |= WF_TIMEOUT_BEGIN;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1846 this->SetDirty();
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1847 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1848
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1849 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
1850 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1851 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
1852
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1853 switch (this->query_widget) {
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1854 case CUSTCURR_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
1855 _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
1856 break;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1857
11368
82c90cd591ab (svn r15718) -Cleanup: apply some comment coding style on the rest of the sources too
rubidium <rubidium@openttd.org>
parents: 11252
diff changeset
1858 case CUSTCURR_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
1859 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
1860 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
1861
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1862 case CUSTCURR_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
1863 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
1864 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
1865
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1866 case CUSTCURR_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
1867 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
1868 break;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1869
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1870 case CUSTCURR_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
1871 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
1872
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1873 _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
1874 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
1875 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1876 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1877 MarkWholeScreenDirty();
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1878 SetButtonState();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1879 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1880
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1881 virtual void OnTimeout()
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1882 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1883 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
1884 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1885 };
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
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1887 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
1888 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
1889 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
1890 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
1891 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
1892 NWidget(WWT_PANEL, COLOUR_GREY),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1893 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
1894 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
13663
62985032eb6e (svn r18187) -Codechange: make the advanced face selection, custom currency, difficulty, news settings, signal, sign and vehicle details window RTL aware (use the arrow widget)
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
1895 NWidget(NWID_BUTTON_ARROW, COLOUR_YELLOW, CUSTCURR_RATE_DOWN), SetDataTip(AWV_DECREASE, STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP),
62985032eb6e (svn r18187) -Codechange: make the advanced face selection, custom currency, difficulty, news settings, signal, sign and vehicle details window RTL aware (use the arrow widget)
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
1896 NWidget(NWID_BUTTON_ARROW, COLOUR_YELLOW, CUSTCURR_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
1897 NWidget(NWID_SPACER), SetMinimalSize(5, 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
1898 NWidget(WWT_TEXT, COLOUR_BLUE, CUSTCURR_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
1899 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1900 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
1901 NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, CUSTCURR_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
1902 NWidget(NWID_SPACER), SetMinimalSize(5, 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
1903 NWidget(WWT_TEXT, COLOUR_BLUE, CUSTCURR_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
1904 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1905 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
1906 NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, CUSTCURR_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
1907 NWidget(NWID_SPACER), SetMinimalSize(5, 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
1908 NWidget(WWT_TEXT, COLOUR_BLUE, CUSTCURR_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
1909 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1910 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
13704
af90d4bf0785 (svn r18229) -Codechange: Make fill_x, fill_y a number instead of a bool.
alberth <alberth@openttd.org>
parents: 13695
diff changeset
1911 NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, CUSTCURR_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
1912 NWidget(NWID_SPACER), SetMinimalSize(5, 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
1913 NWidget(WWT_TEXT, COLOUR_BLUE, CUSTCURR_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
1914 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1915 NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5),
13663
62985032eb6e (svn r18187) -Codechange: make the advanced face selection, custom currency, difficulty, news settings, signal, sign and vehicle details window RTL aware (use the arrow widget)
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
1916 NWidget(NWID_BUTTON_ARROW, COLOUR_YELLOW, CUSTCURR_YEAR_DOWN), SetDataTip(AWV_DECREASE, STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP),
62985032eb6e (svn r18187) -Codechange: make the advanced face selection, custom currency, difficulty, news settings, signal, sign and vehicle details window RTL aware (use the arrow widget)
rubidium <rubidium@openttd.org>
parents: 13628
diff changeset
1917 NWidget(NWID_BUTTON_ARROW, COLOUR_YELLOW, CUSTCURR_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
1918 NWidget(NWID_SPACER), SetMinimalSize(5, 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
1919 NWidget(WWT_TEXT, COLOUR_BLUE, CUSTCURR_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
1920 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
1921 EndContainer(),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1922 NWidget(WWT_LABEL, COLOUR_BLUE, CUSTCURR_PREVIEW),
12632
e41943276802 (svn r17075) -Codechange: rename ~750 strings to be more uniform with their relatives
rubidium <rubidium@openttd.org>
parents: 12619
diff changeset
1923 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
1924 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1925 };
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1926
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
1927 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
1928 WDP_CENTER, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5688
diff changeset
1929 WC_CUSTOM_CURRENCY, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1930 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
1931 _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
1932 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1933
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
1934 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
1935 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1936 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
1937 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
1938 }