annotate src/settings_gui.cpp @ 14258:a899d4e5ee1a draft

(svn r18809) -Codechange/Cleanup: remove unneeded headers from some files, if a header require a header make it include that header
author rubidium <rubidium@openttd.org>
date Fri, 15 Jan 2010 16:41:15 +0000
parents 96be446af436
children 9caa7d57a6e3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1 /* $Id$ */
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
2
12778
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
3 /*
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
4 * This file is part of OpenTTD.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
5 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
6 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
7 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
8 */
bc7926153e19 (svn r17248) -Fix: add GPL license notice where appropriate
rubidium <rubidium@openttd.org>
parents: 12771
diff changeset
9
9111
d48433370037 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium <rubidium@openttd.org>
parents: 9092
diff changeset
10 /** @file settings_gui.cpp GUI for settings. */
6420
080aae477331 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas <belugas@openttd.org>
parents: 6378
diff changeset
11
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
12 #include "stdafx.h"
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
13 #include "currency.h"
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 "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
15 #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
16 #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
17 #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
18 #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
19 #include "town.h"
8208
ddc34919158f (svn r11771) -Codechange: split settings.h into better separated headers.
rubidium <rubidium@openttd.org>
parents: 8191
diff changeset
20 #include "settings_internal.h"
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
21 #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
22 #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
23 #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
24 #include "string_func.h"
8321
c361d51b1bb8 (svn r11886) -Add: sort the strings in languages dropdown
glx <glx@openttd.org>
parents: 8319
diff changeset
25 #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
26 #include "widgets/dropdown_func.h"
14258
a899d4e5ee1a (svn r18809) -Codechange/Cleanup: remove unneeded headers from some files, if a header require a header make it include that header
rubidium <rubidium@openttd.org>
parents: 14155
diff changeset
27 #include "openttd.h"
10558
15517829eb17 (svn r14815) -Codechange: separate 'highscore' code from 'company' code
smatz <smatz@openttd.org>
parents: 10543
diff changeset
28 #include "highscore.h"
12678
ea203bb44a25 (svn r17133) -Codechange: generalise the code that searches for base graphics
rubidium <rubidium@openttd.org>
parents: 12676
diff changeset
29 #include "base_media_base.h"
12022
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
30 #include "company_base.h"
6258c029db2d (svn r16429) -Change: Make the company settings behave like all others settings: the default set in the main menu / config file is now really the default for a new company, and changing the value in game will no longer change the default for new companies.
yexo <yexo@openttd.org>
parents: 11973
diff changeset
31 #include "company_func.h"
13950
77bfe67f23bd (svn r18486) -Fix: when switching language and you're getting a different font, recalculate the coordinates/sizes of the viewport signs. Otherwise it gets glitchy or abbreviated (in the smallmap)
rubidium <rubidium@openttd.org>
parents: 13834
diff changeset
32 #include "viewport_func.h"
14258
a899d4e5ee1a (svn r18809) -Codechange/Cleanup: remove unneeded headers from some files, if a header require a header make it include that header
rubidium <rubidium@openttd.org>
parents: 14155
diff changeset
33 #include "core/geometry_func.hpp"
9581
9a3e1ee617ce (svn r13618) -Codechange: move tar-specific declarations to separate file
smatz <smatz@openttd.org>
parents: 9533
diff changeset
34 #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
35
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
36 #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
37 #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
38
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
39 static const StringID _units_dropdown[] = {
12619
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
40 STR_GAME_OPTIONS_MEASURING_UNITS_IMPERIAL,
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
41 STR_GAME_OPTIONS_MEASURING_UNITS_METRIC,
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
42 STR_GAME_OPTIONS_MEASURING_UNITS_SI,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
43 INVALID_STRING_ID
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
44 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
45
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
46 static const StringID _driveside_dropdown[] = {
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
47 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
48 STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
49 INVALID_STRING_ID
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
50 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
51
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
52 static const StringID _autosave_dropdown[] = {
11730
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
53 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
54 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
55 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
56 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS,
a39da1e4c1f5 (svn r16118) -Change/cleanup: remove the hexadecimal 'in TTD the string had this ID' from 'some' strings and replace the string name with something more sensible.
rubidium <rubidium@openttd.org>
parents: 11697
diff changeset
57 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS,
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
58 INVALID_STRING_ID,
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
59 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
60
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
61 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
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 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
64 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
65 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
66 *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
67 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
68 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
69
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
70 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
71 static StringID *_grf_names = NULL;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
72 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
73
8323
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
74 void InitGRFTownGeneratorNames()
6797
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
75 {
6956
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
76 free(_grf_names);
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
77 _grf_names = GetGRFTownNameList();
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
78 _nb_grf_names = 0;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
79 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
80 }
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
81
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
82 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
83 {
12619
2f530108f787 (svn r17062) -Change: unify the naming of some 125 strings
rubidium <rubidium@openttd.org>
parents: 12520
diff changeset
84 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
85 town_name -= _nb_orig_names;
6d300d04ac5e (svn r10211) -Feature: [NewGRF] Add support for action 0F
glx <glx@openttd.org>
parents: 6950
diff changeset
86 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
87 return STR_UNDEFINED;
6797
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
88 }
d48143c8467b (svn r10036) -Add: sort the strings in town names dropdown
glx <glx@openttd.org>
parents: 6730
diff changeset
89
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
90 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
91 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
92 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
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 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
95 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
96 (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
97 break;
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
98 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
99 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
100 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
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
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
103 /** 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
104 enum GameOptionsWidgets {
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
105 GOW_BACKGROUND, ///< Background of the window
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
106 GOW_CURRENCY_DROPDOWN, ///< Currency dropdown
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
107 GOW_DISTANCE_DROPDOWN, ///< Measuring unit dropdown
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
108 GOW_ROADSIDE_DROPDOWN, ///< Dropdown to select the road side (to set the right side ;))
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
109 GOW_TOWNNAME_DROPDOWN, ///< Town name dropdown
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
110 GOW_AUTOSAVE_DROPDOWN, ///< Dropdown to say how often to autosave
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
111 GOW_LANG_DROPDOWN, ///< Language dropdown
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
112 GOW_RESOLUTION_DROPDOWN, ///< Dropdown for the resolution
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
113 GOW_FULLSCREEN_BUTTON, ///< Toggle fullscreen
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
114 GOW_SCREENSHOT_DROPDOWN, ///< Select the screenshot type... please use PNG!
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
115 GOW_BASE_GRF_DROPDOWN, ///< Use to select a base GRF
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
116 GOW_BASE_GRF_STATUS, ///< Info about missing files etc.
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
117 GOW_BASE_GRF_DESCRIPTION, ///< Description of selected base GRF
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
118 GOW_BASE_SFX_DROPDOWN, ///< Use to select a base SFX
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
119 GOW_BASE_SFX_DESCRIPTION, ///< Description of selected base SFX
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
120 GOW_BASE_MUSIC_DROPDOWN, ///< Use to select a base music set
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
121 GOW_BASE_MUSIC_STATUS, ///< Info about corrupted files etc.
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
122 GOW_BASE_MUSIC_DESCRIPTION, ///< Description of selected base music set
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
123 };
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
124
8321
c361d51b1bb8 (svn r11886) -Add: sort the strings in languages dropdown
glx <glx@openttd.org>
parents: 8319
diff changeset
125 /**
8323
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
126 * 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
127 * @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
128 * @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
129 */
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
130 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
131 {
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
132 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
133 TownList townnames;
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
134
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
135 /* 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
136 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
137
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
138 /* 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
139 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
140
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
141 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
142 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
143 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
144 }
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
145
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
146 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
147 }
803ed468fc77 (svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx <glx@openttd.org>
parents: 8321
diff changeset
148
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
149 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
150
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
151 template <class T>
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
152 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
153 {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
154 int n = T::GetNumSets();
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
155 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
156
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 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
158 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
159 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
160 }
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
161
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
162 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
163 }
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
164
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
165 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
166 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
167 bool reload;
9346
0c181c088ed8 (svn r13242) -Codechange: remove _opt_ptr.
rubidium <rubidium@openttd.org>
parents: 9334
diff changeset
168
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
169 GameOptionsWindow(const WindowDesc *desc) : Window()
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
170 {
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
171 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
172 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
173
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
174 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
175 this->OnInvalidateData(0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
176 }
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
177
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
178 ~GameOptionsWindow()
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
179 {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
180 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
181 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
182 }
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
183
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
184 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
185 {
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
186 switch (widget) {
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
187 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
188 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
189 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
190 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
191 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
192 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
193 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
194 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
195 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
196 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
197 case GOW_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->name); break;
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
198 case GOW_BASE_MUSIC_DROPDOWN: SetDParamStr(0, BaseMusic::GetUsedSet()->name); break;
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
199 case GOW_BASE_MUSIC_STATUS: SetDParam(0, BaseMusic::GetUsedSet()->GetNumInvalid()); break;
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
200 }
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
201 }
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
202
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
203 virtual void OnPaint()
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
204 {
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
205 this->DrawWidgets();
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
206 }
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
207
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
208 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
209 {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
210 switch (widget) {
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
211 case GOW_BASE_GRF_DESCRIPTION:
13281
e241d1485669 (svn r17790) -Feature: translatable base sound/graphics set descriptions
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
212 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
213 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
214 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
215
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
216 case GOW_BASE_SFX_DESCRIPTION:
13281
e241d1485669 (svn r17790) -Feature: translatable base sound/graphics set descriptions
rubidium <rubidium@openttd.org>
parents: 13277
diff changeset
217 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
218 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
219 break;
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
220
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
221 case GOW_BASE_MUSIC_DESCRIPTION:
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
222 SetDParamStr(0, BaseMusic::GetUsedSet()->GetDescription(GetCurrentLanguageIsoCode()));
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
223 DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, STR_BLACK_RAW_STRING);
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
224 break;
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
225 }
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
226 }
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
227
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
228 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
229 {
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
230 switch (widget) {
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
231 case GOW_BASE_GRF_DESCRIPTION:
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
232 /* 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
233 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
234 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
235 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
236 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
237 break;
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
238
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
239 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
240 /* 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
241 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
242 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
243 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
244
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
245 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
246 *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
247 }
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
248 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
249
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
250 case GOW_BASE_SFX_DESCRIPTION:
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
251 /* 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
252 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
253 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
254 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
255 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
256 break;
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
257
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
258 case GOW_BASE_MUSIC_DESCRIPTION:
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
259 /* Find the biggest description for the default size. */
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
260 for (int i = 0; i < BaseMusic::GetNumSets(); i++) {
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
261 SetDParamStr(0, BaseMusic::GetSet(i)->GetDescription(GetCurrentLanguageIsoCode()));
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
262 size->height = max(size->height, (uint)GetStringHeight(STR_BLACK_RAW_STRING, size->width));
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
263 }
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
264 break;
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
265
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
266 case GOW_BASE_MUSIC_STATUS:
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
267 /* Find the biggest description for the default size. */
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
268 for (int i = 0; i < BaseMusic::GetNumSets(); i++) {
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
269 uint invalid_files = BaseMusic::GetSet(i)->GetNumInvalid();
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
270 if (invalid_files == 0) continue;
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
271
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
272 SetDParam(0, invalid_files);
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
273 *size = maxdim(*size, GetStringBoundingBox(STR_GAME_OPTIONS_BASE_MUSIC_STATUS));
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
274 }
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
275 break;
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
276 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
277 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
278
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
279 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
280 {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
281 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
282 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
283 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
284 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
285
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
286 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
287 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
288 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
289
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
290 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
291 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
292 extern bool RoadVehiclesAreBuilt();
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
293
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
294 /* 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
295 * 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
296 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
297 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
298 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
299
11479
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, _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
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_TOWNNAME_DROPDOWN: // Setup townname dropdown
9358
12f4585b2124 (svn r13255) -Codechange: move _opt to _settings.
rubidium <rubidium@openttd.org>
parents: 9354
diff changeset
304 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
305 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
306
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
307 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
308 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
309 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
310
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
311 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
312 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
313
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
314 /* Sort language names */
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
315 LangList langs;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
316 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
317
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
318 DropDownList *list = new DropDownList();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
319 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
320 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
321 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
322
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
323 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
324 } break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
325
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
326 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
327 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
328 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
329
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
330 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
331 /* 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
332 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
333 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
334 }
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
335 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
336 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
337 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
338
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
339 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
340 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
341 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
342
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
343 case GOW_BASE_GRF_DROPDOWN:
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
344 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
345 break;
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
346
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
347 case GOW_BASE_SFX_DROPDOWN:
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
348 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
349 break;
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
350
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
351 case GOW_BASE_MUSIC_DROPDOWN:
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
352 ShowSetMenu<BaseMusic>(this, GOW_BASE_MUSIC_DROPDOWN);
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
353 break;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
354 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
355 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
356
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
357 /**
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
358 * Set the base media set.
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
359 * @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
360 * @tparam T class of media set
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
361 */
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
362 template <class T>
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
363 void SetMediaSet(int index)
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
364 {
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
365 if (_game_mode == GM_MENU) {
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
366 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
367
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
368 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
369 T::ini_set = strdup(name);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
370
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
371 T::SetSet(name);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
372 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
373 this->InvalidateData();
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
374 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
375 }
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
376
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
377 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
378 {
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
379 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
380 case GOW_CURRENCY_DROPDOWN: // Currency
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
381 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
382 this->opt->locale.currency = index;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
383 MarkWholeScreenDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
384 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
385
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
386 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
387 this->opt->locale.units = index;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
388 MarkWholeScreenDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
389 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
390
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
391 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
392 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
393 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
394 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
395 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
396 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
397 }
adc269893bd0 (svn r15416) -Fix (r15412): revert the removal of the road side drop down box handling.
rubidium <rubidium@openttd.org>
parents: 11071
diff changeset
398 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
399
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
400 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
401 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
402 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
403 SetWindowDirty(WC_GAME_OPTIONS, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
404 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
405 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
406
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
407 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
408 _settings_client.gui.autosave = index;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
409 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
410 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
411
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
412 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
413 ReadLanguagePack(index);
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
414 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
415 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
416 ReInitAllWindows();
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
417 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
418
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
419 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
420 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
421 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
422 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
423 break;
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
424
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
425 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
426 SetScreenshotFormat(index);
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
427 this->SetDirty();
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
428 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
429
11479
ca01beb7e155 (svn r15840) -Codechange: complete the game option window widget enum and unify the naming.
rubidium <rubidium@openttd.org>
parents: 11474
diff changeset
430 case GOW_BASE_GRF_DROPDOWN:
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
431 this->SetMediaSet<BaseGraphics>(index);
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
432 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
433
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
434 case GOW_BASE_SFX_DROPDOWN:
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
435 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
436 break;
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
437
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
438 case GOW_BASE_MUSIC_DROPDOWN:
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
439 this->SetMediaSet<BaseMusic>(index);
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
440 break;
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
441 }
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
442 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
443
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
444 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
445 {
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
446 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
447
12678
ea203bb44a25 (svn r17133) -Codechange: generalise the code that searches for base graphics
rubidium <rubidium@openttd.org>
parents: 12676
diff changeset
448 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
449 this->GetWidget<NWidgetCore>(GOW_BASE_GRF_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_GRF_STATUS, STR_NULL);
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
450
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
451 missing_files = BaseMusic::GetUsedSet()->GetNumInvalid() == 0;
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
452 this->GetWidget<NWidgetCore>(GOW_BASE_MUSIC_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_MUSIC_STATUS, STR_NULL);
12517
71027f744a29 (svn r16954) -Codechange: make the Game Options window use the nested widget system.
rubidium <rubidium@openttd.org>
parents: 12493
diff changeset
453 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
454 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
455
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
456 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
457 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
458 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
459 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
460 EndContainer(),
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
461 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
462 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
463 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
464 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
465 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
466 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
467 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
468 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
469 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
470 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
471 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
472 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
473 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
474 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
475 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
476 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
477 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
478 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
479 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
480 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
481
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
482 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
483 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
484 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
485 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
486 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
487 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
488 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
489 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
490 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
491 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
492 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
493 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
494 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
495 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
496 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
497 EndContainer(),
11939
577d93a5e10d (svn r16342) -Feature(tte): Display base graphics description in game options window.
frosch <frosch@openttd.org>
parents: 11913
diff changeset
498
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
499 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_GRF, STR_NULL), SetPadding(0, 10, 0, 10),
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
500 NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 0),
13670
2e7ff39e2ec6 (svn r18195) -Codechange: move the child padding calculation/handling to WWT_FRAME
rubidium <rubidium@openttd.org>
parents: 13665
diff changeset
501 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
502 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
503 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
504 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
505 EndContainer(),
12684
b056ac99f230 (svn r17139) -Change: add the concept of sound sets
rubidium <rubidium@openttd.org>
parents: 12683
diff changeset
506
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
507 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
508 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
509 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
510 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
511 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
512 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
513 EndContainer(),
14065
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
514
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
515 NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_MUSIC, STR_NULL), SetPadding(0, 10, 0, 10),
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
516 NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 0),
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
517 NWidget(WWT_DROPDOWN, COLOUR_GREY, GOW_BASE_MUSIC_DROPDOWN), SetMinimalSize(150, 12), SetDataTip(STR_BLACK_RAW_STRING, STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP),
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
518 NWidget(WWT_TEXT, COLOUR_GREY, GOW_BASE_MUSIC_STATUS), SetMinimalSize(150, 12), SetDataTip(STR_EMPTY, STR_NULL), SetFill(1, 0),
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
519 EndContainer(),
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
520 NWidget(WWT_TEXT, COLOUR_GREY, GOW_BASE_MUSIC_DESCRIPTION), SetMinimalSize(330, 0), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 0, 0),
a5fb37f9f59d (svn r18608) -Change: add the concept of music sets
rubidium <rubidium@openttd.org>
parents: 14037
diff changeset
521 EndContainer(),
11513
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
522 EndContainer(),
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
523 };
060289e229f7 (svn r15874) -Codechange: New widgets for the game options window.
yexo <yexo@openttd.org>
parents: 11507
diff changeset
524
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
525 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
526 WDP_CENTER, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5688
diff changeset
527 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
528 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
529 _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
530 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
531
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
532
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
533 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
534 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
535 DeleteWindowById(WC_GAME_OPTIONS, 0);
9291
f9b184a11fea (svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium <rubidium@openttd.org>
parents: 9273
diff changeset
536 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
537 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
538
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
539 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
540
11505
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
541
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
542 /* 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
543 enum GameDifficultyWidgets {
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
544 GDW_LVL_EASY,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
545 GDW_LVL_MEDIUM,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
546 GDW_LVL_HARD,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
547 GDW_LVL_CUSTOM,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
548 GDW_HIGHSCORE,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
549 GDW_ACCEPT,
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
550 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
551
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 GDW_OPTIONS_START,
11505
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
553 };
fba50a5a947b (svn r15866) -Codechange: New widgets for the difficulty window.
yexo <yexo@openttd.org>
parents: 11479
diff changeset
554
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
555 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
556
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 class GameDifficultyWindow : public Window {
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
558 private:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
559 /* 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
560 GameSettings opt_mod_temp;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
561
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
562 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
563 /** 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
564 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
565 /** 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
566 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
567
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
568 GameDifficultyWindow(const WindowDesc *desc) : Window()
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
569 {
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
570 this->InitNested(desc);
13131
f78f54c02ea0 (svn r17636) -Codechange: make the difficulty setting window nested
rubidium <rubidium@openttd.org>
parents: 13088
diff changeset
571
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
572 /* 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
573 * 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
574 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
575 /* Setup disabled buttons when creating window
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
576 * 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
577 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
578 GDW_LVL_EASY,
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
579 GDW_LVL_MEDIUM,
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
580 GDW_LVL_HARD,
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
581 GDW_LVL_CUSTOM,
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
582 WIDGET_LIST_END);
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
583 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
584 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
585 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
586 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
587 }
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
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
589 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
590 {
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 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
592 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
593
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 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
595
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 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
597 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
598 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
599 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
600 }
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
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
602 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
603 {
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 /* 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
605 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
606 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
607
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 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
609
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 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
611 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
612 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
613
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
614 /* 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
615 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
616 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
617 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
618 *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
619 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
620 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
621
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
622 virtual void OnPaint()
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
623 {
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
624 this->DrawWidgets();
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
625 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
626
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
627 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
628 {
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
629 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
630 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
631 if ((widget % 3) == 2) return;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
632
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
633 /* 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
634 if (_networking && !_network_server) return;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
635
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
636 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
637 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
638 const SettingDescBase *sdb = &sd->desc;
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
639
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
640 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
641 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
642 /* 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
643 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
644 } 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
645 /* 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
646 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
647 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
648 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
649
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
650 /* 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
651 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
652 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
653 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
654 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
655 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
656 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
657 }
9231
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 switch (widget) {
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
660 case GDW_LVL_EASY:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
661 case GDW_LVL_MEDIUM:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
662 case GDW_LVL_HARD:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
663 case GDW_LVL_CUSTOM:
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
664 /* temporarily change difficulty level */
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
665 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
666 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
667 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
668 this->InvalidateData();
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
669 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
670
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
671 case GDW_HIGHSCORE: // Highscore Table
9359
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
672 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
673 break;
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 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
676 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
677
c3a0ec3104c9 (svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium <rubidium@openttd.org>
parents: 9358
diff changeset
678 uint i;
13088
1008c63fa996 (svn r17588) -Fix [FS#3220]: erroneous message about changing the difficulty level
rubidium <rubidium@openttd.org>
parents: 13072
diff changeset
679 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
680 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
681
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
682 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
683 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
684 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
685 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
686 /* 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
687 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
688 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
689 }
9231
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
690 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
691 delete this;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
692 /* 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
693 * 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
694 * are loaded correctly. */
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
695 if (_game_mode == GM_EDITOR) StartupEconomy();
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
696 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
697 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
698
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
699 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
700 delete this;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
701 break;
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
702 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
703 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
704
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
705 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
706 {
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
707 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
708 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
709 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
710 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
711 /* 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
712 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
713 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
714 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
715 (_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
716 (_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
717
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
718 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
719 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
720 }
6ddeba445c3a (svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx <glx@openttd.org>
parents: 9164
diff changeset
721 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
722 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
723
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
724 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
725 {
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
726 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
727
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 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
729 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
730 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
731
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 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
733 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
734
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 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
736
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 /* [<] 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
738 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
739 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
740
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 /* [>] 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
742 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
743 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
744
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
745 /* 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
746 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
747 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
748
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
749 /* 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
750 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
751 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
752 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
753 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
754
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
755 /* 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
756 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
757 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
758 *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
759 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
760 }
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
761
54b65f0fc0ea (svn r17639) -Codechange: let the difficulty settings GUI make really use the nested widget features
rubidium <rubidium@openttd.org>
parents: 13132
diff changeset
762
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 /** 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
764 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
765 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
766 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
767 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
768 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
769 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
770 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
771 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
772 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
773 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
774 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
775 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
776 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
777 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
778 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
779 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
780 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
781 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
782 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
783 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
784 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
785 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
786 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
787 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
788 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
789 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
790 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
791 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
792 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
793 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
794 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
795 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
796 };
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
797
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
798 /** 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
799 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
800 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
801 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
802 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
803 _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
804 );
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
805
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
806 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
807 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
808 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
809 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
810 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
811
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
812 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
813 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
814
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
815 /**
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
816 * 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
817 * @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
818 */
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 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
820 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
821 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
822 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
823
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
824 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
825
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
826 /* 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
827 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
828 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
829 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
830 };
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
831
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
832 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
833
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
834 /** 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
835 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
836 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
837 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
838 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
839 };
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
840
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
841 /** 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
842 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
843 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
844 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
845 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
846 };
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
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 /** 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
849 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
850 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
851 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
852 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
853 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
854 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
855 } 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
856
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
857 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
858 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
859
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
860 void Init(byte level, bool last_field);
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
861 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
862 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
863
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
864 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
865 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
866
11217
bbb1eaa48906 (svn r15570) -Fix: Too long strings in the advanced settings window are now truncated.
yexo <yexo@openttd.org>
parents: 11085
diff changeset
867 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
868
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
869 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
870 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
871 };
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
872
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
873 /** 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
874 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
875 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
876 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
877
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
878 void Init(byte level = 0);
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
879 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
880
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
881 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
882 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
883
11217
bbb1eaa48906 (svn r15570) -Fix: Too long strings in the advanced settings window are now truncated.
yexo <yexo@openttd.org>
parents: 11085
diff changeset
884 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
885 };
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
886
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
887
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
888 /* == 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
889
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
890 /**
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
891 * 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
892 * @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
893 */
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
894 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
895 {
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
896 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
897 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
898 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
899 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
900 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
901 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
902
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
903 /**
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
904 * 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
905 * @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
906 * @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
907 */
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
908 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
909 {
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
910 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
911 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
912 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
913 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
914 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
915 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
916
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
917 /**
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
918 * 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
919 * @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
920 * @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
921 */
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 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
923 {
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
924 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
925 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
926
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
927 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
928 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
929 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
930 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
931 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
932 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
933 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
934 break;
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
935 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
936 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
937 }
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
938
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
939 /** 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
940 void SettingEntry::FoldAll()
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
941 {
12676
d1ed749a9ce5 (svn r17131) -Codechange: apply coding style to some switch statements
smatz <smatz@openttd.org>
parents: 12632
diff changeset
942 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
943 case SEF_SETTING_KIND:
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
944 break;
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
945
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
946 case SEF_SUBTREE_KIND:
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
947 this->d.sub.folded = true;
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
948 this->d.sub.page->FoldAll();
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
949 break;
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
950
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
951 default: NOT_REACHED();
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
952 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
953 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
954
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
955
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
956 /**
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
957 * 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
958 * @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
959 * @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
960 */
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
961 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
962 {
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
963 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
964 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
965 }
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
966
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
967 /** 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
968 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
969 {
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
970 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
971 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
972 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
973 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
974 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
975
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
976 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
977 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
978 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
979 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
980
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
981 /**
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
982 * 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
983 * @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
984 * @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
985 * @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
986 */
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
987 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
988 {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
989 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
990
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
991 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
992 case SEF_SETTING_KIND:
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
993 (*cur_row)++;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
994 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
995 case SEF_SUBTREE_KIND:
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
996 (*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
997 if (this->d.sub.folded) {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
998 break;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
999 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1000
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1001 /* 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
1002 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
1003 default: NOT_REACHED();
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1004 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1005 return NULL;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1006 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1007
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1008 /**
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1009 * Draw a row in the settings panel.
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1010 *
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
1011 * 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
1012 *
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1013 * 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
1014 * 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
1015 * \verbatim
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1016 * |-- setting
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1017 * |-- (-) - Title
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1018 * | |-- setting
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1019 * | |-- setting
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1020 * \endverbatim
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1021 * 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
1022 * 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
1023 *
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
1024 * @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
1025 * @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
1026 * @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
1027 * @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
1028 * @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
1029 * @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
1030 * @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
1031 * @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
1032 * @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
1033 */
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
1034 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
1035 {
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1036 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
1037
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
1038 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
1039 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
1040 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
1041
24880b3f9d87 (svn r18197) -Codechange: make the advanced settings window RTL aware and more big font aware
rubidium <rubidium@openttd.org>
parents: 13670
diff changeset
1042 int x = rtl ? right : left;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1043 int y = base_y;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1044 if (cur_row >= first_row) {
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1045 int colour = _colour_gradient[COLOUR_ORANGE][4];
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1046 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
1047
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1048 /* Draw vertical for parent nesting levels */
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1049 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
1050 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
1051 x += level_width;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1052 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1053 /* draw own |- prefix */
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1054 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
1055 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
1056 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
1057 /* 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
1058 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
1059 x += level_width;
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1060 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1061
12676
d1ed749a9ce5 (svn r17131) -Codechange: apply coding style to some switch statements
smatz <smatz@openttd.org>
parents: 12632
diff changeset
1062 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
1063 case SEF_SETTING_KIND:
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1064 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
1065 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
1066 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1067 cur_row++;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1068 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
1069 case SEF_SUBTREE_KIND:
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1070 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
1071 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
1072 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
1073 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1074 cur_row++;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1075 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
1076 if (this->flags & SEF_LAST_FIELD) {
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1077 assert(this->level < sizeof(parent_last));
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1078 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
1079 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1080
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
1081 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
1082 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1083 break;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1084 default: NOT_REACHED();
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1085 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1086 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
1087 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1088
13509
59959bee9f95 (svn r18028) -Codechange: unglobalise some functions
rubidium <rubidium@openttd.org>
parents: 13419
diff changeset
1089 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
1090 {
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
1091 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
1092 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
1093 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
1094 } 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
1095 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
1096 }
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
1097 } 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
1098 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
1099 }
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
1100 }
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
1101
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1102 /**
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1103 * 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
1104 * @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
1105 * @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
1106 * @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
1107 * @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
1108 * @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
1109 * @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
1110 */
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
1111 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
1112 {
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1113 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
1114 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
1115 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
1116 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
1117
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
1118 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
1119 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
1120 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
1121 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
1122 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
1123
10665
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1124 /* 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
1125 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
1126 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
1127 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
1128
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1129 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
1130 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
1131 /* 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
1132 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
1133
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
1134 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
1135 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
1136 } else {
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1137 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
1138
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1139 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
1140
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1141 /* 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
1142 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
1143
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1144 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
1145 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
1146 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
1147 } else {
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1148 if (sdb->flags & SGF_CURRENCY) {
12493
32e2de3d509a (svn r16930) -Codechange: more StringID name unification and grouping
rubidium <rubidium@openttd.org>
parents: 12475
diff changeset
1149 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
1150 } 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
1151 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
1152 } else {
12493
32e2de3d509a (svn r16930) -Codechange: more StringID name unification and grouping
rubidium <rubidium@openttd.org>
parents: 12475
diff changeset
1153 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
1154 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1155 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
1156 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1157 }
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
1158 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
1159 }
5f8de7b4f4af (svn r14967) -Codechange: split the drawing of the window into several smaller functions (Alberth)
rubidium <rubidium@openttd.org>
parents: 10664
diff changeset
1160
10660
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1161
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
1162 /* == 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
1163
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1164 /**
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1165 * 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
1166 * @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
1167 */
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
1168 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
1169 {
13267d179635 (svn r14962) -Codechange: add the concept of patch entries and patch (sub) pages
rubidium <rubidium@openttd.org>
parents: 10659
diff changeset
1170 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
1171 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
1172 }
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
1173 }
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
1174
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1175 /** 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
1176 void SettingsPage::FoldAll()
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1177 {
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1178 for (uint field = 0; field < this->num; field++) {
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1179 this->entries[field].FoldAll();
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1180 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1181 }
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1182
10662
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1183 /** 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
1184 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
1185 {
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1186 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
1187 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
1188 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
1189 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1190 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
1191 }
5186b62666d4 (svn r14964) -Codechange: hide the length of a patch page behind a function (Alberth)
rubidium <rubidium@openttd.org>
parents: 10661
diff changeset
1192
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1193 /**
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
1194 * 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
1195 * @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
1196 * @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
1197 * @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
1198 */
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
1199 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
1200 {
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
1201 SettingEntry *pe = NULL;
10664
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1202
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1203 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
1204 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
1205 if (pe != NULL) {
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1206 break;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1207 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1208 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1209 return pe;
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1210 }
5316fadc3fbd (svn r14966) -Codechange: simplify and generalise finding patch entries (Alberth)
rubidium <rubidium@openttd.org>
parents: 10663
diff changeset
1211
10666
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1212 /**
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1213 * 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
1214 *
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
1215 * 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
1216 * 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
1217 * 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
1218 *
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
1219 * @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
1220 * @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
1221 * @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
1222 * @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
1223 * @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
1224 * @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
1225 * @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
1226 * @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
1227 * @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
1228 */
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
1229 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
1230 {
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1231 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
1232
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1233 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
1234 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
1235 if (cur_row >= max_row) {
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1236 break;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1237 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1238 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1239 return cur_row;
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1240 }
eacae31e4fe5 (svn r14969) -Codechange: make drawing trees possible (Alberth)
rubidium <rubidium@openttd.org>
parents: 10665
diff changeset
1241
10659
b800143c7941 (svn r14961) -Update: remove the string from r14960 from the other languages too.
rubidium <rubidium@openttd.org>
parents: 10658
diff changeset
1242
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 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
1244 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
1245 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
1246 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
1247 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
1248 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
1249 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
1250 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
1251 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
1252 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
1253 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1254 /** 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
1255 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
1256
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
1257 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
1258 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
1259 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
1260 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
1261 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
1262 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
1263 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
1264 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
1265 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
1266 /* 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
1267 * 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
1268 * 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
1269 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
1270 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
1271 #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
1272 /* 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
1273 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
1274 #endif
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1275 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1276 /** 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
1277 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
1278
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
1279 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
1280 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
1281 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
1282 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
1283 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
1284 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
1285 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
1286 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
1287 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
1288 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
1289 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
1290 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
1291 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
1292 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
1293 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
1294 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1295 /** 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
1296 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
1297
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
1298 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
1299 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
1300 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
1301 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
1302 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
1303 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
1304 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
1305 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1306 /** 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
1307 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
1308
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
1309 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
1310 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
1311 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
1312 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
1313 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
1314 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
1315 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
1316 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
1317 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
1318 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1319 /** 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
1320 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
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_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
1323 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
1324 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
1325 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
1326 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1327 /** 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
1328 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
1329
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
1330 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
1331 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
1332 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
1333 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
1334 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
1335 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
1336 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
1337 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
1338 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
1339 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
1340 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
1341 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1342 /** 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
1343 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
1344
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1345 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
1346 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
1347 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
1348 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
1349 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
1350 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
1351 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
1352 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
1353 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
1354 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
1355 };
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1356 /** 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
1357 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
1358
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
1359 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
1360 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
1361 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
1362 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
1363 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
1364 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1365 /** 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
1366 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
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_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
1369 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
1370 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
1371 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
1372 SettingEntry("economy.smooth_economy"),
14155
96be446af436 (svn r18703) -Feature-ish: allow virtually paying a percentage of the leg profit in feeder chains. This to give the user a better chance to get a feeder system without "losses".
rubidium <rubidium@openttd.org>
parents: 14127
diff changeset
1373 SettingEntry("economy.feeder_payment_share"),
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1374 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1375 /** 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
1376 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
1377
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 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
1379 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
1380 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
1381 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
1382 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
1383 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
1384 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
1385 };
10671
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1386 /** 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
1387 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
1388
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
1389 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
1390 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
1391 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
1392 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
1393 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1394 /** 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
1395 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
1396
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1397 static 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
1398 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
1399 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
1400 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
1401 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
1402 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
1403 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1404 /** 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
1405 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
1406
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1407 static SettingEntry _settings_vehicles_autorenew[] = {
11913
f67b6243e05a (svn r16315) -Codechange: move the autorenew settings to a new CompanySettings struct
yexo <yexo@openttd.org>
parents: 11897
diff changeset
1408 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
1409 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
1410 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
1411 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1412 /** 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
1413 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
1414
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
1415 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
1416 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
1417 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
1418 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
1419 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
1420 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
1421 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
1422 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
1423 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1424 /** 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
1425 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
1426
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
1427 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
1428 SettingEntry("vehicle.train_acceleration_model"),
14127
39a257893f4c (svn r18674) -Feature (FS#3459): Configurable slope steepness for trains from 0% to 10%, default is 3% as before (mostly by Terkhen)
peter1138 <peter1138@openttd.org>
parents: 14065
diff changeset
1429 SettingEntry("vehicle.train_slope_steepness"),
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
1430 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
1431 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
1432 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
1433 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
1434 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
1435 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
1436 };
ec6b9e8e01aa (svn r14974) -Change: reorder/reorganise the entries of the settings window (Alberth)
rubidium <rubidium@openttd.org>
parents: 10670
diff changeset
1437 /** 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
1438 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
1439
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1440 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
1441 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
1442 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
1443 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
1444 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
1445 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
1446 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
1447 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
1448 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
1449 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
1450 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
1451 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
1452 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
1453 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
1454 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
1455 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
1456 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
1457 };
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1458 /** 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
1459 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
1460
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
1461 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
1462 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
1463 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
1464 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
1465 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
1466 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
1467 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
1468 };
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1469
10667
0a7a8b6d89b3 (svn r14970) -Change: move all (patch) settings to a single "page" (Alberth)
rubidium <rubidium@openttd.org>
parents: 10666
diff changeset
1470 /** 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
1471 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
1472
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
1473 /** 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
1474 enum GameSettingsWidgets {
11697
ef293835ecc2 (svn r16082) -Codechange: Completed the widget numbers of the advanced settings window.
alberth <alberth@openttd.org>
parents: 11657
diff changeset
1475 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
1476 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
1477 };
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
1478
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
1479 struct GameSettingsWindow : Window {
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1480 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
1481 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
1482 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
1483 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
1484
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
1485 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
1486
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
1487 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
1488 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
1489
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1490 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
1491 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1492 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
1493
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
1494 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
1495
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1496 /* 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
1497 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
1498 _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
1499 first_time = false;
10670
22ffe020ed5d (svn r14973) -Codechange: recursively fold subpages (Alberth)
rubidium <rubidium@openttd.org>
parents: 10667
diff changeset
1500 } 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
1501 _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
1502 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1503
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
1504 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
1505 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
1506
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1507 this->InitNested(desc, 0);
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1508
12880
09381837656b (svn r17372) -Codechange: make the settings, rail and sign GUIs use the scrollbar wrappers
rubidium <rubidium@openttd.org>
parents: 12790
diff changeset
1509 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
1510 }
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1511
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
1512 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
1513 {
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1514 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
1515
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1516 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
1517 resize->width = 1;
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1518
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1519 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
1520 }
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
1521
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1522 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
1523 {
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1524 if (widget != SETTINGSEL_OPTIONSPANEL) return;
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1525
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
1526 _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
1527 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
1528 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1529
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1530 virtual void OnPaint()
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1531 {
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
1532 this->DrawWidgets();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1533 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1534
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1535 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
1536 {
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
1537 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
1538
13695
75560523443c (svn r18220) -Codechange: Reduce number of nested widget dynamic casts.
alberth <alberth@openttd.org>
parents: 13672
diff changeset
1539 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
1540 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
1541
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1542 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
1543 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
1544
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1545 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
1546 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
1547
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1548 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
1549
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
1550 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
1551 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
1552
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
1553 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
1554 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
1555
12880
09381837656b (svn r17372) -Codechange: make the settings, rail and sign GUIs use the scrollbar wrappers
rubidium <rubidium@openttd.org>
parents: 12790
diff changeset
1556 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
1557 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
1558 return;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1559 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1560
11069
36d798171bfd (svn r15410) -Cleanup: get rid of most of the references to the 'patches' except where it's used for backward compatability.
rubidium <rubidium@openttd.org>
parents: 11049
diff changeset
1561 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
1562 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
1563
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1564 /* 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
1565 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
1566 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
1567 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
1568
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
1569 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
1570 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
1571
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1572 /* 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
1573 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
1574 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
1575 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
1576
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1577 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
1578 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
1579 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
1580 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
1581 /* 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
1582 * 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
1583 * 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
1584 * 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
1585 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
1586 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
1587
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1588 /* 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
1589 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
1590 _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
1591 return;
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1592 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1593
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1594 /* 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
1595 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
1596 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
1597 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
1598 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
1599 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
1600 } 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
1601 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
1602 }
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1603 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
1604 } else {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1605 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
1606 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
1607 }
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1608
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1609 /* 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
1610 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
1611 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
1612 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
1613 }
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1614 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
1615 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
1616 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
1617 _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
1618 }
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1619 } break;
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1620
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1621 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
1622 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1623
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1624 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
1625 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
1626 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
1627 } 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
1628 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
1629 }
10674
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1630 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
1631 }
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1632 } else {
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1633 /* 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
1634 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
1635 /* 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
1636 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
1637
142d8484c2d8 (svn r14978) -Codechange: simplify the control flow of the OnClick of the settings window
rubidium <rubidium@openttd.org>
parents: 10671
diff changeset
1638 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
1639 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
1640 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
1641 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1642 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1643 }
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
1644
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1645 virtual void OnTimeout()
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1646 {
10661
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1647 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
1648 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
1649 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
1650 this->SetDirty();
ba3579a2b84f (svn r14963) -Codechange: remember what entry was clicked instead of the index (Alberth)
rubidium <rubidium@openttd.org>
parents: 10660
diff changeset
1651 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1652 }
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
1653
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1654 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
1655 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1656 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
1657 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
1658 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
1659 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
1660 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
1661
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1662 /* 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
1663 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
1664
12067
43d8d69b7a31 (svn r16474) -Fix [FS#2933]: could set company related settings via query window
rubidium <rubidium@openttd.org>
parents: 12024
diff changeset
1665 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
1666 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
1667 } else {
43d8d69b7a31 (svn r16474) -Fix [FS#2933]: could set company related settings via query window
rubidium <rubidium@openttd.org>
parents: 12024
diff changeset
1668 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
1669 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1670 this->SetDirty();
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1671 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1672 }
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
1673
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
1674 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
1675 {
14037
ca29deba0f1a (svn r18580) -Codechange: Use widget information only for setting scrollbar capacity.
alberth <alberth@openttd.org>
parents: 13983
diff changeset
1676 this->vscroll.SetCapacityFromWidget(this, SETTINGSEL_OPTIONSPANEL, SETTINGTREE_TOP_OFFSET + SETTINGTREE_BOTTOM_OFFSET);
10543
0667832b2888 (svn r14800) -Codechange: make the advanced settings window resizeable and scrollable (most by Alberth)
rubidium <rubidium@openttd.org>
parents: 10542
diff changeset
1677 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1678 };
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
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
1680 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
1681
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1682 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
1683 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
1684 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
1685 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
1686 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1687 NWidget(NWID_HORIZONTAL),
13364
f52b5b6c607b (svn r17873) -Codechange: make the advanced settings window nested
rubidium <rubidium@openttd.org>
parents: 13344
diff changeset
1688 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
1689 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
1690 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
1691 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
1692 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1693 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1694 };
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1695
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
1696 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
1697 WDP_CENTER, 450, 397,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5688
diff changeset
1698 WC_GAME_OPTIONS, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1699 0,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
1700 _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
1701 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1702
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
1703 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
1704 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1705 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
1706 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
1707 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1708
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1709
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1710 /**
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1711 * 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
1712 * @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
1713 * @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
1714 * @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
1715 * @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
1716 * @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
1717 * @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
1718 */
9872
c26adcd5367e (svn r14018) -Fix (r14017): Typos prevented compilation.
peter1138 <peter1138@openttd.org>
parents: 9871
diff changeset
1719 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
1720 {
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
1721 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
1722
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
1723 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
1724 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
1725 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
1726 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
1727
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1728 /* 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
1729 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
1730 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
1731 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
1732 }
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
1733 if (rtl ? !clickable_left : !clickable_right) {
9872
c26adcd5367e (svn r14018) -Fix (r14017): Typos prevented compilation.
peter1138 <peter1138@openttd.org>
parents: 9871
diff changeset
1734 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
1735 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1736 }
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1737
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1738 /** 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
1739 enum CustomCurrencyWidgets {
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1740 CUSTCURR_RATE_DOWN,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1741 CUSTCURR_RATE_UP,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1742 CUSTCURR_RATE,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1743 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
1744 CUSTCURR_SEPARATOR,
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1745 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
1746 CUSTCURR_PREFIX,
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1747 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
1748 CUSTCURR_SUFFIX,
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1749 CUSTCURR_YEAR_DOWN,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1750 CUSTCURR_YEAR_UP,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1751 CUSTCURR_YEAR,
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1752 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
1753 };
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
1754
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1755 struct CustomCurrencyWindow : Window {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1756 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
1757
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1758 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
1759 {
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1760 this->InitNested(desc);
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1761
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1762 SetButtonState();
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1763 }
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1764
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1765 void SetButtonState()
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1766 {
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1767 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
1768 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
1769 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
1770 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
1771 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1772
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1773 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
1774 {
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
1775 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
1776 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
1777 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
1778 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
1779 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
1780 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
1781 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
1782 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
1783 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
1784
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
1785 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
1786 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
1787 break;
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1788 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1789 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1790
13705
8dee47e001b2 (svn r18230) -Codechange: Allow fill stepsize to be set from Window::UpdateWidgetSize().
alberth <alberth@openttd.org>
parents: 13704
diff changeset
1791 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
1792 {
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1793 switch (widget) {
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1794 /* 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
1795 case CUSTCURR_SEPARATOR_EDIT:
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1796 case CUSTCURR_PREFIX_EDIT:
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1797 case CUSTCURR_SUFFIX_EDIT:
13695
75560523443c (svn r18220) -Codechange: Reduce number of nested widget dynamic casts.
alberth <alberth@openttd.org>
parents: 13672
diff changeset
1798 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
1799 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
1800
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
1801 /* 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
1802 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
1803 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
1804 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
1805 *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
1806 break;
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1807 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1808 }
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1809
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1810 virtual void OnPaint()
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1811 {
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1812 this->DrawWidgets();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1813 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1814
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1815 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
1816 {
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1817 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
1818 int len = 0;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1819 StringID str = 0;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1820 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
1821
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1822 switch (widget) {
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1823 case CUSTCURR_RATE_DOWN:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1824 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
1825 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
1826 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
1827 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
1828
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1829 case CUSTCURR_RATE_UP:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1830 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
1831 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
1832 this->EnableWidget(CUSTCURR_RATE_DOWN);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1833 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1834
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1835 case CUSTCURR_RATE:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1836 SetDParam(0, _custom_currency.rate);
12493
32e2de3d509a (svn r16930) -Codechange: more StringID name unification and grouping
rubidium <rubidium@openttd.org>
parents: 12475
diff changeset
1837 str = STR_JUST_INT;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1838 len = 5;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1839 line = CUSTCURR_RATE;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1840 afilter = CS_NUMERAL;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1841 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1842
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1843 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
1844 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
1845 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
1846 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
1847 len = 1;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1848 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
1849 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
1850
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1851 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
1852 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
1853 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
1854 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
1855 len = 12;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1856 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
1857 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
1858
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1859 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
1860 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
1861 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
1862 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
1863 len = 12;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1864 line = CUSTCURR_SUFFIX;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1865 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1866
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1867 case CUSTCURR_YEAR_DOWN:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1868 _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
1869 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
1870 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
1871 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
1872
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1873 case CUSTCURR_YEAR_UP:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1874 _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
1875 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
1876 this->EnableWidget(CUSTCURR_YEAR_DOWN);
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1877 break;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1878
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1879 case CUSTCURR_YEAR:
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1880 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
1881 str = STR_JUST_INT;
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1882 len = 7;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1883 line = CUSTCURR_YEAR;
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1884 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
1885 break;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1886 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1887
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1888 if (len != 0) {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1889 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
1890 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
1891 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1892
10180
e024f1d28082 (svn r14390) -Codechange: replace magic constants with symbolic constants.
rubidium <rubidium@openttd.org>
parents: 10145
diff changeset
1893 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
1894 this->SetDirty();
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1895 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1896
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1897 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
1898 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1899 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
1900
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1901 switch (this->query_widget) {
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1902 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
1903 _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
1904 break;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1905
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
1906 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
1907 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
1908 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
1909
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1910 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
1911 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
1912 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
1913
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1914 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
1915 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
1916 break;
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1917
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1918 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
1919 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
1920
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1921 _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
1922 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
1923 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1924 }
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1925 MarkWholeScreenDirty();
11752
99ab03ebd58c (svn r16142) -Codechange: Use widgets in the custom currency window.
alberth <alberth@openttd.org>
parents: 11730
diff changeset
1926 SetButtonState();
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1927 }
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1928
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1929 virtual void OnTimeout()
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1930 {
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1931 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
1932 }
9246
1684bf12f0e0 (svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium <rubidium@openttd.org>
parents: 9231
diff changeset
1933 };
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1934
11762
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1935 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
1936 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
1937 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
1938 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
1939 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
1940 NWidget(WWT_PANEL, COLOUR_GREY),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1941 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
1942 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
1943 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
1944 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
1945 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
1946 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
1947 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1948 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
1949 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
1950 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
1951 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
1952 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1953 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
1954 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
1955 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
1956 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
1957 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1958 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
1959 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
1960 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
1961 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
1962 EndContainer(),
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1963 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
1964 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
1965 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
1966 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
1967 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
1968 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
1969 EndContainer(),
13135
781c6205c0d7 (svn r17640) -Codechange: make the custom currency window nested
rubidium <rubidium@openttd.org>
parents: 13134
diff changeset
1970 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
1971 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
1972 EndContainer(),
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1973 };
6ee45c95e58e (svn r16152) -Codechange: Added nested widgets for advanced settings and for custom currency windows.
alberth <alberth@openttd.org>
parents: 11754
diff changeset
1974
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
1975 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
1976 WDP_CENTER, 0, 0,
5893
8547517ef719 (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium <rubidium@openttd.org>
parents: 5688
diff changeset
1977 WC_CUSTOM_CURRENCY, WC_NONE,
13749
fc3ab8256c95 (svn r18274) -Codechange: remove the unused WDF flags
rubidium <rubidium@openttd.org>
parents: 13705
diff changeset
1978 WDF_UNCLICK_BUTTONS,
13564
bae287664b02 (svn r18086) -Codechange: remove 'widget' from WindowDesc
rubidium <rubidium@openttd.org>
parents: 13509
diff changeset
1979 _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
1980 );
5584
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1981
6247
57363e064324 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium <rubidium@openttd.org>
parents: 6012
diff changeset
1982 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
1983 {
4b26bd55bd24 (svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
KUDr <KUDr@openttd.org>
parents:
diff changeset
1984 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
1985 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
1986 }