author | peter1138 |
Sun, 03 Aug 2008 17:35:08 +0000 | |
changeset 9834 | 7474149531c1 |
parent 9793 | 359d2460833b |
child 9871 | 57a332d08e74 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
9111
48ce04029fe4
(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
parents:
9092
diff
changeset
|
3 |
/** @file settings_gui.cpp GUI for settings. */ |
6420
456c275f3313
(svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents:
6378
diff
changeset
|
4 |
|
0 | 5 |
#include "stdafx.h" |
1891
862800791170
(svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents:
1806
diff
changeset
|
6 |
#include "openttd.h" |
2291
c142846954ee
(svn r2815) Store the currency information in one central place instead of scattering it in several unrelated files
tron
parents:
2231
diff
changeset
|
7 |
#include "currency.h" |
0 | 8 |
#include "gui.h" |
8107
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
9 |
#include "window_gui.h" |
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
10 |
#include "textbuf_gui.h" |
8116
8da76dcb3287
(svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium
parents:
8114
diff
changeset
|
11 |
#include "command_func.h" |
8786
1823ff88a054
(svn r12490) -Codechange: rename engine.h to engine_func.h and remove unneeded inclusions of engine.h and/or replace them with engine_type.h.
rubidium
parents:
8785
diff
changeset
|
12 |
#include "engine_func.h" |
430 | 13 |
#include "screenshot.h" |
478
3a161108a15d
(svn r745) Added newgrf GUI (in options menu)\nThe interface currently only displays the installed grf sets, you can't (de)activate them through the gui yet
dominik
parents:
430
diff
changeset
|
14 |
#include "newgrf.h" |
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5431
diff
changeset
|
15 |
#include "network/network.h" |
835
f6a341f541d7
(svn r1312) -Add: Patch which is on by default: population in label of the town
truelight
parents:
833
diff
changeset
|
16 |
#include "town.h" |
2159
f6284cf5fab0
(svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents:
2140
diff
changeset
|
17 |
#include "variables.h" |
8208
3d0590aa2124
(svn r11771) -Codechange: split settings.h into better separated headers.
rubidium
parents:
8191
diff
changeset
|
18 |
#include "settings_internal.h" |
6956
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
19 |
#include "newgrf_townname.h" |
8114
dd6d21dc99c1
(svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents:
8107
diff
changeset
|
20 |
#include "strings_func.h" |
8131
160939e24ed3
(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
parents:
8130
diff
changeset
|
21 |
#include "functions.h" |
160939e24ed3
(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
parents:
8130
diff
changeset
|
22 |
#include "window_func.h" |
8213
7bdd7593eb9b
(svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
8208
diff
changeset
|
23 |
#include "core/alloc_func.hpp" |
8214
971f861d5543
(svn r11777) -Codechange: split the string header and make do not include it when it's not necessary.
rubidium
parents:
8213
diff
changeset
|
24 |
#include "string_func.h" |
8224
c5a64d87cc54
(svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents:
8214
diff
changeset
|
25 |
#include "gfx_func.h" |
8505
c175d34fe020
(svn r12080) -Fix: update waypoint signs when changing language
glx
parents:
8424
diff
changeset
|
26 |
#include "waypoint.h" |
8321
96c331ee5ac3
(svn r11886) -Add: sort the strings in languages dropdown
glx
parents:
8319
diff
changeset
|
27 |
#include "widgets/dropdown_type.h" |
8284
ebdc5ba08874
(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
parents:
8264
diff
changeset
|
28 |
#include "widgets/dropdown_func.h" |
8785
871586967963
(svn r12489) -Codechange: split station.h into station_base.h and station_func.h.
rubidium
parents:
8648
diff
changeset
|
29 |
#include "station_func.h" |
9581
0d8f232e1721
(svn r13618) -Codechange: move tar-specific declarations to separate file
smatz
parents:
9533
diff
changeset
|
30 |
#include <map> |
0 | 31 |
|
8264
b1e85998c7d3
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8224
diff
changeset
|
32 |
#include "table/sprites.h" |
b1e85998c7d3
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8224
diff
changeset
|
33 |
#include "table/strings.h" |
b1e85998c7d3
(svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents:
8224
diff
changeset
|
34 |
|
3342
cb9b5c6dd74c
(svn r4126) - Feature: A new multi-lingual multi-measuring-unit system:
peter1138
parents:
3247
diff
changeset
|
35 |
static const StringID _units_dropdown[] = { |
cb9b5c6dd74c
(svn r4126) - Feature: A new multi-lingual multi-measuring-unit system:
peter1138
parents:
3247
diff
changeset
|
36 |
STR_UNITS_IMPERIAL, |
cb9b5c6dd74c
(svn r4126) - Feature: A new multi-lingual multi-measuring-unit system:
peter1138
parents:
3247
diff
changeset
|
37 |
STR_UNITS_METRIC, |
cb9b5c6dd74c
(svn r4126) - Feature: A new multi-lingual multi-measuring-unit system:
peter1138
parents:
3247
diff
changeset
|
38 |
STR_UNITS_SI, |
0 | 39 |
INVALID_STRING_ID |
40 |
}; |
|
41 |
||
42 |
static const StringID _driveside_dropdown[] = { |
|
43 |
STR_02E9_DRIVE_ON_LEFT, |
|
44 |
STR_02EA_DRIVE_ON_RIGHT, |
|
45 |
INVALID_STRING_ID |
|
46 |
}; |
|
47 |
||
48 |
static const StringID _autosave_dropdown[] = { |
|
49 |
STR_02F7_OFF, |
|
50 |
STR_AUTOSAVE_1_MONTH, |
|
51 |
STR_02F8_EVERY_3_MONTHS, |
|
52 |
STR_02F9_EVERY_6_MONTHS, |
|
53 |
STR_02FA_EVERY_12_MONTHS, |
|
54 |
INVALID_STRING_ID, |
|
55 |
}; |
|
56 |
||
57 |
static const StringID _designnames_dropdown[] = { |
|
58 |
STR_02BE_DEFAULT, |
|
59 |
STR_02BF_CUSTOM, |
|
60 |
INVALID_STRING_ID |
|
61 |
}; |
|
62 |
||
63 |
static StringID *BuildDynamicDropdown(StringID base, int num) |
|
64 |
{ |
|
65 |
static StringID buf[32 + 1]; |
|
66 |
StringID *p = buf; |
|
8969
6d1c74e0e2cd
(svn r12761) -Codechange: lots of minor whitespace coding style fixes around operators.
rubidium
parents:
8881
diff
changeset
|
67 |
while (--num >= 0) *p++ = base++; |
0 | 68 |
*p = INVALID_STRING_ID; |
69 |
return buf; |
|
70 |
} |
|
71 |
||
6956
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
72 |
int _nb_orig_names = SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1; |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
73 |
static StringID *_grf_names = NULL; |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
74 |
static int _nb_grf_names = 0; |
6797
cc313f6757ef
(svn r10036) -Add: sort the strings in town names dropdown
glx
parents:
6730
diff
changeset
|
75 |
|
8323
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
76 |
void InitGRFTownGeneratorNames() |
6797
cc313f6757ef
(svn r10036) -Add: sort the strings in town names dropdown
glx
parents:
6730
diff
changeset
|
77 |
{ |
6956
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
78 |
free(_grf_names); |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
79 |
_grf_names = GetGRFTownNameList(); |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
80 |
_nb_grf_names = 0; |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
81 |
for (StringID *s = _grf_names; *s != INVALID_STRING_ID; s++) _nb_grf_names++; |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
82 |
} |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
83 |
|
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
84 |
static inline StringID TownName(int town_name) |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
85 |
{ |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
86 |
if (town_name < _nb_orig_names) return STR_TOWNNAME_ORIGINAL_ENGLISH + town_name; |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
87 |
town_name -= _nb_orig_names; |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
88 |
if (town_name < _nb_grf_names) return _grf_names[town_name]; |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6950
diff
changeset
|
89 |
return STR_UNDEFINED; |
6797
cc313f6757ef
(svn r10036) -Add: sort the strings in town names dropdown
glx
parents:
6730
diff
changeset
|
90 |
} |
cc313f6757ef
(svn r10036) -Add: sort the strings in town names dropdown
glx
parents:
6730
diff
changeset
|
91 |
|
6247 | 92 |
static int GetCurRes() |
0 | 93 |
{ |
94 |
int i; |
|
2639 | 95 |
|
96 |
for (i = 0; i != _num_resolutions; i++) { |
|
9533
e8b86b70c5f6
(svn r13537) -Fix [FS#2090](r13523): QSortT won't work this way, use Dimension instead of uint16[2] for resolutions
smatz
parents:
9466
diff
changeset
|
97 |
if (_resolutions[i].width == _screen.width && |
e8b86b70c5f6
(svn r13537) -Fix [FS#2090](r13523): QSortT won't work this way, use Dimension instead of uint16[2] for resolutions
smatz
parents:
9466
diff
changeset
|
98 |
_resolutions[i].height == _screen.height) { |
0 | 99 |
break; |
2639 | 100 |
} |
101 |
} |
|
0 | 102 |
return i; |
103 |
} |
|
104 |
||
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
105 |
enum GameOptionsWidgets { |
8336
432b85820441
(svn r11902) -Codechange: use new dropdown widget for game options window
peter1138
parents:
8323
diff
changeset
|
106 |
GAMEOPT_CURRENCY_BTN = 4, |
432b85820441
(svn r11902) -Codechange: use new dropdown widget for game options window
peter1138
parents:
8323
diff
changeset
|
107 |
GAMEOPT_DISTANCE_BTN = 6, |
432b85820441
(svn r11902) -Codechange: use new dropdown widget for game options window
peter1138
parents:
8323
diff
changeset
|
108 |
GAMEOPT_ROADSIDE_BTN = 8, |
432b85820441
(svn r11902) -Codechange: use new dropdown widget for game options window
peter1138
parents:
8323
diff
changeset
|
109 |
GAMEOPT_TOWNNAME_BTN = 10, |
432b85820441
(svn r11902) -Codechange: use new dropdown widget for game options window
peter1138
parents:
8323
diff
changeset
|
110 |
GAMEOPT_AUTOSAVE_BTN = 12, |
432b85820441
(svn r11902) -Codechange: use new dropdown widget for game options window
peter1138
parents:
8323
diff
changeset
|
111 |
GAMEOPT_VEHICLENAME_BTN = 14, |
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
112 |
GAMEOPT_VEHICLENAME_SAVE, |
8336
432b85820441
(svn r11902) -Codechange: use new dropdown widget for game options window
peter1138
parents:
8323
diff
changeset
|
113 |
GAMEOPT_LANG_BTN = 17, |
432b85820441
(svn r11902) -Codechange: use new dropdown widget for game options window
peter1138
parents:
8323
diff
changeset
|
114 |
GAMEOPT_RESOLUTION_BTN = 19, |
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
115 |
GAMEOPT_FULLSCREEN, |
8336
432b85820441
(svn r11902) -Codechange: use new dropdown widget for game options window
peter1138
parents:
8323
diff
changeset
|
116 |
GAMEOPT_SCREENSHOT_BTN = 22, |
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
117 |
}; |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
118 |
|
8321
96c331ee5ac3
(svn r11886) -Add: sort the strings in languages dropdown
glx
parents:
8319
diff
changeset
|
119 |
/** |
8323
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
120 |
* Update/redraw the townnames dropdown |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
121 |
* @param w the window the dropdown belongs to |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
122 |
* @param sel the currently selected townname generator |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
123 |
*/ |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
124 |
static void ShowTownnameDropdown(Window *w, int sel) |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
125 |
{ |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
126 |
typedef std::map<StringID, int, StringIDCompare> TownList; |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
127 |
TownList townnames; |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
128 |
|
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
129 |
/* Add and sort original townnames generators */ |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
130 |
for (int i = 0; i < _nb_orig_names; i++) townnames[STR_TOWNNAME_ORIGINAL_ENGLISH + i] = i; |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
131 |
|
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
132 |
/* Add and sort newgrf townnames generators */ |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
133 |
for (int i = 0; i < _nb_grf_names; i++) townnames[_grf_names[i]] = _nb_orig_names + i; |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
134 |
|
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
135 |
DropDownList *list = new DropDownList(); |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
136 |
for (TownList::iterator it = townnames.begin(); it != townnames.end(); it++) { |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
137 |
list->push_back(new DropDownListStringItem((*it).first, (*it).second, !(_game_mode == GM_MENU || (*it).second == sel))); |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
138 |
} |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
139 |
|
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
140 |
ShowDropDownList(w, list, sel, GAMEOPT_TOWNNAME_BTN); |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
141 |
} |
d5531c7645a7
(svn r11888) -Codechange: simplify sorting of the strings in town names dropdown
glx
parents:
8321
diff
changeset
|
142 |
|
6247 | 143 |
static void ShowCustCurrency(); |
2817 | 144 |
|
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
145 |
struct GameOptionsWindow : Window { |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
146 |
GameSettings *opt; |
9346 | 147 |
|
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
148 |
GameOptionsWindow(const WindowDesc *desc) : Window(desc) |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
149 |
{ |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
150 |
this->opt = (_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game; |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
151 |
this->FindWindowPlacementAndResize(desc); |
0 | 152 |
} |
759
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
153 |
|
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
154 |
~GameOptionsWindow() |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
155 |
{ |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
156 |
DeleteWindowById(WC_CUSTOM_CURRENCY, 0); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
157 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
158 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
159 |
virtual void OnPaint() |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
160 |
{ |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
161 |
StringID str = STR_02BE_DEFAULT; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
162 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
163 |
this->SetWidgetDisabledState(GAMEOPT_VEHICLENAME_SAVE, !(_vehicle_design_names & 1)); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
164 |
if (!this->IsWidgetDisabled(GAMEOPT_VEHICLENAME_SAVE)) str = STR_02BF_CUSTOM; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
165 |
SetDParam(0, str); |
9466
5a1d4eb2ae07
(svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium
parents:
9421
diff
changeset
|
166 |
SetDParam(1, _currency_specs[this->opt->locale.currency].name); |
5a1d4eb2ae07
(svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium
parents:
9421
diff
changeset
|
167 |
SetDParam(2, STR_UNITS_IMPERIAL + this->opt->locale.units); |
9358
2e1e4d2f71dd
(svn r13255) -Codechange: move _opt to _settings.
rubidium
parents:
9354
diff
changeset
|
168 |
SetDParam(3, STR_02E9_DRIVE_ON_LEFT + this->opt->vehicle.road_side); |
2e1e4d2f71dd
(svn r13255) -Codechange: move _opt to _settings.
rubidium
parents:
9354
diff
changeset
|
169 |
SetDParam(4, TownName(this->opt->game_creation.town_name)); |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
170 |
SetDParam(5, _autosave_dropdown[_settings_client.gui.autosave]); |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
171 |
SetDParam(6, SPECSTR_LANGUAGE_START + _dynlang.curr); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
172 |
int i = GetCurRes(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
173 |
SetDParam(7, i == _num_resolutions ? STR_RES_OTHER : SPECSTR_RESOLUTION_START + i); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
174 |
SetDParam(8, SPECSTR_SCREENSHOT_START + _cur_screenshot_format); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
175 |
this->SetWidgetLoweredState(GAMEOPT_FULLSCREEN, _fullscreen); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
176 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
177 |
this->DrawWidgets(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
178 |
DrawString(20, 175, STR_OPTIONS_FULLSCREEN, TC_FROMSTRING); // fullscreen |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
179 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
180 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
181 |
virtual void OnClick(Point pt, int widget) |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
182 |
{ |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
183 |
switch (widget) { |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
184 |
case GAMEOPT_CURRENCY_BTN: // Setup currencies dropdown |
9466
5a1d4eb2ae07
(svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium
parents:
9421
diff
changeset
|
185 |
ShowDropDownMenu(this, BuildCurrencyDropdown(), this->opt->locale.currency, GAMEOPT_CURRENCY_BTN, _game_mode == GM_MENU ? 0 : ~GetMaskOfAllowedCurrencies(), 0); |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
186 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
187 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
188 |
case GAMEOPT_DISTANCE_BTN: // Setup distance unit dropdown |
9466
5a1d4eb2ae07
(svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium
parents:
9421
diff
changeset
|
189 |
ShowDropDownMenu(this, _units_dropdown, this->opt->locale.units, GAMEOPT_DISTANCE_BTN, 0, 0); |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
190 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
191 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
192 |
case GAMEOPT_ROADSIDE_BTN: { // Setup road-side dropdown |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
193 |
int i = 0; |
9298
c758dcefb1f2
(svn r13166) -Codechange: CmdSetRoadDriveSide belongs in road_cmd.cpp, not settings_gui.cpp.
rubidium
parents:
9291
diff
changeset
|
194 |
extern bool RoadVehiclesAreBuilt(); |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
195 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
196 |
/* You can only change the drive side if you are in the menu or ingame with |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
197 |
* no vehicles present. In a networking game only the server can change it */ |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
198 |
if ((_game_mode != GM_MENU && RoadVehiclesAreBuilt()) || (_networking && !_network_server)) { |
9358
2e1e4d2f71dd
(svn r13255) -Codechange: move _opt to _settings.
rubidium
parents:
9354
diff
changeset
|
199 |
i = (-1) ^ (1 << this->opt->vehicle.road_side); // disable the other value |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
200 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
201 |
|
9358
2e1e4d2f71dd
(svn r13255) -Codechange: move _opt to _settings.
rubidium
parents:
9354
diff
changeset
|
202 |
ShowDropDownMenu(this, _driveside_dropdown, this->opt->vehicle.road_side, GAMEOPT_ROADSIDE_BTN, i, 0); |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
203 |
} break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
204 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
205 |
case GAMEOPT_TOWNNAME_BTN: // Setup townname dropdown |
9358
2e1e4d2f71dd
(svn r13255) -Codechange: move _opt to _settings.
rubidium
parents:
9354
diff
changeset
|
206 |
ShowTownnameDropdown(this, this->opt->game_creation.town_name); |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
207 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
208 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
209 |
case GAMEOPT_AUTOSAVE_BTN: // Setup autosave dropdown |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
210 |
ShowDropDownMenu(this, _autosave_dropdown, _settings_client.gui.autosave, GAMEOPT_AUTOSAVE_BTN, 0, 0); |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
211 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
212 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
213 |
case GAMEOPT_VEHICLENAME_BTN: // Setup customized vehicle-names dropdown |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
214 |
ShowDropDownMenu(this, _designnames_dropdown, (_vehicle_design_names & 1) ? 1 : 0, GAMEOPT_VEHICLENAME_BTN, (_vehicle_design_names & 2) ? 0 : 2, 0); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
215 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
216 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
217 |
case GAMEOPT_VEHICLENAME_SAVE: // Save customized vehicle-names to disk |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
218 |
break; // not implemented |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
219 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
220 |
case GAMEOPT_LANG_BTN: { // Setup interface language dropdown |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
221 |
typedef std::map<StringID, int, StringIDCompare> LangList; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
222 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
223 |
/* Sort language names */ |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
224 |
LangList langs; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
225 |
for (int i = 0; i < _dynlang.num; i++) langs[SPECSTR_LANGUAGE_START + i] = i; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
226 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
227 |
DropDownList *list = new DropDownList(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
228 |
for (LangList::iterator it = langs.begin(); it != langs.end(); it++) { |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
229 |
list->push_back(new DropDownListStringItem((*it).first, (*it).second, false)); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
230 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
231 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
232 |
ShowDropDownList(this, list, _dynlang.curr, GAMEOPT_LANG_BTN); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
233 |
} break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
234 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
235 |
case GAMEOPT_RESOLUTION_BTN: // Setup resolution dropdown |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
236 |
ShowDropDownMenu(this, BuildDynamicDropdown(SPECSTR_RESOLUTION_START, _num_resolutions), GetCurRes(), GAMEOPT_RESOLUTION_BTN, 0, 0); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
237 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
238 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
239 |
case GAMEOPT_FULLSCREEN: // Click fullscreen on/off |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
240 |
/* try to toggle full-screen on/off */ |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
241 |
if (!ToggleFullScreen(!_fullscreen)) { |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
242 |
ShowErrorMessage(INVALID_STRING_ID, STR_FULLSCREEN_FAILED, 0, 0); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
243 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
244 |
this->SetWidgetLoweredState(GAMEOPT_FULLSCREEN, _fullscreen); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
245 |
this->SetDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
246 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
247 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
248 |
case GAMEOPT_SCREENSHOT_BTN: // Setup screenshot format dropdown |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
249 |
ShowDropDownMenu(this, BuildDynamicDropdown(SPECSTR_SCREENSHOT_START, _num_screenshot_formats), _cur_screenshot_format, GAMEOPT_SCREENSHOT_BTN, 0, 0); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
250 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
251 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
252 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
253 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
254 |
virtual void OnDropdownSelect(int widget, int index) |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
255 |
{ |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
256 |
switch (widget) { |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
257 |
case GAMEOPT_VEHICLENAME_BTN: // Vehicle design names |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
258 |
if (index == 0) { |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
259 |
DeleteCustomEngineNames(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
260 |
MarkWholeScreenDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
261 |
} else if (!(_vehicle_design_names & 1)) { |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
262 |
LoadCustomEngineNames(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
263 |
MarkWholeScreenDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
264 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
265 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
266 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
267 |
case GAMEOPT_CURRENCY_BTN: /* Currency */ |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
268 |
if (index == CUSTOM_CURRENCY_ID) ShowCustCurrency(); |
9466
5a1d4eb2ae07
(svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium
parents:
9421
diff
changeset
|
269 |
this->opt->locale.currency = index; |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
270 |
MarkWholeScreenDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
271 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
272 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
273 |
case GAMEOPT_DISTANCE_BTN: // Measuring units |
9466
5a1d4eb2ae07
(svn r13386) -Fix: global currency/units setting being overriden when loading a savegame.
rubidium
parents:
9421
diff
changeset
|
274 |
this->opt->locale.units = index; |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
275 |
MarkWholeScreenDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
276 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
277 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
278 |
case GAMEOPT_ROADSIDE_BTN: // Road side |
9358
2e1e4d2f71dd
(svn r13255) -Codechange: move _opt to _settings.
rubidium
parents:
9354
diff
changeset
|
279 |
if (this->opt->vehicle.road_side != index) { // only change if setting changed |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
280 |
DoCommandP(0, index, 0, NULL, CMD_SET_ROAD_DRIVE_SIDE | CMD_MSG(STR_00B4_CAN_T_DO_THIS)); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
281 |
MarkWholeScreenDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
282 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
283 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
284 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
285 |
case GAMEOPT_TOWNNAME_BTN: // Town names |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
286 |
if (_game_mode == GM_MENU) { |
9358
2e1e4d2f71dd
(svn r13255) -Codechange: move _opt to _settings.
rubidium
parents:
9354
diff
changeset
|
287 |
this->opt->game_creation.town_name = index; |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
288 |
InvalidateWindow(WC_GAME_OPTIONS, 0); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
289 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
290 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
291 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
292 |
case GAMEOPT_AUTOSAVE_BTN: // Autosave options |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
293 |
_settings_client.gui.autosave = index; |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
294 |
this->SetDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
295 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
296 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
297 |
case GAMEOPT_LANG_BTN: // Change interface language |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
298 |
ReadLanguagePack(index); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
299 |
CheckForMissingGlyphsInLoadedLanguagePack(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
300 |
UpdateAllStationVirtCoord(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
301 |
UpdateAllWaypointSigns(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
302 |
MarkWholeScreenDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
303 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
304 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
305 |
case GAMEOPT_RESOLUTION_BTN: // Change resolution |
9533
e8b86b70c5f6
(svn r13537) -Fix [FS#2090](r13523): QSortT won't work this way, use Dimension instead of uint16[2] for resolutions
smatz
parents:
9466
diff
changeset
|
306 |
if (index < _num_resolutions && ChangeResInGame(_resolutions[index].width, _resolutions[index].height)) { |
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
307 |
this->SetDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
308 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
309 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
310 |
|
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
311 |
case GAMEOPT_SCREENSHOT_BTN: // Change screenshot format |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
312 |
SetScreenshotFormat(index); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
313 |
this->SetDirty(); |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
314 |
break; |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
315 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
316 |
} |
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
317 |
}; |
0 | 318 |
|
319 |
static const Widget _game_options_widgets[] = { |
|
9764
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
320 |
{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
321 |
{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 369, 0, 13, STR_00B1_GAME_OPTIONS, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
322 |
{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 369, 14, 238, 0x0, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
323 |
{ WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 10, 179, 20, 55, STR_02E0_CURRENCY_UNITS, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
324 |
{ WWT_DROPDOWNIN, RESIZE_NONE, COLOUR_GREY, 20, 169, 34, 45, STR_02E1, STR_02E2_CURRENCY_UNITS_SELECTION}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
325 |
{ WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 190, 359, 20, 55, STR_MEASURING_UNITS, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
326 |
{ WWT_DROPDOWNIN, RESIZE_NONE, COLOUR_GREY, 200, 349, 34, 45, STR_02E4, STR_MEASURING_UNITS_SELECTION}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
327 |
{ WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 10, 179, 62, 97, STR_02E6_ROAD_VEHICLES, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
328 |
{ WWT_DROPDOWNIN, RESIZE_NONE, COLOUR_GREY, 20, 169, 76, 87, STR_02E7, STR_02E8_SELECT_SIDE_OF_ROAD_FOR}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
329 |
{ WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 190, 359, 62, 97, STR_02EB_TOWN_NAMES, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
330 |
{ WWT_DROPDOWNIN, RESIZE_NONE, COLOUR_GREY, 200, 349, 76, 87, STR_02EC, STR_02ED_SELECT_STYLE_OF_TOWN_NAMES}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
331 |
{ WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 10, 179, 104, 139, STR_02F4_AUTOSAVE, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
332 |
{ WWT_DROPDOWNIN, RESIZE_NONE, COLOUR_GREY, 20, 169, 118, 129, STR_02F5, STR_02F6_SELECT_INTERVAL_BETWEEN}, |
0 | 333 |
|
9764
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
334 |
{ WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 10, 359, 194, 228, STR_02BC_VEHICLE_DESIGN_NAMES, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
335 |
{ WWT_DROPDOWNIN, RESIZE_NONE, COLOUR_GREY, 20, 119, 207, 218, STR_02BD, STR_02C1_VEHICLE_DESIGN_NAMES_SELECTION}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
336 |
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 130, 349, 207, 218, STR_02C0_SAVE_CUSTOM_NAMES, STR_02C2_SAVE_CUSTOMIZED_VEHICLE}, |
0 | 337 |
|
9764
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
338 |
{ WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 190, 359, 104, 139, STR_OPTIONS_LANG, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
339 |
{ WWT_DROPDOWNIN, RESIZE_NONE, COLOUR_GREY, 200, 349, 118, 129, STR_OPTIONS_LANG_CBO, STR_OPTIONS_LANG_TIP}, |
298
0123c0489940
(svn r304) -Fix: [967096] fullscreen. New button 'Fullscreen' in 'Game Options' menu which lets you set fullscreen ingame.
darkvater
parents:
193
diff
changeset
|
340 |
|
9764
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
341 |
{ WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 10, 179, 146, 190, STR_OPTIONS_RES, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
342 |
{ WWT_DROPDOWNIN, RESIZE_NONE, COLOUR_GREY, 20, 169, 160, 171, STR_OPTIONS_RES_CBO, STR_OPTIONS_RES_TIP}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
343 |
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREY, 149, 169, 176, 184, STR_EMPTY, STR_OPTIONS_FULLSCREEN_TIP}, |
0 | 344 |
|
9764
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
345 |
{ WWT_FRAME, RESIZE_NONE, COLOUR_GREY, 190, 359, 146, 190, STR_OPTIONS_SCREENSHOT_FORMAT, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
346 |
{ WWT_DROPDOWNIN, RESIZE_NONE, COLOUR_GREY, 200, 349, 160, 171, STR_OPTIONS_SCREENSHOT_FORMAT_CBO, STR_OPTIONS_SCREENSHOT_FORMAT_TIP}, |
0 | 347 |
|
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
164
diff
changeset
|
348 |
{ WIDGETS_END}, |
0 | 349 |
}; |
350 |
||
351 |
static const WindowDesc _game_options_desc = { |
|
7341
02515d0d4ced
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents:
7177
diff
changeset
|
352 |
WDP_CENTER, WDP_CENTER, 370, 239, 370, 239, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5688
diff
changeset
|
353 |
WC_GAME_OPTIONS, WC_NONE, |
2064
e6a2b42d0b15
(svn r2573) Codechange: Removed WDF_RESTORE_DPARAM, it's not needed with the new string system.
ludde
parents:
2055
diff
changeset
|
354 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
0 | 355 |
_game_options_widgets, |
356 |
}; |
|
357 |
||
358 |
||
6247 | 359 |
void ShowGameOptions() |
0 | 360 |
{ |
361 |
DeleteWindowById(WC_GAME_OPTIONS, 0); |
|
9291
cd518773f42a
(svn r13158) -Codechange: make a class of the GameOptionsWindow.
rubidium
parents:
9273
diff
changeset
|
362 |
new GameOptionsWindow(&_game_options_desc); |
0 | 363 |
} |
364 |
||
6247 | 365 |
extern void StartupEconomy(); |
46
c9bdf1d58df6
(svn r47) -Fix StartupEconomy warning in settings_gui.c
darkvater
parents:
42
diff
changeset
|
366 |
|
8136
53c188f8aa27
(svn r11698) -Change: Make the abort/accept process of the difficulty window a bit less confusing
skidd13
parents:
8131
diff
changeset
|
367 |
/* Widget definition for the game difficulty settings window */ |
0 | 368 |
static const Widget _game_difficulty_widgets[] = { |
9764
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
369 |
{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // GDW_CLOSEBOX |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
370 |
{ WWT_CAPTION, RESIZE_NONE, COLOUR_MAUVE, 11, 369, 0, 13, STR_6800_DIFFICULTY_LEVEL, STR_018C_WINDOW_TITLE_DRAG_THIS}, // GDW_CAPTION |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
371 |
{ WWT_PANEL, RESIZE_NONE, COLOUR_MAUVE, 0, 369, 14, 41, 0x0, STR_NULL}, // GDW_UPPER_BG |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
372 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 10, 96, 16, 27, STR_6801_EASY, STR_NULL}, // GDW_LVL_EASY |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
373 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 97, 183, 16, 27, STR_6802_MEDIUM, STR_NULL}, // GDW_LVL_MEDIUM |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
374 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 184, 270, 16, 27, STR_6803_HARD, STR_NULL}, // GDW_LVL_HARD |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
375 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 271, 357, 16, 27, STR_6804_CUSTOM, STR_NULL}, // GDW_LVL_CUSTOM |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
376 |
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_GREEN, 10, 357, 28, 39, STR_6838_SHOW_HI_SCORE_CHART, STR_NULL}, // GDW_HIGHSCORE |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
377 |
{ WWT_PANEL, RESIZE_NONE, COLOUR_MAUVE, 0, 369, 42, 262, 0x0, STR_NULL}, // GDW_SETTING_BG |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
378 |
{ WWT_PANEL, RESIZE_NONE, COLOUR_MAUVE, 0, 369, 263, 278, 0x0, STR_NULL}, // GDW_LOWER_BG |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
379 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 105, 185, 265, 276, STR_OPTIONS_SAVE_CHANGES, STR_NULL}, // GDW_ACCEPT |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
380 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, COLOUR_YELLOW, 186, 266, 265, 276, STR_012E_CANCEL, STR_NULL}, // GDW_CANCEL |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
164
diff
changeset
|
381 |
{ WIDGETS_END}, |
0 | 382 |
}; |
383 |
||
8136
53c188f8aa27
(svn r11698) -Change: Make the abort/accept process of the difficulty window a bit less confusing
skidd13
parents:
8131
diff
changeset
|
384 |
/* Window definition for the game difficulty settings window */ |
0 | 385 |
static const WindowDesc _game_difficulty_desc = { |
7341
02515d0d4ced
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents:
7177
diff
changeset
|
386 |
WDP_CENTER, WDP_CENTER, 370, 279, 370, 279, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5688
diff
changeset
|
387 |
WC_GAME_OPTIONS, WC_NONE, |
0 | 388 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, |
389 |
_game_difficulty_widgets, |
|
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
390 |
}; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
391 |
|
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
392 |
void SetDifficultyLevel(int mode, DifficultySettings *gm_opt); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
393 |
|
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
394 |
struct GameDifficultyWindow : public Window { |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
395 |
private: |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
396 |
static const uint GAME_DIFFICULTY_NUM = 18; |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
397 |
bool clicked_increase; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
398 |
uint8 clicked_button; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
399 |
uint8 timeout; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
400 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
401 |
/* Temporary holding place of values in the difficulty window until 'Save' is clicked */ |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
402 |
GameSettings opt_mod_temp; |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
403 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
404 |
enum { |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
405 |
GAMEDIFF_WND_TOP_OFFSET = 45, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
406 |
GAMEDIFF_WND_ROWSIZE = 9, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
407 |
NO_SETTINGS_BUTTON = 0xFF, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
408 |
}; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
409 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
410 |
/* Names of the game difficulty settings window */ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
411 |
enum GameDifficultyWidgets { |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
412 |
GDW_CLOSEBOX = 0, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
413 |
GDW_CAPTION, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
414 |
GDW_UPPER_BG, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
415 |
GDW_LVL_EASY, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
416 |
GDW_LVL_MEDIUM, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
417 |
GDW_LVL_HARD, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
418 |
GDW_LVL_CUSTOM, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
419 |
GDW_HIGHSCORE, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
420 |
GDW_SETTING_BG, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
421 |
GDW_LOWER_BG, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
422 |
GDW_ACCEPT, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
423 |
GDW_CANCEL, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
424 |
}; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
425 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
426 |
public: |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
427 |
GameDifficultyWindow() : Window(&_game_difficulty_desc) |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
428 |
{ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
429 |
/* Copy current settings (ingame or in intro) to temporary holding place |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
430 |
* change that when setting stuff, copy back on clicking 'OK' */ |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
431 |
this->opt_mod_temp = (_game_mode == GM_MENU) ? _settings_newgame : _settings_game; |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
432 |
this->clicked_increase = false; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
433 |
this->clicked_button = NO_SETTINGS_BUTTON; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
434 |
this->timeout = 0; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
435 |
/* Hide the closebox to make sure that the user aborts or confirms his changes */ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
436 |
this->HideWidget(GDW_CLOSEBOX); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
437 |
this->widget[GDW_CAPTION].left = 0; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
438 |
/* Setup disabled buttons when creating window |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
439 |
* disable all other difficulty buttons during gameplay except for 'custom' */ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
440 |
this->SetWidgetsDisabledState(_game_mode == GM_NORMAL, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
441 |
GDW_LVL_EASY, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
442 |
GDW_LVL_MEDIUM, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
443 |
GDW_LVL_HARD, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
444 |
GDW_LVL_CUSTOM, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
445 |
WIDGET_LIST_END); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
446 |
this->SetWidgetDisabledState(GDW_HIGHSCORE, _game_mode == GM_EDITOR || _networking); // highscore chart in multiplayer |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
447 |
this->SetWidgetDisabledState(GDW_ACCEPT, _networking && !_network_server); // Save-button in multiplayer (and if client) |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
448 |
this->LowerWidget(GDW_LVL_EASY + this->opt_mod_temp.difficulty.diff_level); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
449 |
this->FindWindowPlacementAndResize(&_game_difficulty_desc); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
450 |
} |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
451 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
452 |
virtual void OnPaint() |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
453 |
{ |
9273
35e0224ea8f1
(svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents:
9246
diff
changeset
|
454 |
this->DrawWidgets(); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
455 |
|
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
456 |
uint i; |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
457 |
const SettingDesc *sd = GetPatchFromName("difficulty.max_no_competitors", &i); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
458 |
int y = GAMEDIFF_WND_TOP_OFFSET; |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
459 |
for (i = 0; i < GAME_DIFFICULTY_NUM; i++, sd++) { |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
460 |
const SettingDescBase *sdb = &sd->desc; |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
461 |
int32 value = (int32)ReadValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
462 |
bool editable = (_game_mode == GM_MENU || (sdb->flags & SGF_NEWGAME_ONLY) == 0); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
463 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
464 |
DrawArrowButtons(5, y, 3, |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
465 |
(this->clicked_button == i) ? 1 + !!this->clicked_increase : 0, |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
466 |
editable && sdb->min != value, |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
467 |
editable && sdb->max != value); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
468 |
|
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
469 |
value += sdb->str; |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
470 |
SetDParam(0, value); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
471 |
DrawString(30, y, STR_6805_MAXIMUM_NO_COMPETITORS + i, TC_FROMSTRING); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
472 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
473 |
y += GAMEDIFF_WND_ROWSIZE + 2; // space items apart a bit |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
474 |
} |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
475 |
} |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
476 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
477 |
virtual void OnClick(Point pt, int widget) |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
478 |
{ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
479 |
switch (widget) { |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
480 |
case GDW_SETTING_BG: { /* Difficulty settings widget, decode click */ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
481 |
/* Don't allow clients to make any changes */ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
482 |
if (_networking && !_network_server) return; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
483 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
484 |
const int x = pt.x - 5; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
485 |
if (!IsInsideMM(x, 0, 21)) return; // Button area |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
486 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
487 |
const int y = pt.y - GAMEDIFF_WND_TOP_OFFSET; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
488 |
if (y < 0) return; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
489 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
490 |
/* Get button from Y coord. */ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
491 |
const uint8 btn = y / (GAMEDIFF_WND_ROWSIZE + 2); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
492 |
if (btn >= GAME_DIFFICULTY_NUM || y % (GAMEDIFF_WND_ROWSIZE + 2) >= 9) return; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
493 |
|
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
494 |
uint i; |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
495 |
const SettingDesc *sd = GetPatchFromName("difficulty.max_no_competitors", &i) + btn; |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
496 |
const SettingDescBase *sdb = &sd->desc; |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
497 |
|
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
498 |
/* Clicked disabled button? */ |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
499 |
bool editable = (_game_mode == GM_MENU || (sdb->flags & SGF_NEWGAME_ONLY) == 0); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
500 |
if (!editable) return; |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
501 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
502 |
this->timeout = 5; |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
503 |
int32 val = (int32)ReadValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
504 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
505 |
if (x >= 10) { |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
506 |
/* Increase button clicked */ |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
507 |
val = min(val + sdb->interval, sdb->max); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
508 |
this->clicked_increase = true; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
509 |
} else { |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
510 |
/* Decrease button clicked */ |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
511 |
val -= sdb->interval; |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
512 |
val = max(val, sdb->min); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
513 |
this->clicked_increase = false; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
514 |
} |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
515 |
this->clicked_button = btn; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
516 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
517 |
/* save value in temporary variable */ |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
518 |
WriteValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv, val); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
519 |
this->RaiseWidget(GDW_LVL_EASY + this->opt_mod_temp.difficulty.diff_level); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
520 |
SetDifficultyLevel(3, &this->opt_mod_temp.difficulty); // set difficulty level to custom |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
521 |
this->LowerWidget(GDW_LVL_CUSTOM); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
522 |
this->SetDirty(); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
523 |
} break; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
524 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
525 |
case GDW_LVL_EASY: |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
526 |
case GDW_LVL_MEDIUM: |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
527 |
case GDW_LVL_HARD: |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
528 |
case GDW_LVL_CUSTOM: |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
529 |
/* temporarily change difficulty level */ |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
530 |
this->RaiseWidget(GDW_LVL_EASY + this->opt_mod_temp.difficulty.diff_level); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
531 |
SetDifficultyLevel(widget - GDW_LVL_EASY, &this->opt_mod_temp.difficulty); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
532 |
this->LowerWidget(GDW_LVL_EASY + this->opt_mod_temp.difficulty.diff_level); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
533 |
this->SetDirty(); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
534 |
break; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
535 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
536 |
case GDW_HIGHSCORE: // Highscore Table |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
537 |
ShowHighscoreTable(this->opt_mod_temp.difficulty.diff_level, -1); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
538 |
break; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
539 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
540 |
case GDW_ACCEPT: { // Save button - save changes |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
541 |
GameSettings *opt_ptr = (_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game; |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
542 |
|
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
543 |
uint i; |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
544 |
const SettingDesc *sd = GetPatchFromName("difficulty.max_no_competitors", &i); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
545 |
for (uint btn = 0; btn != GAME_DIFFICULTY_NUM; btn++, sd++) { |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
546 |
int32 new_val = (int32)ReadValue(GetVariableAddress(&this->opt_mod_temp, &sd->save), sd->save.conv); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
547 |
int32 cur_val = (int32)ReadValue(GetVariableAddress(opt_ptr, &sd->save), sd->save.conv); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
548 |
/* if setting has changed, change it */ |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
549 |
if (new_val != cur_val) { |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
550 |
DoCommandP(0, i + btn, new_val, NULL, CMD_CHANGE_PATCH_SETTING); |
9346 | 551 |
} |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
552 |
} |
9359
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
553 |
|
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
554 |
GetPatchFromName("difficulty.diff_level", &i); |
3a8554ac1cb8
(svn r13256) -Codechange: merge the OPTS and PATS chuncks.
rubidium
parents:
9358
diff
changeset
|
555 |
DoCommandP(0, i, this->opt_mod_temp.difficulty.diff_level, NULL, CMD_CHANGE_PATCH_SETTING); |
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
556 |
delete this; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
557 |
/* If we are in the editor, we should reload the economy. |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
558 |
* This way when you load a game, the max loan and interest rate |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
559 |
* are loaded correctly. */ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
560 |
if (_game_mode == GM_EDITOR) StartupEconomy(); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
561 |
break; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
562 |
} |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
563 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
564 |
case GDW_CANCEL: // Cancel button - close window, abandon changes |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
565 |
delete this; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
566 |
break; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
567 |
} |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
568 |
} |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
569 |
|
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
570 |
virtual void OnTick() |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
571 |
{ |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
572 |
if (this->timeout != 0) { |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
573 |
this->timeout--; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
574 |
if (this->timeout == 0) this->clicked_button = NO_SETTINGS_BUTTON; |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
575 |
this->SetDirty(); |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
576 |
} |
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
577 |
} |
0 | 578 |
}; |
579 |
||
6247 | 580 |
void ShowGameDifficulty() |
0 | 581 |
{ |
582 |
DeleteWindowById(WC_GAME_OPTIONS, 0); |
|
9231
45a12ad6ba49
(svn r13097) -Codechange: make a class of the GameDifficultyWindow.
glx
parents:
9164
diff
changeset
|
583 |
new GameDifficultyWindow(); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
179
diff
changeset
|
584 |
} |
0 | 585 |
|
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
586 |
static const char *_patches_ui[] = { |
9354
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
587 |
"gui.vehicle_speed", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
588 |
"gui.status_long_date", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
589 |
"gui.show_finances", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
590 |
"gui.autoscroll", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
591 |
"gui.reverse_scroll", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
592 |
"gui.smooth_scroll", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
593 |
"gui.errmsg_duration", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
594 |
"gui.toolbar_pos", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
595 |
"gui.measure_tooltip", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
596 |
"gui.window_snap_radius", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
597 |
"gui.population_in_label", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
598 |
"gui.link_terraform_toolbar", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
599 |
"gui.liveries", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
600 |
"gui.prefer_teamchat", |
6289
9f468eccc674
(svn r9111) -Feature: [OSX] mighty mice and touchpads can now scroll the map (in all directions)
bjarni
parents:
6259
diff
changeset
|
601 |
/* While the horizontal scrollwheel scrolling is written as general code, only |
9f468eccc674
(svn r9111) -Feature: [OSX] mighty mice and touchpads can now scroll the map (in all directions)
bjarni
parents:
6259
diff
changeset
|
602 |
* the cocoa (OSX) driver generates input for it. |
6296
a6bed59002c6
(svn r9126) -Feature: "Function of scrollwheel" can now be set to off as well
bjarni
parents:
6293
diff
changeset
|
603 |
* Since it's also able to completely disable the scrollwheel will we display it on all platforms anyway */ |
9354
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
604 |
"gui.scrollwheel_scrolling", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
605 |
"gui.scrollwheel_multiplier", |
7485
d8799216928a
(svn r10996) -Feature: [OSX] added more options for right click emulation (controlled from the interface tab in the patch window)
bjarni
parents:
7341
diff
changeset
|
606 |
#ifdef __APPLE__ |
d8799216928a
(svn r10996) -Feature: [OSX] added more options for right click emulation (controlled from the interface tab in the patch window)
bjarni
parents:
7341
diff
changeset
|
607 |
/* We might need to emulate a right mouse button on mac */ |
9354
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
608 |
"gui.right_mouse_btn_emulation", |
7485
d8799216928a
(svn r10996) -Feature: [OSX] added more options for right click emulation (controlled from the interface tab in the patch window)
bjarni
parents:
7341
diff
changeset
|
609 |
#endif |
9354
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
610 |
"gui.pause_on_newgame", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
611 |
"gui.advanced_vehicle_list", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
612 |
"gui.loading_indicators", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
613 |
"gui.timetable_in_ticks", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
614 |
"gui.default_rail_type", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
615 |
"gui.always_build_infrastructure", |
9785
2005c34d0811
(svn r13927) -Add [YAPP]: Draw reserved tracks darker, toggeld by a patch setting. (michi_cc)
rubidium
parents:
9770
diff
changeset
|
616 |
"gui.show_track_reservation", |
21 | 617 |
}; |
618 |
||
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
619 |
static const char *_patches_construction[] = { |
9354
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
620 |
"construction.build_on_slopes", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
621 |
"construction.autoslope", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
622 |
"construction.extra_dynamite", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
623 |
"construction.longbridges", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
624 |
"construction.signal_side", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
625 |
"station.always_small_airport", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
626 |
"gui.enable_signal_gui", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
627 |
"gui.drag_signals_density", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
628 |
"game_creation.oil_refinery_limit", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
629 |
"gui.semaphore_build_before", |
9793
359d2460833b
(svn r13935) -Codechange [YAPP]: PBS signals can now be built with the normal signal tools. (michi_cc)
rubidium
parents:
9785
diff
changeset
|
630 |
"gui.default_signal_type", |
359d2460833b
(svn r13935) -Codechange [YAPP]: PBS signals can now be built with the normal signal tools. (michi_cc)
rubidium
parents:
9785
diff
changeset
|
631 |
"gui.cycle_signal_types", |
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
632 |
}; |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
633 |
|
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
634 |
static const char *_patches_stations[] = { |
9354
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
635 |
"station.join_stations", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
636 |
"order.improved_load", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
637 |
"order.selectgoods", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
638 |
"gui.new_nonstop", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
639 |
"station.nonuniform_stations", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
640 |
"station.station_spread", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
641 |
"order.serviceathelipad", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
642 |
"station.modified_catchment", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
643 |
"order.gradual_loading", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
644 |
"construction.road_stop_on_town_road", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
645 |
"station.adjacent_stations", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
646 |
"economy.station_noise_level", |
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
647 |
}; |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
648 |
|
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
649 |
static const char *_patches_economy[] = { |
9354
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
650 |
"economy.inflation", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
651 |
"construction.raw_industry_construction", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
652 |
"economy.multiple_industry_per_town", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
653 |
"economy.same_industry_close", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
654 |
"economy.bribe", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
655 |
"economy.exclusive_rights", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
656 |
"economy.give_money", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
657 |
"gui.colored_news_year", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
658 |
"gui.ending_year", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
659 |
"economy.smooth_economy", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
660 |
"economy.allow_shares", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
661 |
"economy.town_layout", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
662 |
"economy.mod_road_rebuild", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
663 |
"economy.town_growth_rate", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
664 |
"economy.larger_towns", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
665 |
"economy.initial_city_size", |
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
666 |
}; |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
667 |
|
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
668 |
static const char *_patches_ai[] = { |
9354
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
669 |
"ai.ainew_active", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
670 |
"ai.ai_in_multiplayer", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
671 |
"ai.ai_disable_veh_train", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
672 |
"ai.ai_disable_veh_roadveh", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
673 |
"ai.ai_disable_veh_aircraft", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
674 |
"ai.ai_disable_veh_ship", |
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
675 |
}; |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
676 |
|
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
677 |
static const char *_patches_vehicles[] = { |
9354
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
678 |
"vehicle.realistic_acceleration", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
679 |
"pf.forbid_90_deg", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
680 |
"vehicle.mammoth_trains", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
681 |
"order.gotodepot", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
682 |
"pf.roadveh_queue", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
683 |
"pf.pathfinder_for_trains", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
684 |
"pf.pathfinder_for_roadvehs", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
685 |
"pf.pathfinder_for_ships", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
686 |
"gui.train_income_warn", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
687 |
"gui.order_review_system", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
688 |
"vehicle.never_expire_vehicles", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
689 |
"gui.lost_train_warn", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
690 |
"gui.autorenew", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
691 |
"gui.autorenew_months", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
692 |
"gui.autorenew_money", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
693 |
"vehicle.max_trains", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
694 |
"vehicle.max_roadveh", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
695 |
"vehicle.max_aircraft", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
696 |
"vehicle.max_ships", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
697 |
"vehicle.servint_ispercent", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
698 |
"vehicle.servint_trains", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
699 |
"vehicle.servint_roadveh", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
700 |
"vehicle.servint_ships", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
701 |
"vehicle.servint_aircraft", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
702 |
"order.no_servicing_if_no_breakdowns", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
703 |
"vehicle.wagon_speed_limits", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
704 |
"vehicle.disable_elrails", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
705 |
"vehicle.freight_trains", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
706 |
"vehicle.plane_speed", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
707 |
"order.timetabling", |
845e07db4549
(svn r13251) -Codechange: rename _patches to _settings as that is more logic.
rubidium
parents:
9346
diff
changeset
|
708 |
"vehicle.dynamic_engines", |
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
709 |
}; |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
710 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
711 |
struct PatchEntry { |
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
712 |
const SettingDesc *setting; |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
713 |
uint index; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
714 |
}; |
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
715 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
716 |
struct PatchPage { |
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
717 |
const char **names; |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
718 |
PatchEntry *entries; |
3118
adc86793eee1
(svn r3722) - [4/4] Present the game with a unified structure for the configuration-ini, saveload, console and gui representations of the settings. The last part finishes the transition with the merging of the settings_gui table(s).
Darkvater
parents:
3107
diff
changeset
|
719 |
byte num; |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
720 |
}; |
0 | 721 |
|
3247
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
722 |
/* PatchPage holds the categories, the number of elements in each category |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
723 |
* and (in NULL) a dynamic array of settings based on the string-representations |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
724 |
* of the settings. This way there is no worry about indeces, and such */ |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
725 |
static PatchPage _patches_page[] = { |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
726 |
{_patches_ui, NULL, lengthof(_patches_ui)}, |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
727 |
{_patches_construction, NULL, lengthof(_patches_construction)}, |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
728 |
{_patches_vehicles, NULL, lengthof(_patches_vehicles)}, |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
729 |
{_patches_stations, NULL, lengthof(_patches_stations)}, |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
730 |
{_patches_economy, NULL, lengthof(_patches_economy)}, |
ede7a53941b2
(svn r3930) - [Patches] Change the GUI-patch options from indeces to string representations. Not only makes this the part more humanly readable, but saves us from rewriting the whole index when a patch is added/removed/changed
Darkvater
parents:
3206
diff
changeset
|
731 |
{_patches_ai, NULL, lengthof(_patches_ai)}, |
0 | 732 |
}; |
733 |
||
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
734 |
enum PatchesSelectionWidgets { |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
735 |
PATCHSEL_OPTIONSPANEL = 3, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
736 |
PATCHSEL_INTERFACE, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
737 |
PATCHSEL_CONSTRUCTION, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
738 |
PATCHSEL_VEHICLES, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
739 |
PATCHSEL_STATIONS, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
740 |
PATCHSEL_ECONOMY, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
741 |
PATCHSEL_COMPETITORS |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
742 |
}; |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
743 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
744 |
struct PatchesSelectionWindow : Window { |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
745 |
static GameSettings *patches_ptr; |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
746 |
static int patches_max; |
3118
adc86793eee1
(svn r3722) - [4/4] Present the game with a unified structure for the configuration-ini, saveload, console and gui representations of the settings. The last part finishes the transition with the merging of the settings_gui table(s).
Darkvater
parents:
3107
diff
changeset
|
747 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
748 |
int page; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
749 |
int entry; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
750 |
int click; |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
751 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
752 |
PatchesSelectionWindow(const WindowDesc *desc) : Window(desc) |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
753 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
754 |
static bool first_time = true; |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
755 |
|
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
756 |
patches_ptr = (_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game; |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
757 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
758 |
/* Build up the dynamic settings-array only once per OpenTTD session */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
759 |
if (first_time) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
760 |
PatchPage *page; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
761 |
for (page = &_patches_page[0]; page != endof(_patches_page); page++) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
762 |
uint i; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
763 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
764 |
if (patches_max < page->num) patches_max = page->num; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
765 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
766 |
page->entries = MallocT<PatchEntry>(page->num); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
767 |
for (i = 0; i != page->num; i++) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
768 |
uint index; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
769 |
const SettingDesc *sd = GetPatchFromName(page->names[i], &index); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
770 |
assert(sd != NULL); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
771 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
772 |
page->entries[i].setting = sd; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
773 |
page->entries[i].index = index; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
774 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
775 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
776 |
first_time = false; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
777 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
778 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
779 |
/* Resize the window to fit the largest patch tab */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
780 |
ResizeWindowForWidget(this, PATCHSEL_OPTIONSPANEL, 0, patches_max * 11); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
781 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
782 |
/* Recentre the window for the new size */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
783 |
this->top = this->top - (patches_max * 11) / 2; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
784 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
785 |
this->LowerWidget(4); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
786 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
787 |
this->FindWindowPlacementAndResize(desc); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
788 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
789 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
790 |
virtual void OnPaint() |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
791 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
792 |
int x, y; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
793 |
const PatchPage *page = &_patches_page[this->page]; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
794 |
uint i; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
795 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
796 |
/* Set up selected category */ |
9273
35e0224ea8f1
(svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents:
9246
diff
changeset
|
797 |
this->DrawWidgets(); |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
798 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
799 |
x = 5; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
800 |
y = 47; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
801 |
for (i = 0; i != page->num; i++) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
802 |
const SettingDesc *sd = page->entries[i].setting; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
803 |
const SettingDescBase *sdb = &sd->desc; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
804 |
const void *var = GetVariableAddress(patches_ptr, &sd->save); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
805 |
bool editable = true; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
806 |
bool disabled = false; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
807 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
808 |
// We do not allow changes of some items when we are a client in a networkgame |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
809 |
if (!(sd->save.conv & SLF_NETWORK_NO) && _networking && !_network_server) editable = false; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
810 |
if ((sdb->flags & SGF_NETWORK_ONLY) && !_networking) editable = false; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
811 |
if ((sdb->flags & SGF_NO_NETWORK) && _networking) editable = false; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
812 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
813 |
if (sdb->cmd == SDT_BOOLX) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
814 |
static const int _bool_ctabs[2][2] = {{9, 4}, {7, 6}}; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
815 |
/* Draw checkbox for boolean-value either on/off */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
816 |
bool on = (*(bool*)var); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
817 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
818 |
DrawFrameRect(x, y, x + 19, y + 8, _bool_ctabs[!!on][!!editable], on ? FR_LOWERED : FR_NONE); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
819 |
SetDParam(0, on ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
820 |
} else { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
821 |
int32 value; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
822 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
823 |
value = (int32)ReadValue(var, sd->save.conv); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
824 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
825 |
/* Draw [<][>] boxes for settings of an integer-type */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
826 |
DrawArrowButtons(x, y, 3, this->click - (i * 2), (editable && value != sdb->min), (editable && value != sdb->max)); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
827 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
828 |
disabled = (value == 0) && (sdb->flags & SGF_0ISDISABLED); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
829 |
if (disabled) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
830 |
SetDParam(0, STR_CONFIG_PATCHES_DISABLED); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
831 |
} else { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
832 |
if (sdb->flags & SGF_CURRENCY) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
833 |
SetDParam(0, STR_CONFIG_PATCHES_CURRENCY); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
834 |
} else if (sdb->flags & SGF_MULTISTRING) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
835 |
SetDParam(0, sdb->str + value + 1); |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
836 |
} else { |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
837 |
SetDParam(0, (sdb->flags & SGF_NOCOMMA) ? STR_CONFIG_PATCHES_INT32 : STR_7024); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
838 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
839 |
SetDParam(1, value); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
840 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
841 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
842 |
DrawString(30, y, (sdb->str) + disabled, TC_FROMSTRING); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
843 |
y += 11; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
844 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
845 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
846 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
847 |
virtual void OnClick(Point pt, int widget) |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
848 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
849 |
switch (widget) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
850 |
case PATCHSEL_OPTIONSPANEL: { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
851 |
const PatchPage *page = &_patches_page[this->page]; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
852 |
const SettingDesc *sd; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
853 |
void *var; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
854 |
int32 value; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
855 |
int x, y; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
856 |
byte btn; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
857 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
858 |
y = pt.y - 46 - 1; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
859 |
if (y < 0) return; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
860 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
861 |
x = pt.x - 5; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
862 |
if (x < 0) return; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
863 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
864 |
btn = y / 11; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
865 |
if (y % 11 > 9) return; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
866 |
if (btn >= page->num) return; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
867 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
868 |
sd = page->entries[btn].setting; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
869 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
870 |
/* return if action is only active in network, or only settable by server */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
871 |
if (!(sd->save.conv & SLF_NETWORK_NO) && _networking && !_network_server) return; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
872 |
if ((sd->desc.flags & SGF_NETWORK_ONLY) && !_networking) return; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
873 |
if ((sd->desc.flags & SGF_NO_NETWORK) && _networking) return; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
874 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
875 |
var = GetVariableAddress(patches_ptr, &sd->save); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
876 |
value = (int32)ReadValue(var, sd->save.conv); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
877 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
878 |
/* clicked on the icon on the left side. Either scroller or bool on/off */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
879 |
if (x < 21) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
880 |
const SettingDescBase *sdb = &sd->desc; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
881 |
int32 oldvalue = value; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
882 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
883 |
switch (sdb->cmd) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
884 |
case SDT_BOOLX: value ^= 1; break; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
885 |
case SDT_NUMX: { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
886 |
/* Add a dynamic step-size to the scroller. In a maximum of |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
887 |
* 50-steps you should be able to get from min to max, |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
888 |
* unless specified otherwise in the 'interval' variable |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
889 |
* of the current patch. */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
890 |
uint32 step = (sdb->interval == 0) ? ((sdb->max - sdb->min) / 50) : sdb->interval; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
891 |
if (step == 0) step = 1; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
892 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
893 |
// don't allow too fast scrolling |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
894 |
if ((this->flags4 & WF_TIMEOUT_MASK) > 2 << WF_TIMEOUT_SHL) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
895 |
_left_button_clicked = false; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
896 |
return; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
897 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
898 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
899 |
/* Increase or decrease the value and clamp it to extremes */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
900 |
if (x >= 10) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
901 |
value += step; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
902 |
if (value > sdb->max) value = sdb->max; |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
903 |
} else { |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
904 |
value -= step; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
905 |
if (value < sdb->min) value = (sdb->flags & SGF_0ISDISABLED) ? 0 : sdb->min; |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
906 |
} |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
907 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
908 |
/* Set up scroller timeout for numeric values */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
909 |
if (value != oldvalue && !(sd->desc.flags & SGF_MULTISTRING)) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
910 |
this->click = btn * 2 + 1 + ((x >= 10) ? 1 : 0); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
911 |
this->flags4 |= 5 << WF_TIMEOUT_SHL; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
912 |
_left_button_clicked = false; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
913 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
914 |
} break; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
915 |
default: NOT_REACHED(); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
916 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
917 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
918 |
if (value != oldvalue) { |
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
919 |
SetPatchValue(page->entries[btn].index, value); |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
920 |
this->SetDirty(); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
921 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
922 |
} else { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
923 |
/* only open editbox for types that its sensible for */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
924 |
if (sd->desc.cmd != SDT_BOOLX && !(sd->desc.flags & SGF_MULTISTRING)) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
925 |
/* Show the correct currency-translated value */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
926 |
if (sd->desc.flags & SGF_CURRENCY) value *= _currency->rate; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
927 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
928 |
this->entry = btn; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
929 |
SetDParam(0, value); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
930 |
ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_CONFIG_PATCHES_QUERY_CAPT, 10, 100, this, CS_NUMERAL); |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
931 |
} |
0 | 932 |
} |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
933 |
} break; |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
934 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
935 |
case PATCHSEL_INTERFACE: case PATCHSEL_CONSTRUCTION: case PATCHSEL_VEHICLES: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
936 |
case PATCHSEL_STATIONS: case PATCHSEL_ECONOMY: case PATCHSEL_COMPETITORS: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
937 |
this->RaiseWidget(this->page + PATCHSEL_INTERFACE); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
938 |
this->page = widget - PATCHSEL_INTERFACE; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
939 |
this->LowerWidget(this->page + PATCHSEL_INTERFACE); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
940 |
DeleteWindowById(WC_QUERY_STRING, 0); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
941 |
this->SetDirty(); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
942 |
break; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
943 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
944 |
} |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
945 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
946 |
virtual void OnTimeout() |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
947 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
948 |
this->click = 0; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
949 |
this->SetDirty(); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
950 |
} |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
951 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
952 |
virtual void OnQueryTextFinished(char *str) |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
953 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
954 |
if (!StrEmpty(str)) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
955 |
const PatchEntry *pe = &_patches_page[this->page].entries[this->entry]; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
956 |
const SettingDesc *sd = pe->setting; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
957 |
int32 value = atoi(str); |
3118
adc86793eee1
(svn r3722) - [4/4] Present the game with a unified structure for the configuration-ini, saveload, console and gui representations of the settings. The last part finishes the transition with the merging of the settings_gui table(s).
Darkvater
parents:
3107
diff
changeset
|
958 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
959 |
/* Save the correct currency-translated value */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
960 |
if (sd->desc.flags & SGF_CURRENCY) value /= _currency->rate; |
0 | 961 |
|
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
962 |
SetPatchValue(pe->index, value); |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
963 |
this->SetDirty(); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
964 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
965 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
966 |
}; |
8190
81dd3c9929c8
(svn r11753) -Codechange: re-indent the switch case structures, as to be more code style oriented.
belugas
parents:
8189
diff
changeset
|
967 |
|
9413
7042a8ec3fa8
(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
parents:
9359
diff
changeset
|
968 |
GameSettings *PatchesSelectionWindow::patches_ptr = NULL; |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
969 |
int PatchesSelectionWindow::patches_max = 0; |
0 | 970 |
|
971 |
static const Widget _patches_selection_widgets[] = { |
|
9764
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
972 |
{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_MAUVE, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
973 |
{ WWT_CAPTION, RESIZE_NONE, COLOUR_MAUVE, 11, 369, 0, 13, STR_CONFIG_PATCHES_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
974 |
{ WWT_PANEL, RESIZE_NONE, COLOUR_MAUVE, 0, 369, 14, 41, 0x0, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
975 |
{ WWT_PANEL, RESIZE_NONE, COLOUR_MAUVE, 0, 369, 42, 50, 0x0, STR_NULL}, |
0 | 976 |
|
9764
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
977 |
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 10, 96, 16, 27, STR_CONFIG_PATCHES_GUI, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
978 |
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 97, 183, 16, 27, STR_CONFIG_PATCHES_CONSTRUCTION, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
979 |
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 184, 270, 16, 27, STR_CONFIG_PATCHES_VEHICLES, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
980 |
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 271, 357, 16, 27, STR_CONFIG_PATCHES_STATIONS, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
981 |
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 10, 96, 28, 39, STR_CONFIG_PATCHES_ECONOMY, STR_NULL}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
982 |
{ WWT_TEXTBTN, RESIZE_NONE, COLOUR_YELLOW, 97, 183, 28, 39, STR_CONFIG_PATCHES_AI, STR_NULL}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
164
diff
changeset
|
983 |
{ WIDGETS_END}, |
0 | 984 |
}; |
985 |
||
986 |
static const WindowDesc _patches_selection_desc = { |
|
8593
e9075b7c9448
(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
parents:
8551
diff
changeset
|
987 |
WDP_CENTER, WDP_CENTER, 370, 51, 370, 51, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5688
diff
changeset
|
988 |
WC_GAME_OPTIONS, WC_NONE, |
0 | 989 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET, |
990 |
_patches_selection_widgets, |
|
991 |
}; |
|
992 |
||
6247 | 993 |
void ShowPatchesSelection() |
0 | 994 |
{ |
995 |
DeleteWindowById(WC_GAME_OPTIONS, 0); |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
996 |
new PatchesSelectionWindow(&_patches_selection_desc); |
0 | 997 |
} |
478
3a161108a15d
(svn r745) Added newgrf GUI (in options menu)\nThe interface currently only displays the installed grf sets, you can't (de)activate them through the gui yet
dominik
parents:
430
diff
changeset
|
998 |
|
3a161108a15d
(svn r745) Added newgrf GUI (in options menu)\nThe interface currently only displays the installed grf sets, you can't (de)activate them through the gui yet
dominik
parents:
430
diff
changeset
|
999 |
|
4211
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1000 |
/** |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1001 |
* Draw [<][>] boxes. |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1002 |
* @param x the x position to draw |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1003 |
* @param y the y position to draw |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1004 |
* @param ctab the color of the buttons |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1005 |
* @param state 0 = none clicked, 1 = first clicked, 2 = second clicked |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1006 |
* @param clickable_left is the left button clickable? |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1007 |
* @param clickable_right is the right button clickable? |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1008 |
*/ |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1009 |
void DrawArrowButtons(int x, int y, int ctab, byte state, bool clickable_left, bool clickable_right) |
759
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1010 |
{ |
9607
5a5728fb702a
(svn r13649) -Codechange: Split the GfxFillRect() special flags from 'color' into their own parameter.
frosch
parents:
9581
diff
changeset
|
1011 |
int color = _colour_gradient[COLOUR_YELLOW][2]; |
3107
d743cfa2d832
(svn r3710) - Use the general function DrawArrowButtons() instead of doing it manually. The function has two parameters added, colour and an enabled flag.
Darkvater
parents:
2952
diff
changeset
|
1012 |
|
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
1013 |
DrawFrameRect(x, y + 1, x + 9, y + 9, ctab, (state == 1) ? FR_LOWERED : FR_NONE); |
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
1014 |
DrawFrameRect(x + 10, y + 1, x + 19, y + 9, ctab, (state == 2) ? FR_LOWERED : FR_NONE); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7742
diff
changeset
|
1015 |
DrawStringCentered(x + 5, y + 1, STR_6819, TC_FROMSTRING); // [<] |
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7742
diff
changeset
|
1016 |
DrawStringCentered(x + 15, y + 1, STR_681A, TC_FROMSTRING); // [>] |
4211
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1017 |
|
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1018 |
/* Grey out the buttons that aren't clickable */ |
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1019 |
if (!clickable_left) |
9607
5a5728fb702a
(svn r13649) -Codechange: Split the GfxFillRect() special flags from 'color' into their own parameter.
frosch
parents:
9581
diff
changeset
|
1020 |
GfxFillRect(x + 1, y + 1, x + 1 + 8, y + 8, color, FILLRECT_CHECKER); |
4211
5ee54ab361c9
(svn r5714) Backport from branches/TGP (r5701 and r5711)
miham
parents:
4196
diff
changeset
|
1021 |
if (!clickable_right) |
9607
5a5728fb702a
(svn r13649) -Codechange: Split the GfxFillRect() special flags from 'color' into their own parameter.
frosch
parents:
9581
diff
changeset
|
1022 |
GfxFillRect(x + 11, y + 1, x + 11 + 8, y + 8, color, FILLRECT_CHECKER); |
759
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1023 |
} |
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1024 |
|
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1025 |
/** These are not, strickly speaking, widget enums, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1026 |
* since they have been changed as line coordinates. |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1027 |
* So, rather, they are more like order of appearance */ |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1028 |
enum CustomCurrenciesWidgets { |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1029 |
CUSTCURR_EXCHANGERATE = 0, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1030 |
CUSTCURR_SEPARATOR, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1031 |
CUSTCURR_PREFIX, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1032 |
CUSTCURR_SUFFIX, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1033 |
CUSTCURR_TO_EURO, |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1034 |
}; |
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1035 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1036 |
struct CustomCurrencyWindow : Window { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1037 |
char separator[2]; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1038 |
int click; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1039 |
int query_widget; |
4488
1be86990ea3e
(svn r6273) Clean up the custom currency window handler a bit
tron
parents:
4444
diff
changeset
|
1040 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1041 |
CustomCurrencyWindow(const WindowDesc *desc) : Window(desc) |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1042 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1043 |
this->separator[0] = _custom_currency.separator; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1044 |
this->separator[1] = '\0'; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1045 |
this->FindWindowPlacementAndResize(desc); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1046 |
} |
812
65ecc321b3db
(svn r1283) -Add: AutoRenew is now a client-side patch instead of a game-side patch
truelight
parents:
788
diff
changeset
|
1047 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1048 |
virtual void OnPaint() |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1049 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1050 |
int x; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1051 |
int y = 20; |
9273
35e0224ea8f1
(svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents:
9246
diff
changeset
|
1052 |
this->DrawWidgets(); |
2639 | 1053 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1054 |
/* exchange rate */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1055 |
DrawArrowButtons(10, y, 3, GB(this->click, 0, 2), true, true); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1056 |
SetDParam(0, 1); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1057 |
SetDParam(1, 1); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1058 |
DrawString(35, y + 1, STR_CURRENCY_EXCHANGE_RATE, TC_FROMSTRING); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1059 |
y += 12; |
2639 | 1060 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1061 |
/* separator */ |
9770
8c260fb382f8
(svn r13907) -Codechange: Replace a number with Colours enum on DrawFrameRect usage
belugas
parents:
9764
diff
changeset
|
1062 |
DrawFrameRect(10, y + 1, 29, y + 9, COLOUR_DARK_BLUE, GB(this->click, 2, 2) ? FR_LOWERED : FR_NONE); |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1063 |
x = DrawString(35, y + 1, STR_CURRENCY_SEPARATOR, TC_FROMSTRING); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1064 |
DoDrawString(this->separator, x + 4, y + 1, TC_ORANGE); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1065 |
y += 12; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1066 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1067 |
/* prefix */ |
9770
8c260fb382f8
(svn r13907) -Codechange: Replace a number with Colours enum on DrawFrameRect usage
belugas
parents:
9764
diff
changeset
|
1068 |
DrawFrameRect(10, y + 1, 29, y + 9, COLOUR_DARK_BLUE, GB(this->click, 4, 2) ? FR_LOWERED : FR_NONE); |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1069 |
x = DrawString(35, y + 1, STR_CURRENCY_PREFIX, TC_FROMSTRING); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1070 |
DoDrawString(_custom_currency.prefix, x + 4, y + 1, TC_ORANGE); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1071 |
y += 12; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1072 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1073 |
/* suffix */ |
9770
8c260fb382f8
(svn r13907) -Codechange: Replace a number with Colours enum on DrawFrameRect usage
belugas
parents:
9764
diff
changeset
|
1074 |
DrawFrameRect(10, y + 1, 29, y + 9, COLOUR_DARK_BLUE, GB(this->click, 6, 2) ? FR_LOWERED : FR_NONE); |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1075 |
x = DrawString(35, y + 1, STR_CURRENCY_SUFFIX, TC_FROMSTRING); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1076 |
DoDrawString(_custom_currency.suffix, x + 4, y + 1, TC_ORANGE); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1077 |
y += 12; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1078 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1079 |
/* switch to euro */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1080 |
DrawArrowButtons(10, y, 3, GB(this->click, 8, 2), true, true); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1081 |
SetDParam(0, _custom_currency.to_euro); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1082 |
DrawString(35, y + 1, (_custom_currency.to_euro != CF_NOEURO) ? STR_CURRENCY_SWITCH_TO_EURO : STR_CURRENCY_SWITCH_TO_EURO_NEVER, TC_FROMSTRING); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1083 |
y += 12; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1084 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1085 |
/* Preview */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1086 |
y += 12; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1087 |
SetDParam(0, 10000); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1088 |
DrawString(35, y + 1, STR_CURRENCY_PREVIEW, TC_FROMSTRING); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1089 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1090 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1091 |
virtual void OnClick(Point pt, int widget) |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1092 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1093 |
int line = (pt.y - 20) / 12; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1094 |
int len = 0; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1095 |
int x = pt.x; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1096 |
StringID str = 0; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1097 |
CharSetFilter afilter = CS_ALPHANUMERAL; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1098 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1099 |
switch (line) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1100 |
case CUSTCURR_EXCHANGERATE: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1101 |
if (IsInsideMM(x, 10, 30)) { // clicked buttons |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1102 |
if (x < 20) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1103 |
if (_custom_currency.rate > 1) _custom_currency.rate--; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1104 |
this->click = 1 << (line * 2 + 0); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1105 |
} else { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1106 |
if (_custom_currency.rate < 5000) _custom_currency.rate++; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1107 |
this->click = 1 << (line * 2 + 1); |
4488
1be86990ea3e
(svn r6273) Clean up the custom currency window handler a bit
tron
parents:
4444
diff
changeset
|
1108 |
} |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1109 |
} else { // enter text |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1110 |
SetDParam(0, _custom_currency.rate); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1111 |
str = STR_CONFIG_PATCHES_INT32; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1112 |
len = 4; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1113 |
afilter = CS_NUMERAL; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1114 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1115 |
break; |
4488
1be86990ea3e
(svn r6273) Clean up the custom currency window handler a bit
tron
parents:
4444
diff
changeset
|
1116 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1117 |
case CUSTCURR_SEPARATOR: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1118 |
if (IsInsideMM(x, 10, 30)) { // clicked button |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1119 |
this->click = 1 << (line * 2 + 1); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1120 |
} |
9648
c79160082c0f
(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
parents:
9607
diff
changeset
|
1121 |
SetDParamStr(0, this->separator); |
c79160082c0f
(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
parents:
9607
diff
changeset
|
1122 |
str = STR_JUST_RAW_STRING; |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1123 |
len = 1; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1124 |
break; |
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1125 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1126 |
case CUSTCURR_PREFIX: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1127 |
if (IsInsideMM(x, 10, 30)) { // clicked button |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1128 |
this->click = 1 << (line * 2 + 1); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1129 |
} |
9648
c79160082c0f
(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
parents:
9607
diff
changeset
|
1130 |
SetDParamStr(0, _custom_currency.prefix); |
c79160082c0f
(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
parents:
9607
diff
changeset
|
1131 |
str = STR_JUST_RAW_STRING; |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1132 |
len = 12; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1133 |
break; |
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1134 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1135 |
case CUSTCURR_SUFFIX: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1136 |
if (IsInsideMM(x, 10, 30)) { // clicked button |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1137 |
this->click = 1 << (line * 2 + 1); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1138 |
} |
9648
c79160082c0f
(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
parents:
9607
diff
changeset
|
1139 |
SetDParamStr(0, _custom_currency.suffix); |
c79160082c0f
(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
parents:
9607
diff
changeset
|
1140 |
str = STR_JUST_RAW_STRING; |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1141 |
len = 12; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1142 |
break; |
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1143 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1144 |
case CUSTCURR_TO_EURO: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1145 |
if (IsInsideMM(x, 10, 30)) { // clicked buttons |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1146 |
if (x < 20) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1147 |
_custom_currency.to_euro = (_custom_currency.to_euro <= 2000) ? |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1148 |
CF_NOEURO : _custom_currency.to_euro - 1; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1149 |
this->click = 1 << (line * 2 + 0); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1150 |
} else { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1151 |
_custom_currency.to_euro = |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1152 |
Clamp(_custom_currency.to_euro + 1, 2000, MAX_YEAR); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1153 |
this->click = 1 << (line * 2 + 1); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1154 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1155 |
} else { // enter text |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1156 |
SetDParam(0, _custom_currency.to_euro); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1157 |
str = STR_CONFIG_PATCHES_INT32; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1158 |
len = 4; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1159 |
afilter = CS_NUMERAL; |
4488
1be86990ea3e
(svn r6273) Clean up the custom currency window handler a bit
tron
parents:
4444
diff
changeset
|
1160 |
} |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1161 |
break; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1162 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1163 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1164 |
if (len != 0) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1165 |
this->query_widget = line; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1166 |
ShowQueryString(str, STR_CURRENCY_CHANGE_PARAMETER, len + 1, 250, this, afilter); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1167 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1168 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1169 |
this->flags4 |= 5 << WF_TIMEOUT_SHL; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1170 |
this->SetDirty(); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1171 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1172 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1173 |
virtual void OnQueryTextFinished(char *str) |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1174 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1175 |
if (str == NULL) return; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1176 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1177 |
switch (this->query_widget) { |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1178 |
case CUSTCURR_EXCHANGERATE: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1179 |
_custom_currency.rate = Clamp(atoi(str), 1, 5000); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1180 |
break; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1181 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1182 |
case CUSTCURR_SEPARATOR: /* Thousands seperator */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1183 |
_custom_currency.separator = StrEmpty(str) ? ' ' : str[0]; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1184 |
ttd_strlcpy(this->separator, str, lengthof(this->separator)); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1185 |
break; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1186 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1187 |
case CUSTCURR_PREFIX: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1188 |
ttd_strlcpy(_custom_currency.prefix, str, lengthof(_custom_currency.prefix)); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1189 |
break; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1190 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1191 |
case CUSTCURR_SUFFIX: |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1192 |
ttd_strlcpy(_custom_currency.suffix, str, lengthof(_custom_currency.suffix)); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1193 |
break; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1194 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1195 |
case CUSTCURR_TO_EURO: { /* Year to switch to euro */ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1196 |
int val = atoi(str); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1197 |
|
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1198 |
_custom_currency.to_euro = (val < 2000 ? CF_NOEURO : min(val, MAX_YEAR)); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1199 |
break; |
8188
f326251c9d7f
(svn r11751) -Codechange: Enumify some widgets (and others) and while at it, apply some code style
belugas
parents:
8182
diff
changeset
|
1200 |
} |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1201 |
} |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1202 |
MarkWholeScreenDirty(); |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1203 |
} |
4488
1be86990ea3e
(svn r6273) Clean up the custom currency window handler a bit
tron
parents:
4444
diff
changeset
|
1204 |
|
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1205 |
virtual void OnTimeout() |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1206 |
{ |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1207 |
this->click = 0; |
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1208 |
this->SetDirty(); |
759
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1209 |
} |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1210 |
}; |
759
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1211 |
|
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1212 |
static const Widget _cust_currency_widgets[] = { |
9764
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
1213 |
{ WWT_CLOSEBOX, RESIZE_NONE, COLOUR_GREY, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
1214 |
{ WWT_CAPTION, RESIZE_NONE, COLOUR_GREY, 11, 229, 0, 13, STR_CURRENCY_WINDOW, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
9b21f847d91c
(svn r13900) -Codechange: Replace numbers with Colours enum on settings, smallmaps, stations and signs guis.
belugas
parents:
9648
diff
changeset
|
1215 |
{ WWT_PANEL, RESIZE_NONE, COLOUR_GREY, 0, 229, 14, 119, 0x0, STR_NULL}, |
759
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1216 |
{ WIDGETS_END}, |
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1217 |
}; |
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1218 |
|
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1219 |
static const WindowDesc _cust_currency_desc = { |
7341
02515d0d4ced
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents:
7177
diff
changeset
|
1220 |
WDP_CENTER, WDP_CENTER, 230, 120, 230, 120, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5688
diff
changeset
|
1221 |
WC_CUSTOM_CURRENCY, WC_NONE, |
759
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1222 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1223 |
_cust_currency_widgets, |
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1224 |
}; |
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1225 |
|
6247 | 1226 |
static void ShowCustCurrency() |
759
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1227 |
{ |
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1228 |
DeleteWindowById(WC_CUSTOM_CURRENCY, 0); |
9246
1eebd6f7b894
(svn r13112) -Codechange: make classes of the patches and custom currency windows.
rubidium
parents:
9231
diff
changeset
|
1229 |
new CustomCurrencyWindow(&_cust_currency_desc); |
759
a445474d7c21
(svn r1215) Feature: You can now make a custom currency by chosing "Custom..."
dominik
parents:
654
diff
changeset
|
1230 |
} |