| author | egladil | 
| Sat, 29 Dec 2007 05:15:13 +0000 | |
| changeset 8652 | e06732646b8a | 
| parent 8640 | 1e93b81e96d2 | 
| child 8653 | a83f7a536919 | 
| permissions | -rw-r--r-- | 
| 2186 | 1  | 
/* $Id$ */  | 
2  | 
||
| 
6443
 
b8f06d8eb7be
(svn r8853) -Cleanup: doxygen changes.  Correct forgotten c files to cpp files with the @file tag as well as a few general comments style
 
belugas 
parents: 
6368 
diff
changeset
 | 
3  | 
/** @file airport_gui.cpp */  | 
| 
 
b8f06d8eb7be
(svn r8853) -Cleanup: doxygen changes.  Correct forgotten c files to cpp files with the @file tag as well as a few general comments style
 
belugas 
parents: 
6368 
diff
changeset
 | 
4  | 
|
| 0 | 5  | 
#include "stdafx.h"  | 
| 
1891
 
92a3b0aa0946
(svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
 
Darkvater 
parents: 
1784 
diff
changeset
 | 
6  | 
#include "openttd.h"  | 
| 
1363
 
01d3de5d8039
(svn r1867) Include tables/sprites.h only in files which need it
 
tron 
parents: 
1313 
diff
changeset
 | 
7  | 
#include "table/sprites.h"  | 
| 
507
 
8aa8100b0b22
(svn r815) Include strings.h only in the files which need it.
 
tron 
parents: 
337 
diff
changeset
 | 
8  | 
#include "table/strings.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"  | 
| 0 | 10  | 
#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
 | 
11  | 
#include "station_gui.h"  | 
| 0 | 12  | 
#include "viewport.h"  | 
| 
337
 
66647f97e7c0
(svn r513) Merge revisions 402, 416, 417, 478, 479, 511, 512 from map to trunk
 
tron 
parents: 
193 
diff
changeset
 | 
13  | 
#include "sound.h"  | 
| 
8612
 
6414fc21c2f3
(svn r11677) -Codechange: move price and command related types/functions to their respective places.
 
rubidium 
parents: 
8603 
diff
changeset
 | 
14  | 
#include "command_func.h"  | 
| 0 | 15  | 
#include "station.h"  | 
16  | 
#include "airport.h"  | 
|
| 
1313
 
bba6afb8a995
(svn r1817) -Codechange: Moved depot-functions to depot.c
 
truelight 
parents: 
1116 
diff
changeset
 | 
17  | 
#include "depot.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: 
8617 
diff
changeset
 | 
18  | 
#include "window_func.h"  | 
| 0 | 19  | 
|
20  | 
static byte _selected_airport_type;  | 
|
21  | 
||
| 6573 | 22  | 
static void ShowBuildAirportPicker();  | 
| 0 | 23  | 
|
24  | 
||
| 
1977
 
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
 
tron 
parents: 
1914 
diff
changeset
 | 
25  | 
void CcBuildAirport(bool success, TileIndex tile, uint32 p1, uint32 p2)  | 
| 0 | 26  | 
{
 | 
27  | 
	if (success) {
 | 
|
| 541 | 28  | 
SndPlayTileFx(SND_1F_SPLAT, tile);  | 
| 0 | 29  | 
ResetObjectToPlace();  | 
30  | 
}  | 
|
31  | 
}  | 
|
32  | 
||
| 
1977
 
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
 
tron 
parents: 
1914 
diff
changeset
 | 
33  | 
static void PlaceAirport(TileIndex tile)  | 
| 0 | 34  | 
{
 | 
| 
8017
 
8c46e61c510f
(svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
 
rubidium 
parents: 
7837 
diff
changeset
 | 
35  | 
DoCommandP(tile, _selected_airport_type, _ctrl_pressed, CcBuildAirport, CMD_BUILD_AIRPORT | CMD_NO_WATER | CMD_MSG(STR_A001_CAN_T_BUILD_AIRPORT_HERE));  | 
| 0 | 36  | 
}  | 
37  | 
||
| 
1977
 
4392ae3d8e31
(svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
 
tron 
parents: 
1914 
diff
changeset
 | 
38  | 
static void PlaceAir_DemolishArea(TileIndex tile)  | 
| 0 | 39  | 
{
 | 
| 
7166
 
3937d5ea59df
(svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
 
maedhros 
parents: 
7165 
diff
changeset
 | 
40  | 
VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);  | 
| 0 | 41  | 
}  | 
42  | 
||
43  | 
||
| 
5147
 
db717cde801d
(svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
 
tron 
parents: 
5072 
diff
changeset
 | 
44  | 
enum {
 | 
| 
 
db717cde801d
(svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
 
tron 
parents: 
5072 
diff
changeset
 | 
45  | 
ATW_AIRPORT = 3,  | 
| 
 
db717cde801d
(svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
 
tron 
parents: 
5072 
diff
changeset
 | 
46  | 
ATW_DEMOLISH = 4  | 
| 
 
db717cde801d
(svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
 
tron 
parents: 
5072 
diff
changeset
 | 
47  | 
};  | 
| 
 
db717cde801d
(svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
 
tron 
parents: 
5072 
diff
changeset
 | 
48  | 
|
| 
 
db717cde801d
(svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
 
tron 
parents: 
5072 
diff
changeset
 | 
49  | 
|
| 0 | 50  | 
static void BuildAirClick_Airport(Window *w)  | 
51  | 
{
 | 
|
| 
8385
 
aedd7656cfd1
(svn r11440) -Codechange: replace magic numbers with enumified WindowHighlightMode constants. Patch by SmatZ.
 
rubidium 
parents: 
8017 
diff
changeset
 | 
52  | 
if (HandlePlacePushButton(w, ATW_AIRPORT, SPR_CURSOR_AIRPORT, VHM_RECT, PlaceAirport)) ShowBuildAirportPicker();  | 
| 0 | 53  | 
}  | 
54  | 
||
55  | 
static void BuildAirClick_Demolish(Window *w)  | 
|
56  | 
{
 | 
|
| 
8385
 
aedd7656cfd1
(svn r11440) -Codechange: replace magic numbers with enumified WindowHighlightMode constants. Patch by SmatZ.
 
rubidium 
parents: 
8017 
diff
changeset
 | 
57  | 
HandlePlacePushButton(w, ATW_DEMOLISH, ANIMCURSOR_DEMOLISH, VHM_RECT, PlaceAir_DemolishArea);  | 
| 0 | 58  | 
}  | 
59  | 
||
60  | 
||
61  | 
typedef void OnButtonClick(Window *w);  | 
|
62  | 
static OnButtonClick * const _build_air_button_proc[] = {
 | 
|
63  | 
BuildAirClick_Airport,  | 
|
64  | 
BuildAirClick_Demolish,  | 
|
65  | 
};  | 
|
66  | 
||
67  | 
static void BuildAirToolbWndProc(Window *w, WindowEvent *e)  | 
|
68  | 
{
 | 
|
| 2639 | 69  | 
	switch (e->event) {
 | 
| 0 | 70  | 
case WE_PAINT:  | 
71  | 
DrawWindowWidgets(w);  | 
|
72  | 
break;  | 
|
73  | 
||
74  | 
case WE_CLICK:  | 
|
| 
4634
 
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
 
belugas 
parents: 
4345 
diff
changeset
 | 
75  | 
if (e->we.click.widget - 3 >= 0)  | 
| 
 
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
 
belugas 
parents: 
4345 
diff
changeset
 | 
76  | 
_build_air_button_proc[e->we.click.widget - 3](w);  | 
| 0 | 77  | 
break;  | 
| 
1019
 
6363b8a4273e
(svn r1520) Trim 134 (!) lines with trailing whitespace ):
 
tron 
parents: 
946 
diff
changeset
 | 
78  | 
|
| 
937
 
a8dfd3eb406f
(svn r1425) Added hotkeys for dock and airport toolbar
 
celestar 
parents: 
867 
diff
changeset
 | 
79  | 
	case WE_KEYPRESS: {
 | 
| 
4634
 
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
 
belugas 
parents: 
4345 
diff
changeset
 | 
80  | 
		switch (e->we.keypress.keycode) {
 | 
| 
937
 
a8dfd3eb406f
(svn r1425) Added hotkeys for dock and airport toolbar
 
celestar 
parents: 
867 
diff
changeset
 | 
81  | 
case '1': BuildAirClick_Airport(w); break;  | 
| 
 
a8dfd3eb406f
(svn r1425) Added hotkeys for dock and airport toolbar
 
celestar 
parents: 
867 
diff
changeset
 | 
82  | 
case '2': BuildAirClick_Demolish(w); break;  | 
| 
2631
 
13daba67f217
(svn r3173) Use the trinary operator and switch to improve readability
 
tron 
parents: 
2619 
diff
changeset
 | 
83  | 
default: return;  | 
| 
937
 
a8dfd3eb406f
(svn r1425) Added hotkeys for dock and airport toolbar
 
celestar 
parents: 
867 
diff
changeset
 | 
84  | 
}  | 
| 
 
a8dfd3eb406f
(svn r1425) Added hotkeys for dock and airport toolbar
 
celestar 
parents: 
867 
diff
changeset
 | 
85  | 
} break;  | 
| 0 | 86  | 
|
87  | 
case WE_PLACE_OBJ:  | 
|
| 
4634
 
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
 
belugas 
parents: 
4345 
diff
changeset
 | 
88  | 
_place_proc(e->we.place.tile);  | 
| 
193
 
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
 
truelight 
parents: 
176 
diff
changeset
 | 
89  | 
break;  | 
| 0 | 90  | 
|
| 
4077
 
d3022f976946
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
 
tron 
parents: 
4059 
diff
changeset
 | 
91  | 
case WE_PLACE_DRAG:  | 
| 
7165
 
37eb253f3c06
(svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
 
maedhros 
parents: 
6987 
diff
changeset
 | 
92  | 
VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method);  | 
| 
4077
 
d3022f976946
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
 
tron 
parents: 
4059 
diff
changeset
 | 
93  | 
break;  | 
| 0 | 94  | 
|
95  | 
case WE_PLACE_MOUSEUP:  | 
|
| 
7166
 
3937d5ea59df
(svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
 
maedhros 
parents: 
7165 
diff
changeset
 | 
96  | 
		if (e->we.place.pt.x != -1 && e->we.place.select_proc == DDSP_DEMOLISH_AREA) {
 | 
| 
4634
 
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
 
belugas 
parents: 
4345 
diff
changeset
 | 
97  | 
DoCommandP(e->we.place.tile, e->we.place.starttile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));  | 
| 0 | 98  | 
}  | 
99  | 
break;  | 
|
100  | 
||
101  | 
case WE_ABORT_PLACE_OBJ:  | 
|
| 
8528
 
04b4ef9abd9b
(svn r11592) -Codechange: Use the Window member RaiseButtons and remove the now useless RaiseWindowButtons function
 
belugas 
parents: 
8493 
diff
changeset
 | 
102  | 
w->RaiseButtons();  | 
| 
4719
 
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
 
belugas 
parents: 
4709 
diff
changeset
 | 
103  | 
|
| 0 | 104  | 
w = FindWindowById(WC_BUILD_STATION, 0);  | 
105  | 
if (w != 0)  | 
|
| 
6987
 
b0f13039bda2
(svn r9672) -Cleanup: lots of coding style fixes around operands.
 
rubidium 
parents: 
6573 
diff
changeset
 | 
106  | 
WP(w, def_d).close = true;  | 
| 0 | 107  | 
break;  | 
| 
2619
 
c2f488e400b1
(svn r3157) - Feature: Added patch option to link the terraform toolbar to the rail, road, water and airport toolbars. If enabled, the terraform toolbar will open and close with those toolbars.
 
peter1138 
parents: 
2186 
diff
changeset
 | 
108  | 
|
| 
 
c2f488e400b1
(svn r3157) - Feature: Added patch option to link the terraform toolbar to the rail, road, water and airport toolbars. If enabled, the terraform toolbar will open and close with those toolbars.
 
peter1138 
parents: 
2186 
diff
changeset
 | 
109  | 
case WE_DESTROY:  | 
| 
 
c2f488e400b1
(svn r3157) - Feature: Added patch option to link the terraform toolbar to the rail, road, water and airport toolbars. If enabled, the terraform toolbar will open and close with those toolbars.
 
peter1138 
parents: 
2186 
diff
changeset
 | 
110  | 
if (_patches.link_terraform_toolbar) DeleteWindowById(WC_SCEN_LAND_GEN, 0);  | 
| 
 
c2f488e400b1
(svn r3157) - Feature: Added patch option to link the terraform toolbar to the rail, road, water and airport toolbars. If enabled, the terraform toolbar will open and close with those toolbars.
 
peter1138 
parents: 
2186 
diff
changeset
 | 
111  | 
break;  | 
| 0 | 112  | 
}  | 
113  | 
}  | 
|
114  | 
||
115  | 
static const Widget _air_toolbar_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: 
4171 
diff
changeset
 | 
116  | 
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,            STR_018B_CLOSE_WINDOW },
 | 
| 
5933
 
0835f3342b79
(svn r8143) Remove the landscaping button from the build toolbars.
 
tron 
parents: 
5838 
diff
changeset
 | 
117  | 
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,    51,     0,    13, STR_A000_AIRPORTS,   STR_018C_WINDOW_TITLE_DRAG_THIS },
 | 
| 
 
0835f3342b79
(svn r8143) Remove the landscaping button from the build toolbars.
 
tron 
parents: 
5838 
diff
changeset
 | 
118  | 
{  WWT_STICKYBOX,   RESIZE_NONE,     7,    52,    63,     0,    13, 0x0,                 STR_STICKY_BUTTON },
 | 
| 
4937
 
a525d56a8d40
(svn r6924) -Codechange: Give the last (in the widget arrays at least) sprites meaningful names.
 
Darkvater 
parents: 
4848 
diff
changeset
 | 
119  | 
{     WWT_IMGBTN,   RESIZE_NONE,     7,     0,    41,    14,    35, SPR_IMG_AIRPORT,     STR_A01E_BUILD_AIRPORT },
 | 
| 
 
a525d56a8d40
(svn r6924) -Codechange: Give the last (in the widget arrays at least) sprites meaningful names.
 
Darkvater 
parents: 
4848 
diff
changeset
 | 
120  | 
{     WWT_IMGBTN,   RESIZE_NONE,     7,    42,    63,    14,    35, SPR_IMG_DYNAMITE,    STR_018D_DEMOLISH_BUILDINGS_ETC },
 | 
| 
176
 
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
 
darkvater 
parents: 
0 
diff
changeset
 | 
121  | 
{   WIDGETS_END},
 | 
| 0 | 122  | 
};  | 
123  | 
||
124  | 
||
125  | 
static const WindowDesc _air_toolbar_desc = {
 | 
|
| 
7837
 
65d7362153a6
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
 
rubidium 
parents: 
7737 
diff
changeset
 | 
126  | 
WDP_ALIGN_TBR, 22, 64, 36, 64, 36,  | 
| 
6144
 
5a0ffbf27ced
(svn r8511) -Codechange: make WindowClass an enumerated value.
 
rubidium 
parents: 
6111 
diff
changeset
 | 
127  | 
WC_BUILD_TOOLBAR, WC_NONE,  | 
| 
756
 
d1f1dc31b6f4
(svn r1212) -Feature: sticky windows all build-toolbars
 
darkvater 
parents: 
751 
diff
changeset
 | 
128  | 
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,  | 
| 0 | 129  | 
_air_toolbar_widgets,  | 
130  | 
BuildAirToolbWndProc  | 
|
131  | 
};  | 
|
132  | 
||
| 6573 | 133  | 
void ShowBuildAirToolbar()  | 
| 0 | 134  | 
{
 | 
| 
5005
 
21e84e53c732
(svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
 
Darkvater 
parents: 
4968 
diff
changeset
 | 
135  | 
if (!IsValidPlayer(_current_player)) return;  | 
| 
 
21e84e53c732
(svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
 
Darkvater 
parents: 
4968 
diff
changeset
 | 
136  | 
|
| 0 | 137  | 
DeleteWindowById(WC_BUILD_TOOLBAR, 0);  | 
| 6111 | 138  | 
Window *w = AllocateWindowDescFront(&_air_toolbar_desc, 0);  | 
139  | 
if (_patches.link_terraform_toolbar) ShowTerraformToolbar(w);  | 
|
| 0 | 140  | 
}  | 
141  | 
||
142  | 
static void BuildAirportPickerWndProc(Window *w, WindowEvent *e)  | 
|
143  | 
{
 | 
|
| 
1784
 
6eb3ab1bc33c
(svn r2288) - CodeChange: protected the next batch of commands (41 so far, out of 115).
 
Darkvater 
parents: 
1363 
diff
changeset
 | 
144  | 
	switch (e->event) {
 | 
| 
4719
 
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
 
belugas 
parents: 
4709 
diff
changeset
 | 
145  | 
case WE_CREATE:  | 
| 
8493
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
146  | 
w->SetWidgetLoweredState(16, !_station_show_coverage);  | 
| 
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
147  | 
w->SetWidgetLoweredState(17, _station_show_coverage);  | 
| 
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
148  | 
w->LowerWidget(_selected_airport_type + 7);  | 
| 
4719
 
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
 
belugas 
parents: 
4709 
diff
changeset
 | 
149  | 
break;  | 
| 
 
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
 
belugas 
parents: 
4709 
diff
changeset
 | 
150  | 
|
| 0 | 151  | 
	case WE_PAINT: {
 | 
| 
4709
 
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
 
belugas 
parents: 
4634 
diff
changeset
 | 
152  | 
int i; // airport enabling loop  | 
| 
1784
 
6eb3ab1bc33c
(svn r2288) - CodeChange: protected the next batch of commands (41 so far, out of 115).
 
Darkvater 
parents: 
1363 
diff
changeset
 | 
153  | 
uint32 avail_airports;  | 
| 4171 | 154  | 
const AirportFTAClass *airport;  | 
| 0 | 155  | 
|
| 
6987
 
b0f13039bda2
(svn r9672) -Cleanup: lots of coding style fixes around operands.
 
rubidium 
parents: 
6573 
diff
changeset
 | 
156  | 
if (WP(w, def_d).close) return;  | 
| 0 | 157  | 
|
| 
1784
 
6eb3ab1bc33c
(svn r2288) - CodeChange: protected the next batch of commands (41 so far, out of 115).
 
Darkvater 
parents: 
1363 
diff
changeset
 | 
158  | 
avail_airports = GetValidAirports();  | 
| 
 
6eb3ab1bc33c
(svn r2288) - CodeChange: protected the next batch of commands (41 so far, out of 115).
 
Darkvater 
parents: 
1363 
diff
changeset
 | 
159  | 
|
| 
8493
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
160  | 
w->RaiseWidget(_selected_airport_type + 7);  | 
| 
8424
 
4a488a90ccab
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
 
skidd13 
parents: 
8385 
diff
changeset
 | 
161  | 
if (!HasBit(avail_airports, 0) && _selected_airport_type == AT_SMALL) _selected_airport_type = AT_LARGE;  | 
| 
 
4a488a90ccab
(svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
 
skidd13 
parents: 
8385 
diff
changeset
 | 
162  | 
if (!HasBit(avail_airports, 1) && _selected_airport_type == AT_LARGE) _selected_airport_type = AT_SMALL;  | 
| 
8493
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
163  | 
w->LowerWidget(_selected_airport_type + 7);  | 
| 
1784
 
6eb3ab1bc33c
(svn r2288) - CodeChange: protected the next batch of commands (41 so far, out of 115).
 
Darkvater 
parents: 
1363 
diff
changeset
 | 
164  | 
|
| 
4709
 
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
 
belugas 
parents: 
4634 
diff
changeset
 | 
165  | 
/* 'Country Airport' starts at widget 7, and if its bit is set, it is  | 
| 
 
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
 
belugas 
parents: 
4634 
diff
changeset
 | 
166  | 
* available, so take its opposite value to set the disabled state.  | 
| 
 
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
 
belugas 
parents: 
4634 
diff
changeset
 | 
167  | 
* There are 9 buildable airports  | 
| 
 
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
 
belugas 
parents: 
4634 
diff
changeset
 | 
168  | 
* XXX TODO : all airports should be held in arrays, with all relevant data.  | 
| 
 
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
 
belugas 
parents: 
4634 
diff
changeset
 | 
169  | 
* This should be part of newgrf-airports, i suppose  | 
| 
 
eff35edfb653
(svn r6619) -Codechange: Use accessors for disabled_state.
 
belugas 
parents: 
4634 
diff
changeset
 | 
170  | 
*/  | 
| 
8493
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
171  | 
for (i = 0; i < 9; i++) w->SetWidgetDisabledState(i + 7, !HasBit(avail_airports, i));  | 
| 
1784
 
6eb3ab1bc33c
(svn r2288) - CodeChange: protected the next batch of commands (41 so far, out of 115).
 
Darkvater 
parents: 
1363 
diff
changeset
 | 
172  | 
|
| 
4059
 
f1442dfe1c8a
(svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
 
richk 
parents: 
3884 
diff
changeset
 | 
173  | 
// select default the coverage area to 'Off' (16)  | 
| 
4719
 
413b21513ef7
(svn r6631) -Codechange: Use accessors for click_state.
 
belugas 
parents: 
4709 
diff
changeset
 | 
174  | 
airport = GetAirport(_selected_airport_type);  | 
| 
3876
 
c0d426e78b56
(svn r4918) Move the information about the size of airports from an global array into the struct which describes an airport
 
tron 
parents: 
2725 
diff
changeset
 | 
175  | 
SetTileSelectSize(airport->size_x, airport->size_y);  | 
| 
568
 
6eb7d394fb35
(svn r979) Allow more realistically sized catchment areas
 
Celestar 
parents: 
543 
diff
changeset
 | 
176  | 
|
| 
6368
 
1cd52ab482bb
(svn r8768) -Fix (r8767): VC8 compilation failed 'warning C4146: unary minus operator applied to unsigned type, result still unsigned'
 
KUDr 
parents: 
6367 
diff
changeset
 | 
177  | 
int rad = _patches.modified_catchment ? airport->catchment : 4;  | 
| 
867
 
581154a08a78
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
 
truelight 
parents: 
792 
diff
changeset
 | 
178  | 
|
| 2639 | 179  | 
if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);  | 
| 0 | 180  | 
|
181  | 
DrawWindowWidgets(w);  | 
|
| 
4077
 
d3022f976946
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
 
tron 
parents: 
4059 
diff
changeset
 | 
182  | 
// strings such as 'Size' and 'Coverage Area'  | 
| 
4345
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
183  | 
// 'Coverage Area'  | 
| 
7737
 
7ab95e599292
(svn r10522) -Fix: the "build truck station" GUI showed that it would accept tourists when it does not, whereas the "build bus station" GUI did not show them when it did accept them.
 
rubidium 
parents: 
7170 
diff
changeset
 | 
184  | 
DrawStationCoverageAreaText(2, 206, SCT_ALL, rad);  | 
| 0 | 185  | 
break;  | 
186  | 
}  | 
|
187  | 
||
188  | 
	case WE_CLICK: {
 | 
|
| 
4634
 
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
 
belugas 
parents: 
4345 
diff
changeset
 | 
189  | 
		switch (e->we.click.widget) {
 | 
| 
4059
 
f1442dfe1c8a
(svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
 
richk 
parents: 
3884 
diff
changeset
 | 
190  | 
case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 15:  | 
| 
8493
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
191  | 
w->RaiseWidget(_selected_airport_type + 7);  | 
| 
4634
 
897461a3e9ca
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
 
belugas 
parents: 
4345 
diff
changeset
 | 
192  | 
_selected_airport_type = e->we.click.widget - 7;  | 
| 
8493
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
193  | 
w->LowerWidget(_selected_airport_type + 7);  | 
| 541 | 194  | 
SndPlayFx(SND_15_BEEP);  | 
| 0 | 195  | 
SetWindowDirty(w);  | 
196  | 
break;  | 
|
| 
4059
 
f1442dfe1c8a
(svn r5346) - Feature: Add 4 new airports. 2 for aircraft, 2 for helicopters.
 
richk 
parents: 
3884 
diff
changeset
 | 
197  | 
case 16: case 17:  | 
| 
5838
 
9c3129cb019b
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
 
rubidium 
parents: 
5835 
diff
changeset
 | 
198  | 
_station_show_coverage = (e->we.click.widget != 16);  | 
| 
8493
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
199  | 
w->SetWidgetLoweredState(16, !_station_show_coverage);  | 
| 
 
3ab458f7cff4
(svn r11555) -Codechange: use the new members introduced in r11551.
 
rubidium 
parents: 
8424 
diff
changeset
 | 
200  | 
w->SetWidgetLoweredState(17, _station_show_coverage);  | 
| 541 | 201  | 
SndPlayFx(SND_15_BEEP);  | 
| 0 | 202  | 
SetWindowDirty(w);  | 
203  | 
break;  | 
|
204  | 
}  | 
|
205  | 
} break;  | 
|
206  | 
||
207  | 
	case WE_MOUSELOOP: {
 | 
|
| 
6987
 
b0f13039bda2
(svn r9672) -Cleanup: lots of coding style fixes around operands.
 
rubidium 
parents: 
6573 
diff
changeset
 | 
208  | 
		if (WP(w, def_d).close) {
 | 
| 0 | 209  | 
DeleteWindow(w);  | 
210  | 
return;  | 
|
211  | 
}  | 
|
212  | 
||
213  | 
CheckRedrawStationCoverage(w);  | 
|
214  | 
} break;  | 
|
| 
1109
 
1bab892228cd
(svn r1610) Remove trailing whitespace (last time ever, i hope)
 
tron 
parents: 
1093 
diff
changeset
 | 
215  | 
|
| 
1072
 
01bf9fc64236
(svn r1573) -Fix: Station and depot building mode is now terminated if the
 
celestar 
parents: 
1019 
diff
changeset
 | 
216  | 
case WE_DESTROY:  | 
| 
6987
 
b0f13039bda2
(svn r9672) -Cleanup: lots of coding style fixes around operands.
 
rubidium 
parents: 
6573 
diff
changeset
 | 
217  | 
if (!WP(w, def_d).close) ResetObjectToPlace();  | 
| 
1072
 
01bf9fc64236
(svn r1573) -Fix: Station and depot building mode is now terminated if the
 
celestar 
parents: 
1019 
diff
changeset
 | 
218  | 
break;  | 
| 0 | 219  | 
}  | 
220  | 
}  | 
|
221  | 
||
222  | 
static const Widget _build_airport_picker_widgets[] = {
 | 
|
| 
4345
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
223  | 
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                         STR_018B_CLOSE_WINDOW},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
224  | 
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   147,     0,    13, STR_3001_AIRPORT_SELECTION,       STR_018C_WINDOW_TITLE_DRAG_THIS},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
225  | 
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   147,    14,    52, 0x0,                              STR_NULL},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
226  | 
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   147,    53,    89, 0x0,                              STR_NULL},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
227  | 
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   147,    90,   127, 0x0,                              STR_NULL},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
228  | 
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   147,   128,   177, 0x0,                              STR_NULL},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
229  | 
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   147,   178,   239, 0x0,                              STR_NULL},
 | 
| 
4968
 
6cfec8858f17
(svn r6971) -Fix r6961: WWT_NODISTXTBTN buttons were normal buttons not push buttons
 
glx 
parents: 
4963 
diff
changeset
 | 
230  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   145,    27,    38, STR_SMALL_AIRPORT,                STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
 | 
| 
 
6cfec8858f17
(svn r6971) -Fix r6961: WWT_NODISTXTBTN buttons were normal buttons not push buttons
 
glx 
parents: 
4963 
diff
changeset
 | 
231  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   145,    65,    76, STR_CITY_AIRPORT,                 STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
 | 
| 
 
6cfec8858f17
(svn r6971) -Fix r6961: WWT_NODISTXTBTN buttons were normal buttons not push buttons
 
glx 
parents: 
4963 
diff
changeset
 | 
232  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   145,   141,   152, STR_HELIPORT,                     STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
 | 
| 
 
6cfec8858f17
(svn r6971) -Fix r6961: WWT_NODISTXTBTN buttons were normal buttons not push buttons
 
glx 
parents: 
4963 
diff
changeset
 | 
233  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   145,    77,    88, STR_METRO_AIRPORT ,               STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
 | 
| 
 
6cfec8858f17
(svn r6971) -Fix r6961: WWT_NODISTXTBTN buttons were normal buttons not push buttons
 
glx 
parents: 
4963 
diff
changeset
 | 
234  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   145,   103,   114, STR_INTERNATIONAL_AIRPORT,        STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
 | 
| 
 
6cfec8858f17
(svn r6971) -Fix r6961: WWT_NODISTXTBTN buttons were normal buttons not push buttons
 
glx 
parents: 
4963 
diff
changeset
 | 
235  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   145,    39,    50, STR_COMMUTER_AIRPORT,             STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
 | 
| 
 
6cfec8858f17
(svn r6971) -Fix r6961: WWT_NODISTXTBTN buttons were normal buttons not push buttons
 
glx 
parents: 
4963 
diff
changeset
 | 
236  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   145,   165,   176, STR_HELIDEPOT,                    STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
 | 
| 
 
6cfec8858f17
(svn r6971) -Fix r6961: WWT_NODISTXTBTN buttons were normal buttons not push buttons
 
glx 
parents: 
4963 
diff
changeset
 | 
237  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   145,   115,   126, STR_INTERCONTINENTAL_AIRPORT,     STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
 | 
| 
 
6cfec8858f17
(svn r6971) -Fix r6961: WWT_NODISTXTBTN buttons were normal buttons not push buttons
 
glx 
parents: 
4963 
diff
changeset
 | 
238  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   145,   153,   164, STR_HELISTATION,                  STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
 | 
| 
4345
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
239  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,    14,    73,   191,   202, STR_02DB_OFF,                     STR_3065_DON_T_HIGHLIGHT_COVERAGE},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
240  | 
{    WWT_TEXTBTN,   RESIZE_NONE,    14,    74,   133,   191,   202, STR_02DA_ON,                      STR_3064_HIGHLIGHT_COVERAGE_AREA},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
241  | 
{      WWT_LABEL,   RESIZE_NONE,     7,     0,   147,    14,    27, STR_SMALL_AIRPORTS,               STR_NULL},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
242  | 
{      WWT_LABEL,   RESIZE_NONE,     7,     0,   147,    52,    65, STR_LARGE_AIRPORTS,               STR_NULL},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
243  | 
{      WWT_LABEL,   RESIZE_NONE,     7,     0,   147,    90,   103, STR_HUB_AIRPORTS,                 STR_NULL},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
244  | 
{      WWT_LABEL,   RESIZE_NONE,     7,     0,   147,   128,   141, STR_HELIPORTS,                    STR_NULL},
 | 
| 
 
dd12549ad473
(svn r6046) CodeChange : Rename WWT_5 Widget type to WWT_LABEL :  a centered label
 
belugas 
parents: 
4344 
diff
changeset
 | 
245  | 
{      WWT_LABEL,   RESIZE_NONE,     7,     0,   147,   178,   191, STR_3066_COVERAGE_AREA_HIGHLIGHT, STR_NULL},
 | 
| 
176
 
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
 
darkvater 
parents: 
0 
diff
changeset
 | 
246  | 
{   WIDGETS_END},
 | 
| 0 | 247  | 
};  | 
248  | 
||
249  | 
static const WindowDesc _build_airport_desc = {
 | 
|
| 
7837
 
65d7362153a6
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
 
rubidium 
parents: 
7737 
diff
changeset
 | 
250  | 
WDP_AUTO, WDP_AUTO, 148, 240, 148, 240,  | 
| 
5070
 
0bbf5264bfb7
(svn r7128) -Codechange: Replace magic numbers by magic enums (windowdesc positioning WDP_AUTO = -1)
 
Darkvater 
parents: 
5005 
diff
changeset
 | 
251  | 
WC_BUILD_STATION, WC_BUILD_TOOLBAR,  | 
| 0 | 252  | 
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,  | 
253  | 
_build_airport_picker_widgets,  | 
|
254  | 
BuildAirportPickerWndProc  | 
|
255  | 
};  | 
|
256  | 
||
| 6573 | 257  | 
static void ShowBuildAirportPicker()  | 
| 0 | 258  | 
{
 | 
259  | 
AllocateWindowDesc(&_build_airport_desc);  | 
|
260  | 
}  | 
|
261  | 
||
| 6573 | 262  | 
void InitializeAirportGui()  | 
| 0 | 263  | 
{
 | 
264  | 
_selected_airport_type = AT_SMALL;  | 
|
265  | 
}  |