src/airport_gui.cpp
author rubidium
Thu, 18 Dec 2008 12:23:08 +0000
changeset 10436 8d3a9fbe8f19
parent 10208 72c00af5c95d
permissions -rw-r--r--
(svn r14689) -Change: make configure die on commonly made user mistakes, like not having SDL development files or zlib headers installed; you can still compile a dedicated server or a binary without zlib, but you have to explicitly force it.
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     2
9111
48ce04029fe4 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents: 9080
diff changeset
     3
/** @file airport_gui.cpp The GUI for airports. */
6117
6507b2a7e71d (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: 6042
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
862800791170 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1784
diff changeset
     6
#include "openttd.h"
8107
bb7deea89175 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8106
diff changeset
     7
#include "window_gui.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     8
#include "gui.h"
8107
bb7deea89175 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8106
diff changeset
     9
#include "station_gui.h"
8205
2bde724f1b5d (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8157
diff changeset
    10
#include "terraform_gui.h"
8116
8da76dcb3287 (svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium
parents: 8107
diff changeset
    11
#include "command_func.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    12
#include "airport.h"
8157
1505def01945 (svn r11719) -Codechange: split sound.h in a header with types and one with functions.
rubidium
parents: 8144
diff changeset
    13
#include "sound_func.h"
8131
160939e24ed3 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents: 8121
diff changeset
    14
#include "window_func.h"
9334
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
    15
#include "strings_func.h"
8270
e7c342f6b14c (svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents: 8264
diff changeset
    16
#include "settings_type.h"
8224
c5a64d87cc54 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8211
diff changeset
    17
#include "viewport_func.h"
c5a64d87cc54 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8211
diff changeset
    18
#include "gfx_func.h"
10208
72c00af5c95d (svn r14422) -Codechange: also reflect the changes of r14421 in the filenames.
rubidium
parents: 10207
diff changeset
    19
#include "company_func.h"
8784
c2e9d649a9ce (svn r12488) -Codechange: split order.h into order_base.h and order_func.h.
rubidium
parents: 8574
diff changeset
    20
#include "order_func.h"
8962
1b263c69799d (svn r12754) -Codechange: split depot.h into depot_map.h, depot_func.h and depot_base.h and remove quite a lot of unneeded (before this) includes of depot.h.
rubidium
parents: 8910
diff changeset
    21
#include "station_type.h"
9127
14f21c5954ee (svn r12987) -Codechange: split viewport and tile selection.
rubidium
parents: 9123
diff changeset
    22
#include "tilehighlight_func.h"
10208
72c00af5c95d (svn r14422) -Codechange: also reflect the changes of r14421 in the filenames.
rubidium
parents: 10207
diff changeset
    23
#include "company_base.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    24
8264
b1e85998c7d3 (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8254
diff changeset
    25
#include "table/sprites.h"
b1e85998c7d3 (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8254
diff changeset
    26
#include "table/strings.h"
b1e85998c7d3 (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8254
diff changeset
    27
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    28
static byte _selected_airport_type;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    29
9338
3d6f9ddd431d (svn r13230) -Fix [FS#2030](r13171): When closing toolbars, also close their PickerWindows.
frosch
parents: 9334
diff changeset
    30
static void ShowBuildAirportPicker(Window *parent);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    31
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    32
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
    33
void CcBuildAirport(bool success, TileIndex tile, uint32 p1, uint32 p2)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    34
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    35
	if (success) {
541
625227bb2a3d (svn r925) Use sound enums
tron
parents: 507
diff changeset
    36
		SndPlayTileFx(SND_1F_SPLAT, tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    37
		ResetObjectToPlace();
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    38
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    39
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    40
1977
37bbebf94434 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1914
diff changeset
    41
static void PlaceAirport(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    42
{
7521
0da1e91510e4 (svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
rubidium
parents: 7341
diff changeset
    43
	DoCommandP(tile, _selected_airport_type, _ctrl_pressed, CcBuildAirport, CMD_BUILD_AIRPORT | CMD_NO_WATER | CMD_MSG(STR_A001_CAN_T_BUILD_AIRPORT_HERE));
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    44
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    45
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    46
5147
866030c20f0a (svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents: 5072
diff changeset
    47
enum {
866030c20f0a (svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents: 5072
diff changeset
    48
	ATW_AIRPORT  = 3,
866030c20f0a (svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents: 5072
diff changeset
    49
	ATW_DEMOLISH = 4
866030c20f0a (svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents: 5072
diff changeset
    50
};
866030c20f0a (svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents: 5072
diff changeset
    51
866030c20f0a (svn r7239) Enumerate the widgets in the airport, dock, rail and road toolbars
tron
parents: 5072
diff changeset
    52
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    53
static void BuildAirClick_Airport(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    54
{
9338
3d6f9ddd431d (svn r13230) -Fix [FS#2030](r13171): When closing toolbars, also close their PickerWindows.
frosch
parents: 9334
diff changeset
    55
	if (HandlePlacePushButton(w, ATW_AIRPORT, SPR_CURSOR_AIRPORT, VHM_RECT, PlaceAirport)) ShowBuildAirportPicker(w);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    56
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    57
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    58
static void BuildAirClick_Demolish(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    59
{
9123
d2a939cbdf1d (svn r12983) -Codechange [FS#1987] : Unification of all dynamite tools calls to only one. Thanks to Roujin
belugas
parents: 9116
diff changeset
    60
	HandlePlacePushButton(w, ATW_DEMOLISH, ANIMCURSOR_DEMOLISH, VHM_RECT, PlaceProc_DemolishArea);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    61
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    62
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    63
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    64
typedef void OnButtonClick(Window *w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    65
static OnButtonClick * const _build_air_button_proc[] = {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    66
	BuildAirClick_Airport,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    67
	BuildAirClick_Demolish,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    68
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    69
9303
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    70
struct BuildAirToolbarWindow : Window {
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    71
	BuildAirToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    72
	{
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    73
		this->FindWindowPlacementAndResize(desc);
9413
7042a8ec3fa8 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 9354
diff changeset
    74
		if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
9303
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    75
	}
4719
fc6e14219f72 (svn r6631) -Codechange: Use accessors for click_state.
belugas
parents: 4709
diff changeset
    76
9303
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    77
	~BuildAirToolbarWindow()
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    78
	{
9413
7042a8ec3fa8 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 9354
diff changeset
    79
		if (_settings_client.gui.link_terraform_toolbar) DeleteWindowById(WC_SCEN_LAND_GEN, 0);
9303
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    80
	}
8879
976ce196dddf (svn r12646) -Codechange: another run of code-style cleanup
belugas
parents: 8878
diff changeset
    81
9303
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    82
	virtual void OnPaint()
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    83
	{
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    84
		this->DrawWidgets();
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    85
	}
8879
976ce196dddf (svn r12646) -Codechange: another run of code-style cleanup
belugas
parents: 8878
diff changeset
    86
9303
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    87
	virtual void OnClick(Point pt, int widget)
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    88
	{
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    89
		if (widget - 3 >= 0) {
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    90
			_build_air_button_proc[widget - 3](this);
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    91
		}
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    92
	}
8879
976ce196dddf (svn r12646) -Codechange: another run of code-style cleanup
belugas
parents: 8878
diff changeset
    93
976ce196dddf (svn r12646) -Codechange: another run of code-style cleanup
belugas
parents: 8878
diff changeset
    94
9303
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    95
	virtual EventState OnKeyPress(uint16 key, uint16 keycode)
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    96
	{
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    97
		switch (keycode) {
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    98
			case '1': BuildAirClick_Airport(this); break;
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
    99
			case '2': BuildAirClick_Demolish(this); break;
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   100
			default: return ES_NOT_HANDLED;
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   101
		}
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   102
		return ES_HANDLED;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   103
	}
9303
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   104
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   105
	virtual void OnPlaceObject(Point pt, TileIndex tile)
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   106
	{
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   107
		_place_proc(tile);
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   108
	}
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   109
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   110
	virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   111
	{
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   112
		VpSelectTilesWithMethod(pt.x, pt.y, select_method);
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   113
	}
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   114
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   115
	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   116
	{
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   117
		if (pt.x != -1 && select_proc == DDSP_DEMOLISH_AREA) {
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   118
			GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   119
		}
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   120
	}
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   121
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   122
	virtual void OnPlaceObjectAbort()
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   123
	{
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   124
		this->RaiseButtons();
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   125
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   126
		delete FindWindowById(WC_BUILD_STATION, 0);
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   127
	}
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   128
};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   129
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   130
static const Widget _air_toolbar_widgets[] = {
9742
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   131
{   WWT_CLOSEBOX,   RESIZE_NONE,   COLOUR_DARK_GREEN,     0,    10,     0,    13, STR_00C5,            STR_018B_CLOSE_WINDOW },
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   132
{    WWT_CAPTION,   RESIZE_NONE,   COLOUR_DARK_GREEN,    11,    51,     0,    13, STR_A000_AIRPORTS,   STR_018C_WINDOW_TITLE_DRAG_THIS },
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   133
{  WWT_STICKYBOX,   RESIZE_NONE,   COLOUR_DARK_GREEN,    52,    63,     0,    13, 0x0,                 STR_STICKY_BUTTON },
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   134
{     WWT_IMGBTN,   RESIZE_NONE,   COLOUR_DARK_GREEN,     0,    41,    14,    35, SPR_IMG_AIRPORT,     STR_A01E_BUILD_AIRPORT },
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   135
{     WWT_IMGBTN,   RESIZE_NONE,   COLOUR_DARK_GREEN,    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
   136
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   137
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   138
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   139
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   140
static const WindowDesc _air_toolbar_desc = {
7341
02515d0d4ced (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7241
diff changeset
   141
	WDP_ALIGN_TBR, 22, 64, 36, 64, 36,
5893
7e431a4abebb (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 5860
diff changeset
   142
	WC_BUILD_TOOLBAR, WC_NONE,
756
b76998029c12 (svn r1212) -Feature: sticky windows all build-toolbars
darkvater
parents: 751
diff changeset
   143
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   144
	_air_toolbar_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   145
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   146
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6117
diff changeset
   147
void ShowBuildAirToolbar()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   148
{
10207
c291a21b304e (svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
rubidium
parents: 9742
diff changeset
   149
	if (!IsValidCompanyID(_current_company)) return;
5005
f5086bd3945a (svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents: 4968
diff changeset
   150
9080
34bc7cbbb79a (svn r12939) -Codechange: do not use the window proc to determine whether a toolbar is a rail toolbar, but use the window number.
rubidium
parents: 9066
diff changeset
   151
	DeleteWindowByClass(WC_BUILD_TOOLBAR);
9303
6b6b52069079 (svn r13171) -Codechange: make a class of the Build[Air|Rail|Road|Dock]ToolbarWindows.
rubidium
parents: 9293
diff changeset
   152
	AllocateWindowDescFront<BuildAirToolbarWindow>(&_air_toolbar_desc, TRANSPORT_AIR);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   153
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   154
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   155
class AirportPickerWindow : public PickerWindowBase {
8879
976ce196dddf (svn r12646) -Codechange: another run of code-style cleanup
belugas
parents: 8878
diff changeset
   156
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   157
	enum {
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   158
		BAW_BOTTOMPANEL = 10,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   159
		BAW_SMALL_AIRPORT,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   160
		BAW_CITY_AIRPORT,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   161
		BAW_HELIPORT,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   162
		BAW_METRO_AIRPORT,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   163
		BAW_STR_INTERNATIONAL_AIRPORT,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   164
		BAW_COMMUTER_AIRPORT,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   165
		BAW_HELIDEPOT,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   166
		BAW_STR_INTERCONTINENTAL_AIRPORT,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   167
		BAW_HELISTATION,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   168
		BAW_LAST_AIRPORT = BAW_HELISTATION,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   169
		BAW_AIRPORT_COUNT = BAW_LAST_AIRPORT - BAW_SMALL_AIRPORT + 1,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   170
		BAW_BTN_DONTHILIGHT = BAW_LAST_AIRPORT + 1,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   171
		BAW_BTN_DOHILIGHT,
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   172
	};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   173
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   174
public:
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   175
9338
3d6f9ddd431d (svn r13230) -Fix [FS#2030](r13171): When closing toolbars, also close their PickerWindows.
frosch
parents: 9334
diff changeset
   176
	AirportPickerWindow(const WindowDesc *desc, Window *parent) : PickerWindowBase(desc, parent)
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   177
	{
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   178
		this->SetWidgetLoweredState(BAW_BTN_DONTHILIGHT, !_station_show_coverage);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   179
		this->SetWidgetLoweredState(BAW_BTN_DOHILIGHT, _station_show_coverage);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   180
		this->LowerWidget(_selected_airport_type + BAW_SMALL_AIRPORT);
1109
ecb98f43ba2c (svn r1610) Remove trailing whitespace (last time ever, i hope)
tron
parents: 1093
diff changeset
   181
9413
7042a8ec3fa8 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 9354
diff changeset
   182
		if (_settings_game.economy.station_noise_level) {
9334
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   183
			ResizeWindowForWidget(this, BAW_BOTTOMPANEL, 0, 10);
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   184
		}
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   185
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   186
		this->FindWindowPlacementAndResize(desc);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   187
	}
8879
976ce196dddf (svn r12646) -Codechange: another run of code-style cleanup
belugas
parents: 8878
diff changeset
   188
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   189
	virtual void OnPaint()
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   190
	{
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   191
		int i; // airport enabling loop
9334
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   192
		uint16 y_noise_offset = 0;
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   193
		uint32 avail_airports;
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   194
		const AirportFTAClass *airport;
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   195
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   196
		avail_airports = GetValidAirports();
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   197
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   198
		this->RaiseWidget(_selected_airport_type + BAW_SMALL_AIRPORT);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   199
		if (!HasBit(avail_airports, 0) && _selected_airport_type == AT_SMALL) _selected_airport_type = AT_LARGE;
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   200
		if (!HasBit(avail_airports, 1) && _selected_airport_type == AT_LARGE) _selected_airport_type = AT_SMALL;
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   201
		this->LowerWidget(_selected_airport_type + BAW_SMALL_AIRPORT);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   202
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   203
		/* 'Country Airport' starts at widget BAW_SMALL_AIRPORT, and if its bit is set, it is
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   204
		 * available, so take its opposite value to set the disabled state.
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   205
		 * There are 9 buildable airports
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   206
		 * XXX TODO : all airports should be held in arrays, with all relevant data.
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   207
		 * This should be part of newgrf-airports, i suppose
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   208
		 */
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   209
		for (i = 0; i < BAW_AIRPORT_COUNT; i++) this->SetWidgetDisabledState(i + BAW_SMALL_AIRPORT, !HasBit(avail_airports, i));
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   210
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   211
		/* select default the coverage area to 'Off' (16) */
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   212
		airport = GetAirport(_selected_airport_type);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   213
		SetTileSelectSize(airport->size_x, airport->size_y);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   214
9413
7042a8ec3fa8 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 9354
diff changeset
   215
		int rad = _settings_game.station.modified_catchment ? airport->catchment : (uint)CA_UNMODIFIED;
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   216
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   217
		if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   218
9273
35e0224ea8f1 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents: 9268
diff changeset
   219
		this->DrawWidgets();
9334
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   220
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   221
		/* only show the station (airport) noise, if the noise option is activated */
9413
7042a8ec3fa8 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 9354
diff changeset
   222
		if (_settings_game.economy.station_noise_level) {
9334
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   223
			/* show the noise of the selected airport */
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   224
			SetDParam(0, airport->noise_level);
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   225
			DrawString(2, 206, STR_STATION_NOISE, 0);
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   226
			y_noise_offset = 10;
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   227
		}
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   228
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   229
		/* strings such as 'Size' and 'Coverage Area' */
9334
28ac6c8e0795 (svn r13226) -Feature: Allow to have more than only two airports per town. The number of airports is now controlled by the noise each of them generates, the distance from town's center and how tolerant the town is.
belugas
parents: 9317
diff changeset
   230
		int text_end = DrawStationCoverageAreaText(2, this->widget[BAW_BTN_DOHILIGHT].bottom + 4 + y_noise_offset, SCT_ALL, rad, false);
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   231
		text_end = DrawStationCoverageAreaText(2, text_end + 4, SCT_ALL, rad, true) + 4;
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   232
		if (text_end != this->widget[BAW_BOTTOMPANEL].bottom) {
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   233
			this->SetDirty();
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   234
			ResizeWindowForWidget(this, BAW_BOTTOMPANEL, 0, text_end - this->widget[BAW_BOTTOMPANEL].bottom);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   235
			this->SetDirty();
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   236
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   237
	}
9268
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   238
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   239
	virtual void OnClick(Point pt, int widget)
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   240
	{
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   241
		switch (widget) {
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   242
			case BAW_SMALL_AIRPORT: case BAW_CITY_AIRPORT: case BAW_HELIPORT: case BAW_METRO_AIRPORT:
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   243
			case BAW_STR_INTERNATIONAL_AIRPORT: case BAW_COMMUTER_AIRPORT: case BAW_HELIDEPOT:
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   244
			case BAW_STR_INTERCONTINENTAL_AIRPORT: case BAW_HELISTATION:
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   245
				this->RaiseWidget(_selected_airport_type + BAW_SMALL_AIRPORT);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   246
				_selected_airport_type = widget - BAW_SMALL_AIRPORT;
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   247
				this->LowerWidget(_selected_airport_type + BAW_SMALL_AIRPORT);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   248
				SndPlayFx(SND_15_BEEP);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   249
				this->SetDirty();
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   250
				break;
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   251
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   252
			case BAW_BTN_DONTHILIGHT: case BAW_BTN_DOHILIGHT:
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   253
				_station_show_coverage = (widget != BAW_BTN_DONTHILIGHT);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   254
				this->SetWidgetLoweredState(BAW_BTN_DONTHILIGHT, !_station_show_coverage);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   255
				this->SetWidgetLoweredState(BAW_BTN_DOHILIGHT, _station_show_coverage);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   256
				SndPlayFx(SND_15_BEEP);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   257
				this->SetDirty();
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   258
				break;
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   259
		}
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   260
	}
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   261
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   262
	virtual void OnTick()
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   263
	{
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   264
		CheckRedrawStationCoverage(this);
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   265
	}
fa447d3b408d (svn r13134) -Codechange: make a class of the Airport Picker Window.
belugas
parents: 9238
diff changeset
   266
};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   267
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   268
static const Widget _build_airport_picker_widgets[] = {
9742
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   269
{   WWT_CLOSEBOX,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,    10,     0,    13, STR_00C5,                         STR_018B_CLOSE_WINDOW},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   270
{    WWT_CAPTION,   RESIZE_NONE,   COLOUR_DARK_GREEN,  11,   147,     0,    13, STR_3001_AIRPORT_SELECTION,       STR_018C_WINDOW_TITLE_DRAG_THIS},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   271
{      WWT_PANEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,   147,    14,    52, 0x0,                              STR_NULL},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   272
{      WWT_LABEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,   147,    14,    27, STR_SMALL_AIRPORTS,               STR_NULL},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   273
{      WWT_PANEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,   147,    53,    89, 0x0,                              STR_NULL},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   274
{      WWT_LABEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,   147,    52,    65, STR_LARGE_AIRPORTS,               STR_NULL},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   275
{      WWT_PANEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,   147,    90,   127, 0x0,                              STR_NULL},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   276
{      WWT_LABEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,   147,    90,   103, STR_HUB_AIRPORTS,                 STR_NULL},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   277
{      WWT_PANEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,   147,   128,   177, 0x0,                              STR_NULL},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   278
{      WWT_LABEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,   147,   128,   141, STR_HELIPORTS,                    STR_NULL},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   279
{      WWT_PANEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   0,   147,   178,   239, 0x0,                              STR_NULL}, // bottom general box
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   280
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,         2,   145,    27,    38, STR_SMALL_AIRPORT,                STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   281
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,         2,   145,    65,    76, STR_CITY_AIRPORT,                 STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   282
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,         2,   145,   141,   152, STR_HELIPORT,                     STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   283
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,         2,   145,    77,    88, STR_METRO_AIRPORT ,               STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   284
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,         2,   145,   103,   114, STR_INTERNATIONAL_AIRPORT,        STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   285
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,         2,   145,    39,    50, STR_COMMUTER_AIRPORT,             STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   286
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,         2,   145,   165,   176, STR_HELIDEPOT,                    STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   287
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,         2,   145,   115,   126, STR_INTERCONTINENTAL_AIRPORT,     STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   288
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,         2,   145,   153,   164, STR_HELISTATION,                  STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   289
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,        14,    73,   191,   202, STR_02DB_OFF,                     STR_3065_DON_T_HIGHLIGHT_COVERAGE},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   290
{    WWT_TEXTBTN,   RESIZE_NONE,   COLOUR_GREY,        74,   133,   191,   202, STR_02DA_ON,                      STR_3064_HIGHLIGHT_COVERAGE_AREA},
fcbe9e9e2016 (svn r13875) -Codechange: Remove some magic numbers in favour of the Colours enum they are representing
belugas
parents: 9659
diff changeset
   291
{      WWT_LABEL,   RESIZE_NONE,   COLOUR_DARK_GREEN,   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
   292
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   293
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   294
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   295
static const WindowDesc _build_airport_desc = {
7341
02515d0d4ced (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7241
diff changeset
   296
	WDP_AUTO, WDP_AUTO, 148, 240, 148, 240,
5070
7f5b13b7e728 (svn r7128) -Codechange: Replace magic numbers by magic enums (windowdesc positioning WDP_AUTO = -1)
Darkvater
parents: 5005
diff changeset
   297
	WC_BUILD_STATION, WC_BUILD_TOOLBAR,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   298
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   299
	_build_airport_picker_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   300
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   301
9338
3d6f9ddd431d (svn r13230) -Fix [FS#2030](r13171): When closing toolbars, also close their PickerWindows.
frosch
parents: 9334
diff changeset
   302
static void ShowBuildAirportPicker(Window *parent)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   303
{
9338
3d6f9ddd431d (svn r13230) -Fix [FS#2030](r13171): When closing toolbars, also close their PickerWindows.
frosch
parents: 9334
diff changeset
   304
	new AirportPickerWindow(&_build_airport_desc, parent);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   305
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   306
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6117
diff changeset
   307
void InitializeAirportGui()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   308
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   309
	_selected_airport_type = AT_SMALL;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   310
}