author | peter1138 |
Mon, 23 Oct 2006 21:25:30 +0000 | |
changeset 4931 | c25335d7e99c |
parent 4930 | 708801d486c6 |
child 4932 | 4bf213d0ed53 |
permissions | -rw-r--r-- |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
1 |
/* $Id$ */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
2 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
3 |
#include "stdafx.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
4 |
#include "openttd.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
5 |
#include "aircraft.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
6 |
#include "debug.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
7 |
#include "functions.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
8 |
#include "table/sprites.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
9 |
#include "table/strings.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
10 |
#include "window.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
11 |
#include "gui.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
12 |
#include "vehicle.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
13 |
#include "gfx.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
14 |
#include "station.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
15 |
#include "command.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
16 |
#include "engine.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
17 |
#include "player.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
18 |
#include "depot.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
19 |
#include "airport.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
20 |
#include "vehicle_gui.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
21 |
#include "newgrf_engine.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
22 |
#include "date.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
23 |
#include "strings.h" |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
24 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
25 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
26 |
typedef enum BuildVehicleWidgets { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
27 |
BUILD_VEHICLE_WIDGET_CLOSEBOX = 0, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
28 |
BUILD_VEHICLE_WIDGET_CAPTION, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
29 |
BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
30 |
BUILD_VEHICLE_WIDGET_SORT_TEXT, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
31 |
BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
32 |
BUILD_VEHICLE_WIDGET_LIST, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
33 |
BUILD_VEHICLE_WIDGET_SCROLLBAR, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
34 |
BUILD_VEHICLE_WIDGET_PANEL, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
35 |
BUILD_VEHICLE_WIDGET_PLANES, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
36 |
BUILD_VEHICLE_WIDGET_JETS, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
37 |
BUILD_VEHICLE_WIDGET_HELICOPTERS, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
38 |
BUILD_VEHICLE_WIDGET_BUILD, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
39 |
BUILD_VEHICLE_WIDGET_RENAME, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
40 |
BUILD_VEHICLE_WIDGET_RESIZE, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
41 |
} BuildVehicleWidget; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
42 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
43 |
static const Widget _build_vehicle_widgets[] = { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
44 |
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW }, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
45 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 239, 0, 13, STR_A005_NEW_AIRCRAFT, STR_018C_WINDOW_TITLE_DRAG_THIS }, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
46 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 80, 14, 25, STR_SORT_BY, STR_SORT_ORDER_TIP}, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
47 |
{ WWT_PANEL, RESIZE_NONE, 14, 81, 227, 14, 25, 0x0, STR_SORT_CRITERIA_TIP}, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
48 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 228, 239, 14, 25, STR_0225, STR_SORT_CRITERIA_TIP}, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
49 |
{ WWT_MATRIX, RESIZE_BOTTOM, 14, 0, 227, 26, 121, 0x401, STR_A025_AIRCRAFT_SELECTION_LIST }, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
50 |
{ WWT_SCROLLBAR, RESIZE_BOTTOM, 14, 228, 239, 26, 121, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST }, |
4931
c25335d7e99c
(svn r6911) - Codechange: Add extra space to all purchase windows (and the replace window) to allow room for more text. (mart3p)
peter1138
parents:
4930
diff
changeset
|
51 |
{ WWT_PANEL, RESIZE_TB, 14, 0, 239, 122, 213, 0x0, STR_NULL }, |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
52 |
|
4931
c25335d7e99c
(svn r6911) - Codechange: Add extra space to all purchase windows (and the replace window) to allow room for more text. (mart3p)
peter1138
parents:
4930
diff
changeset
|
53 |
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 79, 214, 225, STR_BLACK_PLANES, STR_BUILD_PLANES_TIP }, |
c25335d7e99c
(svn r6911) - Codechange: Add extra space to all purchase windows (and the replace window) to allow room for more text. (mart3p)
peter1138
parents:
4930
diff
changeset
|
54 |
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 80, 159, 214, 225, STR_BLACK_JETS, STR_BUILD_JETS_TIP }, |
c25335d7e99c
(svn r6911) - Codechange: Add extra space to all purchase windows (and the replace window) to allow room for more text. (mart3p)
peter1138
parents:
4930
diff
changeset
|
55 |
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 160, 239, 214, 225, STR_BLACK_HELICOPTERS, STR_BUILD_HELICOPTERS_TIP }, |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
56 |
|
4931
c25335d7e99c
(svn r6911) - Codechange: Add extra space to all purchase windows (and the replace window) to allow room for more text. (mart3p)
peter1138
parents:
4930
diff
changeset
|
57 |
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 114, 226, 237, STR_A006_BUILD_AIRCRAFT, STR_A026_BUILD_THE_HIGHLIGHTED_AIRCRAFT }, |
c25335d7e99c
(svn r6911) - Codechange: Add extra space to all purchase windows (and the replace window) to allow room for more text. (mart3p)
peter1138
parents:
4930
diff
changeset
|
58 |
{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 115, 227, 226, 237, STR_A037_RENAME, STR_A038_RENAME_AIRCRAFT_TYPE }, |
c25335d7e99c
(svn r6911) - Codechange: Add extra space to all purchase windows (and the replace window) to allow room for more text. (mart3p)
peter1138
parents:
4930
diff
changeset
|
59 |
{ WWT_RESIZEBOX, RESIZE_TB, 14, 228, 239, 226, 237, 0x0, STR_RESIZE_BUTTON }, |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
60 |
{ WIDGETS_END}, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
61 |
}; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
62 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
63 |
static bool _internal_sort_order; // descending/ascending |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
64 |
static byte _last_sort_criteria = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
65 |
static bool _last_sort_order = false; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
66 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
67 |
typedef int CDECL VehicleSortListingTypeFunction(const void*, const void*); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
68 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
69 |
static int CDECL EngineNumberSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
70 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
71 |
const EngineID va = *(const EngineID*)a; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
72 |
const EngineID vb = *(const EngineID*)b; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
73 |
int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
74 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
75 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
76 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
77 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
78 |
static int CDECL EngineIntroDateSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
79 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
80 |
const int va = GetEngine(*(const EngineID*)a)->intro_date; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
81 |
const int vb = GetEngine(*(const EngineID*)b)->intro_date; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
82 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
83 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
84 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
85 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
86 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
87 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
88 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
89 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
90 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
91 |
static int CDECL EngineNameSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
92 |
{ |
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
93 |
static EngineID last_engine[2] = { INVALID_ENGINE, INVALID_ENGINE }; |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
94 |
static char last_name[2][64] = { "\0", "\0" }; |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
95 |
|
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
96 |
const EngineID va = *(const EngineID*)a; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
97 |
const EngineID vb = *(const EngineID*)b; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
98 |
int r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
99 |
|
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
100 |
if (va != last_engine[0]) { |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
101 |
last_engine[0] = va; |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4896
diff
changeset
|
102 |
GetString(last_name[0], GetCustomEngineName(va), lastof(last_name[0])); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
103 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
104 |
|
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
105 |
if (vb != last_engine[1]) { |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
106 |
last_engine[1] = vb; |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4896
diff
changeset
|
107 |
GetString(last_name[1], GetCustomEngineName(vb), lastof(last_name[1])); |
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
108 |
} |
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
109 |
|
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
110 |
r = strcmp(last_name[0], last_name[1]); // sort by name |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
111 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
112 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
113 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
114 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
115 |
} |
4804
bfa7a5b5ad15
(svn r6726) -Codechange: [vehicle build window] cleaned up the name sorter (mainly by peter1138)
bjarni
parents:
4800
diff
changeset
|
116 |
return _internal_sort_order ? -r : r; |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
117 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
118 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
119 |
static int CDECL EngineReliabilitySorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
120 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
121 |
const int va = GetEngine(*(const EngineID*)a)->reliability; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
122 |
const int vb = GetEngine(*(const EngineID*)b)->reliability; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
123 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
124 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
125 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
126 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
127 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
128 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
129 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
130 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
131 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
132 |
/* Aircraft sorting functions */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
133 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
134 |
static int CDECL AircraftEngineCostSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
135 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
136 |
const int va = AircraftVehInfo(*(const EngineID*)a)->base_cost; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
137 |
const int vb = AircraftVehInfo(*(const EngineID*)b)->base_cost; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
138 |
int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
139 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
140 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
141 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
142 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
143 |
static int CDECL AircraftEngineSpeedSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
144 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
145 |
const int va = AircraftVehInfo(*(const EngineID*)a)->max_speed; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
146 |
const int vb = AircraftVehInfo(*(const EngineID*)b)->max_speed; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
147 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
148 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
149 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
150 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
151 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
152 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
153 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
154 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
155 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
156 |
static int CDECL AircraftEngineRunningCostSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
157 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
158 |
const int va = AircraftVehInfo(*(const EngineID*)a)->running_cost; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
159 |
const int vb = AircraftVehInfo(*(const EngineID*)b)->running_cost; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
160 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
161 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
162 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
163 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
164 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
165 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
166 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
167 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
168 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
169 |
static int CDECL AircraftEngineCargoSorter(const void *a, const void *b) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
170 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
171 |
const int va = AircraftVehInfo(*(const EngineID*)a)->passenger_capacity; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
172 |
const int vb = AircraftVehInfo(*(const EngineID*)b)->passenger_capacity; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
173 |
const int r = va - vb; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
174 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
175 |
if (r == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
176 |
/* Use EngineID to sort instead since we want consistent sorting */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
177 |
return EngineNumberSorter(a, b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
178 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
179 |
return _internal_sort_order ? -r : r; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
180 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
181 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
182 |
static VehicleSortListingTypeFunction* const _aircraft_sorter[] = { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
183 |
&EngineNumberSorter, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
184 |
&AircraftEngineCostSorter, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
185 |
&AircraftEngineSpeedSorter, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
186 |
&EngineIntroDateSorter, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
187 |
&EngineNameSorter, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
188 |
&AircraftEngineRunningCostSorter, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
189 |
&EngineReliabilitySorter, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
190 |
&AircraftEngineCargoSorter, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
191 |
}; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
192 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
193 |
static const StringID _aircraft_sort_listing[] = { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
194 |
STR_ENGINE_SORT_ENGINE_ID, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
195 |
STR_ENGINE_SORT_COST, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
196 |
STR_SORT_BY_MAX_SPEED, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
197 |
STR_ENGINE_SORT_INTRO_DATE, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
198 |
STR_SORT_BY_DROPDOWN_NAME, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
199 |
STR_ENGINE_SORT_RUNNING_COST, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
200 |
STR_SORT_BY_RELIABILITY, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
201 |
STR_ENGINE_SORT_CARGO_CAPACITY, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
202 |
INVALID_STRING_ID |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
203 |
}; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
204 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
205 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
206 |
/** |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
207 |
* Draw the purchase info details of an aircraft at a given location. |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
208 |
* @param x,y location where to draw the info |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
209 |
* @param engine_number the engine of which to draw the info of |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
210 |
*/ |
4930
708801d486c6
(svn r6910) - Codechange: Supply width of area when drawing purchase info instead of using hardcoded values. (mart3p)
peter1138
parents:
4912
diff
changeset
|
211 |
void DrawAircraftPurchaseInfo(int x, int y, uint w, EngineID engine_number) |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
212 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
213 |
const AircraftVehicleInfo *avi = AircraftVehInfo(engine_number); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
214 |
const Engine *e = GetEngine(engine_number); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
215 |
CargoID cargo; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
216 |
YearMonthDay ymd; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
217 |
ConvertDateToYMD(e->intro_date, &ymd); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
218 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
219 |
/* Purchase cost - Max speed */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
220 |
SetDParam(0, avi->base_cost * (_price.aircraft_base>>3)>>5); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
221 |
SetDParam(1, avi->max_speed * 128 / 10); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
222 |
DrawString(x, y, STR_PURCHASE_INFO_COST_SPEED, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
223 |
y += 10; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
224 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
225 |
/* Cargo capacity */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
226 |
cargo = FindFirstRefittableCargo(engine_number); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
227 |
if (cargo == CT_INVALID || cargo == CT_PASSENGERS) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
228 |
SetDParam(0, avi->passenger_capacity); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
229 |
SetDParam(1, avi->mail_capacity); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
230 |
DrawString(x, y, STR_PURCHASE_INFO_AIRCRAFT_CAPACITY, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
231 |
} else { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
232 |
/* Note, if the default capacity is selected by the refit capacity |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
233 |
* callback, then the capacity shown is likely to be incorrect. */ |
4896
f86350aaaaa5
(svn r6855) - Codechange: When displaying a "quantity of cargo" string, use the {CARGO} command and supply the cargo type and quantity, instead of manually looking up the cargo type's string.
peter1138
parents:
4807
diff
changeset
|
234 |
SetDParam(0, cargo); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
235 |
SetDParam(1, AircraftDefaultCargoCapacity(cargo, engine_number)); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
236 |
SetDParam(2, STR_9842_REFITTABLE); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
237 |
DrawString(x, y, STR_PURCHASE_INFO_CAPACITY, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
238 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
239 |
y += 10; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
240 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
241 |
/* Running cost */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
242 |
SetDParam(0, avi->running_cost * _price.aircraft_running >> 8); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
243 |
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
244 |
y += 10; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
245 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
246 |
/* Design date - Life length */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
247 |
SetDParam(0, ymd.year); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
248 |
SetDParam(1, e->lifelength); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
249 |
DrawString(x, y, STR_PURCHASE_INFO_DESIGNED_LIFE, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
250 |
y += 10; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
251 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
252 |
/* Reliability */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
253 |
SetDParam(0, e->reliability * 100 >> 16); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
254 |
DrawString(x, y, STR_PURCHASE_INFO_RELIABILITY, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
255 |
y += 10; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
256 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
257 |
/* Additional text from NewGRF */ |
4930
708801d486c6
(svn r6910) - Codechange: Supply width of area when drawing purchase info instead of using hardcoded values. (mart3p)
peter1138
parents:
4912
diff
changeset
|
258 |
y += ShowAdditionalText(x, y, w, engine_number); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
259 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
260 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
261 |
void DrawAircraftImage(const Vehicle *v, int x, int y, VehicleID selection) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
262 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
263 |
PalSpriteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
264 |
DrawSprite(GetAircraftImage(v, DIR_W) | pal, x + 25, y + 10); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
265 |
if (v->subtype == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
266 |
SpriteID rotor_sprite = GetCustomRotorSprite(v, true); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
267 |
if (rotor_sprite == 0) rotor_sprite = SPR_ROTOR_STOPPED; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
268 |
DrawSprite(rotor_sprite, x + 25, y + 5); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
269 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
270 |
if (v->index == selection) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
271 |
DrawFrameRect(x - 1, y - 1, x + 58, y + 21, 0xF, FR_BORDERONLY); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
272 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
273 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
274 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
275 |
void CcBuildAircraft(bool success, TileIndex tile, uint32 p1, uint32 p2) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
276 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
277 |
if (success) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
278 |
const Vehicle *v = GetVehicle(_new_vehicle_id); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
279 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
280 |
if (v->tile == _backup_orders_tile) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
281 |
_backup_orders_tile = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
282 |
RestoreVehicleOrders(v, _backup_orders_data); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
283 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
284 |
ShowAircraftViewWindow(v); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
285 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
286 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
287 |
|
4807
f03e16f22450
(svn r6729) -Fix r6707: [build aircraft window] solved a crash when using a grf set with a buildable helicopter with a lower EngineID than the first buildable plane
bjarni
parents:
4804
diff
changeset
|
288 |
static inline void ExtendEngineListSize(EngineID **engine_list, uint16 *engine_list_length, uint16 step_size, uint16 max) |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
289 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
290 |
*engine_list_length = min(*engine_list_length + step_size, max); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
291 |
*engine_list = realloc((void*)*engine_list, (*engine_list_length) * sizeof((*engine_list)[0])); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
292 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
293 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
294 |
static void GenerateBuildAircraftList(EngineID **planes, uint16 *num_planes, EngineID **jets, uint16 *num_jets, EngineID **helicopters, uint16 *num_helicopters) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
295 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
296 |
uint16 plane_length = *num_planes; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
297 |
uint16 jet_length = *num_jets; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
298 |
uint16 helicopter_length = *num_helicopters; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
299 |
EngineID eid; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
300 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
301 |
(*num_planes) = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
302 |
(*num_jets) = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
303 |
(*num_helicopters) = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
304 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
305 |
for (eid = AIRCRAFT_ENGINES_INDEX; eid < AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES; eid++) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
306 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
307 |
if (IsEngineBuildable(eid, VEH_Aircraft)) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
308 |
const AircraftVehicleInfo *avi = AircraftVehInfo(eid); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
309 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
310 |
switch (avi->subtype) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
311 |
case AIR_CTOL: // Propeller planes |
4807
f03e16f22450
(svn r6729) -Fix r6707: [build aircraft window] solved a crash when using a grf set with a buildable helicopter with a lower EngineID than the first buildable plane
bjarni
parents:
4804
diff
changeset
|
312 |
if (*num_planes == plane_length) ExtendEngineListSize(planes, &plane_length, 5, NUM_AIRCRAFT_ENGINES); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
313 |
(*planes)[(*num_planes)++] = eid; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
314 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
315 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
316 |
case (AIR_CTOL | AIR_FAST): // Jet planes |
4807
f03e16f22450
(svn r6729) -Fix r6707: [build aircraft window] solved a crash when using a grf set with a buildable helicopter with a lower EngineID than the first buildable plane
bjarni
parents:
4804
diff
changeset
|
317 |
if (*num_jets == jet_length) ExtendEngineListSize(jets, &jet_length, 5, NUM_AIRCRAFT_ENGINES); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
318 |
(*jets)[(*num_jets)++] = eid; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
319 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
320 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
321 |
case 0: // Helicopters |
4807
f03e16f22450
(svn r6729) -Fix r6707: [build aircraft window] solved a crash when using a grf set with a buildable helicopter with a lower EngineID than the first buildable plane
bjarni
parents:
4804
diff
changeset
|
322 |
if (*num_helicopters == helicopter_length) ExtendEngineListSize(helicopters, &helicopter_length, 5, NUM_AIRCRAFT_ENGINES); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
323 |
(*helicopters)[(*num_helicopters)++] = eid; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
324 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
325 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
326 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
327 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
328 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
329 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
330 |
static void GenerateBuildList(Window *w) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
331 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
332 |
switch (WP(w, buildvehicle_d).vehicle_type) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
333 |
case VEH_Aircraft: |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
334 |
GenerateBuildAircraftList(&WP(w, buildvehicle_d).list_a, &WP(w, buildvehicle_d).list_a_length, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
335 |
&WP(w, buildvehicle_d).list_b, &WP(w, buildvehicle_d).list_b_length, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
336 |
&WP(w, buildvehicle_d).list_c, &WP(w, buildvehicle_d).list_c_length); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
337 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
338 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
339 |
default: NOT_REACHED(); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
340 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
341 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
342 |
/* Ensure that we do not have trailing unused blocks in the arrays. We will never be able to access them anyway since we are unaware that they are there */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
343 |
WP(w, buildvehicle_d).list_a = realloc((void*)WP(w, buildvehicle_d).list_a, WP(w, buildvehicle_d).list_a_length * sizeof(WP(w, buildvehicle_d).list_a[0])); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
344 |
WP(w, buildvehicle_d).list_b = realloc((void*)WP(w, buildvehicle_d).list_b, WP(w, buildvehicle_d).list_b_length * sizeof(WP(w, buildvehicle_d).list_b[0])); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
345 |
WP(w, buildvehicle_d).list_c = realloc((void*)WP(w, buildvehicle_d).list_c, WP(w, buildvehicle_d).list_c_length * sizeof(WP(w, buildvehicle_d).list_c[0])); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
346 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
347 |
WP(w, buildvehicle_d).data_invalidated = false; // No need to regenerate the list anymore. We just did it |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
348 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
349 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
350 |
static inline EngineID *GetEngineArray(Window *w) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
351 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
352 |
switch (WP(w,buildvehicle_d).show_engine_button) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
353 |
case 1: return WP(w, buildvehicle_d).list_a; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
354 |
case 2: return WP(w, buildvehicle_d).list_b; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
355 |
case 3: return WP(w, buildvehicle_d).list_c; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
356 |
default: NOT_REACHED(); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
357 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
358 |
return NULL; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
359 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
360 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
361 |
static inline uint16 GetEngineArrayLength(Window *w) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
362 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
363 |
switch (WP(w,buildvehicle_d).show_engine_button) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
364 |
case 1: return WP(w, buildvehicle_d).list_a_length; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
365 |
case 2: return WP(w, buildvehicle_d).list_b_length; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
366 |
case 3: return WP(w, buildvehicle_d).list_c_length; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
367 |
default: NOT_REACHED(); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
368 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
369 |
return 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
370 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
371 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
372 |
static void SortAircraftBuildList(Window *w) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
373 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
374 |
_internal_sort_order = WP(w,buildvehicle_d).decenting_sort_order; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
375 |
qsort((void*)GetEngineArray(w), GetEngineArrayLength(w), sizeof(GetEngineArray(w)[0]), |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
376 |
_aircraft_sorter[WP(w,buildvehicle_d).sort_criteria]); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
377 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
378 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
379 |
static void DrawBuildAircraftWindow(Window *w) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
380 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
381 |
SetWindowWidgetLoweredState(w, BUILD_VEHICLE_WIDGET_PLANES, WP(w,buildvehicle_d).show_engine_button == 1); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
382 |
SetWindowWidgetLoweredState(w, BUILD_VEHICLE_WIDGET_JETS, WP(w,buildvehicle_d).show_engine_button == 2); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
383 |
SetWindowWidgetLoweredState(w, BUILD_VEHICLE_WIDGET_HELICOPTERS, WP(w,buildvehicle_d).show_engine_button == 3); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
384 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
385 |
SetWindowWidgetDisabledState(w, BUILD_VEHICLE_WIDGET_BUILD, w->window_number == 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
386 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
387 |
if (WP(w, buildvehicle_d).data_invalidated) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
388 |
GenerateBuildList(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
389 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
390 |
if (WP(w,buildvehicle_d).sel_engine != INVALID_ENGINE) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
391 |
int i; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
392 |
bool found = false; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
393 |
if (HASBIT(WP(w,buildvehicle_d).show_engine_button, 0)) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
394 |
for (i = 0; i < GetEngineArrayLength(w); i++) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
395 |
if (WP(w,buildvehicle_d).sel_engine != GetEngineArray(w)[i]) continue; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
396 |
found = true; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
397 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
398 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
399 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
400 |
if (!found) WP(w,buildvehicle_d).sel_engine = INVALID_ENGINE; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
401 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
402 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
403 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
404 |
SetVScrollCount(w, GetEngineArrayLength(w)); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
405 |
DrawWindowWidgets(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
406 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
407 |
if (WP(w,buildvehicle_d).sel_engine == INVALID_ENGINE && GetEngineArrayLength(w) != 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
408 |
WP(w,buildvehicle_d).sel_engine = GetEngineArray(w)[0]; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
409 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
410 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
411 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
412 |
int x = 2; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
413 |
int y = 27; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
414 |
EngineID selected_id = WP(w,buildvehicle_d).sel_engine; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
415 |
EngineID eid = w->vscroll.pos; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
416 |
EngineID *list = GetEngineArray(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
417 |
uint16 list_length = GetEngineArrayLength(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
418 |
uint16 max = min(w->vscroll.pos + w->vscroll.cap, list_length); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
419 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
420 |
for(; eid < max; eid++) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
421 |
const EngineID engine = list[eid]; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
422 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
423 |
DrawString(x + 62, y + 7, GetCustomEngineName(engine), engine == selected_id ? 0xC : 0x10); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
424 |
DrawAircraftEngine(x + 29, y + 10, engine, GetEnginePalette(engine, _local_player)); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
425 |
y += 24; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
426 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
427 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
428 |
if (selected_id != INVALID_ENGINE) { |
4930
708801d486c6
(svn r6910) - Codechange: Supply width of area when drawing purchase info instead of using hardcoded values. (mart3p)
peter1138
parents:
4912
diff
changeset
|
429 |
const Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL]; |
708801d486c6
(svn r6910) - Codechange: Supply width of area when drawing purchase info instead of using hardcoded values. (mart3p)
peter1138
parents:
4912
diff
changeset
|
430 |
DrawAircraftPurchaseInfo(x, wi->top + 1, wi->right - wi->left - 2, selected_id); |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
431 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
432 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
433 |
DrawString(85, 15, _aircraft_sort_listing[WP(w,buildvehicle_d).sort_criteria], 0x10); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
434 |
DoDrawString(WP(w,buildvehicle_d).decenting_sort_order ? DOWNARROW : UPARROW, 69, 15, 0x10); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
435 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
436 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
437 |
static void BuildAircraftClickEvent(Window *w, WindowEvent *e) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
438 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
439 |
byte click_state = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
440 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
441 |
switch (e->we.click.widget) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
442 |
case BUILD_VEHICLE_WIDGET_SORT_ASSENDING_DESCENDING: |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
443 |
WP(w,buildvehicle_d).decenting_sort_order = !WP(w,buildvehicle_d).decenting_sort_order; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
444 |
_last_sort_order = WP(w,buildvehicle_d).decenting_sort_order; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
445 |
SortAircraftBuildList(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
446 |
SetWindowDirty(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
447 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
448 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
449 |
case BUILD_VEHICLE_WIDGET_LIST: { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
450 |
uint i = (e->we.click.pt.y - 26) / 24; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
451 |
if (i < w->vscroll.cap) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
452 |
i += w->vscroll.pos; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
453 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
454 |
if (i < GetEngineArrayLength(w)) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
455 |
WP(w,buildvehicle_d).sel_engine = GetEngineArray(w)[i]; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
456 |
SetWindowDirty(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
457 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
458 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
459 |
} break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
460 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
461 |
case BUILD_VEHICLE_WIDGET_SORT_TEXT: case BUILD_VEHICLE_WIDGET_SORT_DROPDOWN:/* Select sorting criteria dropdown menu */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
462 |
ShowDropDownMenu(w, _aircraft_sort_listing, WP(w,buildvehicle_d).sort_criteria, BUILD_VEHICLE_WIDGET_SORT_DROPDOWN, 0, 0); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
463 |
return; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
464 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
465 |
case BUILD_VEHICLE_WIDGET_HELICOPTERS: click_state++; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
466 |
case BUILD_VEHICLE_WIDGET_JETS: click_state++; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
467 |
case BUILD_VEHICLE_WIDGET_PLANES: click_state++; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
468 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
469 |
if (WP(w,buildvehicle_d).show_engine_button == click_state) break; // We clicked the pressed button |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
470 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
471 |
WP(w,buildvehicle_d).sel_engine = INVALID_ENGINE; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
472 |
WP(w,buildvehicle_d).show_engine_button = click_state; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
473 |
w->vscroll.pos = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
474 |
SortAircraftBuildList(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
475 |
SetWindowDirty(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
476 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
477 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
478 |
case BUILD_VEHICLE_WIDGET_BUILD: { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
479 |
EngineID sel_eng = WP(w,buildvehicle_d).sel_engine; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
480 |
if (sel_eng != INVALID_ENGINE) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
481 |
DoCommandP(w->window_number, sel_eng, 0, CcBuildAircraft, CMD_BUILD_AIRCRAFT | CMD_MSG(STR_A008_CAN_T_BUILD_AIRCRAFT)); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
482 |
} break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
483 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
484 |
case BUILD_VEHICLE_WIDGET_RENAME: { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
485 |
EngineID sel_eng = WP(w,buildvehicle_d).sel_engine; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
486 |
if (sel_eng != INVALID_ENGINE) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
487 |
WP(w,buildvehicle_d).rename_engine = sel_eng; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
488 |
ShowQueryString(GetCustomEngineName(sel_eng), |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
489 |
STR_A039_RENAME_AIRCRAFT_TYPE, 31, 160, w->window_class, w->window_number, CS_ALPHANUMERAL); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
490 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
491 |
} break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
492 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
493 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
494 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
495 |
static void NewAircraftWndProc(Window *w, WindowEvent *e) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
496 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
497 |
switch (e->event) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
498 |
case WE_INVALIDATE_DATA: |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
499 |
WP(w,buildvehicle_d).data_invalidated = true; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
500 |
SetWindowDirty(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
501 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
502 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
503 |
case WE_DESTROY: |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
504 |
free((void*)WP(w, buildvehicle_d).list_a); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
505 |
free((void*)WP(w, buildvehicle_d).list_b); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
506 |
free((void*)WP(w, buildvehicle_d).list_c); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
507 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
508 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
509 |
case WE_PAINT: |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
510 |
DrawBuildAircraftWindow(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
511 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
512 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
513 |
case WE_CLICK: |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
514 |
BuildAircraftClickEvent(w, e); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
515 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
516 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
517 |
case WE_ON_EDIT_TEXT: { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
518 |
if (e->we.edittext.str[0] != '\0') { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
519 |
_cmd_text = e->we.edittext.str; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
520 |
DoCommandP(0, WP(w, buildvehicle_d).rename_engine, 0, NULL, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
521 |
CMD_RENAME_ENGINE | CMD_MSG(STR_A03A_CAN_T_RENAME_AIRCRAFT_TYPE)); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
522 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
523 |
} break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
524 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
525 |
case WE_DROPDOWN_SELECT: /* we have selected a dropdown item in the list */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
526 |
if (WP(w,buildvehicle_d).sort_criteria != e->we.dropdown.index) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
527 |
WP(w,buildvehicle_d).sort_criteria = e->we.dropdown.index; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
528 |
_last_sort_criteria = e->we.dropdown.index; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
529 |
SortAircraftBuildList(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
530 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
531 |
SetWindowDirty(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
532 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
533 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
534 |
case WE_RESIZE: |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
535 |
w->vscroll.cap += e->we.sizing.diff.y / 24; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
536 |
w->widget[BUILD_VEHICLE_WIDGET_LIST].data = (w->vscroll.cap << 8) + 1; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
537 |
break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
538 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
539 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
540 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
541 |
static const WindowDesc _build_vehicle_desc = { |
4931
c25335d7e99c
(svn r6911) - Codechange: Add extra space to all purchase windows (and the replace window) to allow room for more text. (mart3p)
peter1138
parents:
4930
diff
changeset
|
542 |
-1, -1, 240, 238, |
4800
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
543 |
WC_BUILD_VEHICLE,0, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
544 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
545 |
_build_vehicle_widgets, |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
546 |
NewAircraftWndProc |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
547 |
}; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
548 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
549 |
/* Disable the aircraft subtype buttons for the types, that can't be build at the current airport */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
550 |
static void CreateAircraftWindow(Window *w) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
551 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
552 |
TileIndex tile = w->window_number; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
553 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
554 |
if (tile == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
555 |
WP(w, buildvehicle_d).show_engine_button = 1; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
556 |
} else { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
557 |
byte acc_planes = GetAirport(GetStationByTile(tile)->airport_type)->acc_planes; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
558 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
559 |
WP(w, buildvehicle_d).show_engine_button = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
560 |
if (acc_planes == HELICOPTERS_ONLY || acc_planes == ALL) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
561 |
WP(w, buildvehicle_d).show_engine_button = 3; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
562 |
} else { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
563 |
DisableWindowWidget(w, BUILD_VEHICLE_WIDGET_HELICOPTERS); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
564 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
565 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
566 |
if (acc_planes == AIRCRAFT_ONLY || acc_planes == ALL) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
567 |
/* Set the start clicked button to jets if the list isn't empty. If not, then show propeller planes */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
568 |
WP(w, buildvehicle_d).show_engine_button = WP(w, buildvehicle_d).list_b_length == 0 ? 1 : 2; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
569 |
} else { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
570 |
DisableWindowWidget(w, BUILD_VEHICLE_WIDGET_JETS); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
571 |
DisableWindowWidget(w, BUILD_VEHICLE_WIDGET_PLANES); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
572 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
573 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
574 |
if (WP(w, buildvehicle_d).show_engine_button == 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
575 |
/* No plane type are buildable here */ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
576 |
NOT_REACHED(); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
577 |
WP(w, buildvehicle_d).show_engine_button = 1; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
578 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
579 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
580 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
581 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
582 |
void ShowBuildVehicleWindow(TileIndex tile, byte type) |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
583 |
{ |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
584 |
Window *w; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
585 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
586 |
DeleteWindowById(WC_BUILD_VEHICLE, tile); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
587 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
588 |
w = AllocateWindowDescFront(&_build_vehicle_desc, tile); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
589 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
590 |
if (w == NULL) return; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
591 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
592 |
WP(w, buildvehicle_d).vehicle_type = type; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
593 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
594 |
w->resize.step_height = GetVehicleListHeight(type); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
595 |
w->vscroll.cap = 4; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
596 |
w->widget[BUILD_VEHICLE_WIDGET_LIST].data = (w->vscroll.cap << 8) + 1; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
597 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
598 |
if (tile != 0) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
599 |
w->caption_color = GetTileOwner(tile); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
600 |
} else { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
601 |
w->caption_color = _local_player; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
602 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
603 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
604 |
WP(w, buildvehicle_d).list_a_length = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
605 |
WP(w, buildvehicle_d).list_b_length = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
606 |
WP(w, buildvehicle_d).list_c_length = 0; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
607 |
WP(w, buildvehicle_d).list_a = NULL; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
608 |
WP(w, buildvehicle_d).list_b = NULL; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
609 |
WP(w, buildvehicle_d).list_c = NULL; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
610 |
WP(w, buildvehicle_d).sel_engine = INVALID_ENGINE; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
611 |
WP(w, buildvehicle_d).sort_criteria = _last_sort_criteria; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
612 |
WP(w, buildvehicle_d).decenting_sort_order = _last_sort_order; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
613 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
614 |
GenerateBuildList(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
615 |
switch (type) { |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
616 |
case VEH_Aircraft: CreateAircraftWindow(w); break; |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
617 |
default: NOT_REACHED(); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
618 |
} |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
619 |
|
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
620 |
SortAircraftBuildList(w); |
5afc1bfc7a85
(svn r6722) -Codechange: [aircraft build window] moved aircraft build window to a file of it's own
bjarni
parents:
diff
changeset
|
621 |
} |