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