0
|
1 |
#ifndef AIRPORT_MOVEMENT_H
|
|
2 |
#define AIRPORT_MOVEMENT_H
|
|
3 |
|
|
4 |
#include "stdafx.h"
|
|
5 |
#include "macros.h"
|
|
6 |
|
|
7 |
// don't forget to change the airport_depots too for larger mapsizes. TILE_X_BITS 16
|
|
8 |
// won't fit in uint16 for example and overflow will occur in the checking code!
|
|
9 |
// TrueLight -- So make it a TileIndex..
|
|
10 |
|
|
11 |
typedef struct AirportMovingData {
|
|
12 |
int x,y;
|
|
13 |
byte flag;
|
|
14 |
byte direction;
|
|
15 |
} AirportMovingData;
|
|
16 |
|
|
17 |
// state machine input struct (from external file, etc.)
|
|
18 |
// Finite sTate mAchine --> FTA
|
|
19 |
typedef struct AirportFTAbuildup {
|
|
20 |
byte position; // the position that an airplane is at
|
|
21 |
byte heading; // the current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.)
|
|
22 |
uint32 block; // the block this position is on on the airport (st->airport_flags)
|
|
23 |
byte next_in_chain; // next position from this position
|
|
24 |
} AirportFTAbuildup;
|
|
25 |
|
|
26 |
enum {
|
|
27 |
AMED_NOSPDCLAMP = 1<<0,
|
|
28 |
AMED_TAKEOFF = 1<<1,
|
|
29 |
AMED_SLOWTURN = 1<<2,
|
|
30 |
AMED_LAND = 1<<3,
|
|
31 |
AMED_EXACTPOS = 1<<4,
|
|
32 |
AMED_BRAKE = 1<<5,
|
|
33 |
AMED_HELI_RAISE = 1<<6,
|
|
34 |
AMED_HELI_LOWER = 1<<7,
|
|
35 |
};
|
|
36 |
|
|
37 |
enum {MAX_ELEMENTS = 255};
|
|
38 |
enum {MAX_HEADINGS = 18};
|
|
39 |
|
|
40 |
///////////////////////////////////////////////////////////////////////
|
|
41 |
///////***********Movement States on Airports********************//////
|
|
42 |
// headings target
|
|
43 |
enum {
|
|
44 |
TO_ALL = 0,
|
|
45 |
HANGAR = 1,
|
|
46 |
TERM1 = 2,
|
|
47 |
TERM2 = 3,
|
|
48 |
TERM3 = 4,
|
|
49 |
TERM4 = 5,
|
|
50 |
TERM5 = 6,
|
|
51 |
TERM6 = 7,
|
|
52 |
HELIPAD1 = 8,
|
|
53 |
HELIPAD2 = 9,
|
|
54 |
TAKEOFF = 10,
|
|
55 |
STARTTAKEOFF = 11,
|
|
56 |
ENDTAKEOFF = 12,
|
|
57 |
HELITAKEOFF = 13,
|
|
58 |
FLYING = 14,
|
|
59 |
LANDING = 15,
|
|
60 |
ENDLANDING = 16,
|
|
61 |
HELILANDING = 17,
|
|
62 |
HELIENDLANDING = 18
|
|
63 |
};
|
|
64 |
|
|
65 |
///////////////////////////////////////////////////////////////////////
|
|
66 |
///////**********Movement Blocks on Airports*********************//////
|
|
67 |
// blocks (eg_airport_flags)
|
|
68 |
enum {
|
|
69 |
TERM1_block = 1 << 0,
|
|
70 |
TERM2_block = 1 << 1,
|
|
71 |
TERM3_block = 1 << 2,
|
|
72 |
TERM4_block = 1 << 3,
|
|
73 |
TERM5_block = 1 << 4,
|
|
74 |
TERM6_block = 1 << 5,
|
|
75 |
HELIPAD1_block = 1 << 6,
|
|
76 |
HELIPAD2_block = 1 << 7,
|
|
77 |
RUNWAY_IN_OUT_block = 1 << 8,
|
|
78 |
RUNWAY_IN_block = 1 << 8,
|
|
79 |
AIRPORT_BUSY_block = 1 << 8,
|
|
80 |
RUNWAY_OUT_block = 1 << 9,
|
|
81 |
TAXIWAY_BUSY_block = 1 << 10,
|
|
82 |
OUT_WAY_block = 1 << 11,
|
|
83 |
IN_WAY_block = 1 << 12,
|
|
84 |
AIRPORT_ENTRANCE_block = 1 << 13,
|
|
85 |
TERM_GROUP1_block = 1 << 14,
|
|
86 |
TERM_GROUP2_block = 1 << 15,
|
|
87 |
HANGAR2_AREA_block = 1 << 16,
|
|
88 |
TERM_GROUP2_ENTER1_block = 1 << 17,
|
|
89 |
TERM_GROUP2_ENTER2_block = 1 << 18,
|
|
90 |
TERM_GROUP2_EXIT1_block = 1 << 19,
|
|
91 |
TERM_GROUP2_EXIT2_block = 1 << 20,
|
|
92 |
PRE_HELIPAD_block = 1 << 21,
|
|
93 |
NOTHING_block = 1 << 30
|
|
94 |
};
|
|
95 |
|
|
96 |
///////////////////////////////////////////////////////////////////////
|
|
97 |
/////*********Movement Positions on Airports********************///////
|
|
98 |
// Country Airfield (small) 4x3
|
|
99 |
static const AirportMovingData _airport_moving_data_country[22] = {
|
|
100 |
{53,3,AMED_EXACTPOS,3}, // 00 In Hangar
|
|
101 |
{53,27,0,0}, // 01 Taxi to right outside depot
|
|
102 |
{32,23,AMED_EXACTPOS,7}, // 02 Terminal 1
|
|
103 |
{10,23,AMED_EXACTPOS,7}, // 03 Terminal 2
|
|
104 |
{43,37,0,0}, // 04 Going towards terminal 2
|
|
105 |
{24,37,0,0}, // 05 Going towards terminal 2
|
|
106 |
{53,37,0,0}, // 06 Going for takeoff
|
|
107 |
{61,40,AMED_EXACTPOS,1}, // 07 Taxi to start of runway (takeoff)
|
|
108 |
{3,40,AMED_NOSPDCLAMP,0}, // 08 Accelerate to end of runway
|
|
109 |
{-79,40,AMED_NOSPDCLAMP | AMED_TAKEOFF,0}, // 09 Take off
|
|
110 |
{177,40,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 10 Fly to landing position in air
|
|
111 |
{56,40,AMED_NOSPDCLAMP | AMED_LAND,0}, // 11 Going down for land
|
|
112 |
{3,40,AMED_NOSPDCLAMP | AMED_BRAKE,0}, // 12 Just landed, brake until end of runway
|
|
113 |
{ 7,40,0,0}, // 13 Just landed, turn around and taxi 1 square
|
|
114 |
{53,40,0,0}, // 14 Taxi from runway to crossing
|
|
115 |
{-31,193,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 15 Fly around waiting for a landing spot (north-east)
|
|
116 |
{1,1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 16 Fly around waiting for a landing spot (north-west)
|
|
117 |
{257,1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 17 Fly around waiting for a landing spot (south-west)
|
|
118 |
{273,49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 18 Fly around waiting for a landing spot (south)
|
|
119 |
{44,37,AMED_HELI_RAISE,0}, // 19 Helicopter takeoff
|
|
120 |
{44,40,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 20 In position above landing spot helicopter
|
|
121 |
{44,40,AMED_HELI_LOWER,0} // 21 Helicopter landing
|
|
122 |
};
|
|
123 |
|
|
124 |
// City Airport (large) 6x6
|
|
125 |
static const AirportMovingData _airport_moving_data_town[25] = {
|
|
126 |
{85,3,AMED_EXACTPOS,3}, // 00 In Hangar
|
|
127 |
{85,27,0,0}, // 01 Taxi to right outside depot
|
|
128 |
{26,41,AMED_EXACTPOS,5}, // 02 Terminal 1
|
|
129 |
{56,20,AMED_EXACTPOS,3}, // 03 Terminal 2
|
|
130 |
{38,8,AMED_EXACTPOS,5}, // 04 Terminal 3
|
|
131 |
{65,6,0,0}, // 05 Taxi to right in infront of terminal 2/3
|
|
132 |
{80,27,0,0}, // 06 Taxiway terminals 2-3
|
|
133 |
{44,63,0,0}, // 07 Taxi to Airport center
|
|
134 |
{58,71,0,0}, // 08 Towards takeoff
|
|
135 |
{72,85,0,0}, // 09 Taxi to runway (takeoff)
|
|
136 |
{89,85,AMED_EXACTPOS,1}, // 10 Taxi to start of runway (takeoff)
|
|
137 |
{3,85,AMED_NOSPDCLAMP,0}, // 11 Accelerate to end of runway
|
|
138 |
{-79,85,AMED_NOSPDCLAMP | AMED_TAKEOFF,0}, // 12 Take off
|
|
139 |
{177,85,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 13 Fly to landing position in air
|
|
140 |
{89,85,AMED_NOSPDCLAMP | AMED_LAND,0}, // 14 Going down for land
|
|
141 |
{3,85,AMED_NOSPDCLAMP | AMED_BRAKE,0}, // 15 Just landed, brake until end of runway
|
|
142 |
{20,87,0,0}, // 16 Just landed, turn around and taxi 1 square
|
|
143 |
{36,71,0,0}, // 17 Taxi from runway to crossing
|
|
144 |
{-31,193,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 18 Fly around waiting for a landing spot (north-east)
|
|
145 |
{1,1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 19 Fly around waiting for a landing spot (north-west)
|
|
146 |
{257,1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 20 Fly around waiting for a landing spot (south-west)
|
|
147 |
{273,49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 21 Fly around waiting for a landing spot (south)
|
|
148 |
{44,63,AMED_HELI_RAISE,0}, // 22 Helicopter takeoff
|
|
149 |
{28,74,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 23 In position above landing spot helicopter
|
|
150 |
{28,74,AMED_HELI_LOWER,0} // 24 Helicopter landing
|
|
151 |
};
|
|
152 |
|
|
153 |
// Metropolitan Airport (metropolitan) - 2 runways
|
|
154 |
static const AirportMovingData _airport_moving_data_metropolitan[27] = {
|
|
155 |
{85,3,AMED_EXACTPOS,3}, // 00 In Hangar
|
|
156 |
{85,27,0,0}, // 01 Taxi to right outside depot
|
|
157 |
{26,41,AMED_EXACTPOS,5}, // 02 Terminal 1
|
|
158 |
{56,20,AMED_EXACTPOS,3}, // 03 Terminal 2
|
|
159 |
{38,8,AMED_EXACTPOS,5}, // 04 Terminal 3
|
|
160 |
{65,6,0,0}, // 05 Taxi to right in infront of terminal 2/3
|
|
161 |
{70,33,0,0}, // 06 Taxiway terminals 2-3
|
|
162 |
{44,58,0,0}, // 07 Taxi to Airport center
|
|
163 |
{72,58,0,0}, // 08 Towards takeoff
|
|
164 |
{72,69,0,0}, // 09 Taxi to runway (takeoff)
|
|
165 |
{89,69,AMED_EXACTPOS,1}, // 10 Taxi to start of runway (takeoff)
|
|
166 |
{3,69,AMED_NOSPDCLAMP,0}, // 11 Accelerate to end of runway
|
|
167 |
{-79,69,AMED_NOSPDCLAMP | AMED_TAKEOFF,0}, // 12 Take off
|
|
168 |
{177,85,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 13 Fly to landing position in air
|
|
169 |
{89,85,AMED_NOSPDCLAMP | AMED_LAND,0}, // 14 Going down for land
|
|
170 |
{3,85,AMED_NOSPDCLAMP | AMED_BRAKE,0}, // 15 Just landed, brake until end of runway
|
|
171 |
{21,85,0,0}, // 16 Just landed, turn around and taxi 1 square
|
|
172 |
{21,69,0,0}, // 17 On Runway-out taxiing to In-Way
|
|
173 |
{21,54,AMED_EXACTPOS,5}, // 18 Taxi from runway to crossing
|
|
174 |
{-31,193,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 19 Fly around waiting for a landing spot (north-east)
|
|
175 |
{1,1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 20 Fly around waiting for a landing spot (north-west)
|
|
176 |
{257,1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 21 Fly around waiting for a landing spot (south-west)
|
|
177 |
{273,49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 22 Fly around waiting for a landing spot (south)
|
|
178 |
{44,58,0,0}, // 23 Helicopter takeoff spot on ground (to clear airport sooner)
|
|
179 |
{44,63,AMED_HELI_RAISE,0}, // 24 Helicopter takeoff
|
|
180 |
{15,54,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 25 Get in position above landing spot helicopter
|
|
181 |
{15,54,AMED_HELI_LOWER,0} // 26 Helicopter landing
|
|
182 |
};
|
|
183 |
|
|
184 |
// International Airport (international) - 2 runways, 6 terminals, dedicated helipod
|
|
185 |
static const AirportMovingData _airport_moving_data_international[51] = {
|
|
186 |
{7,55,AMED_EXACTPOS,3}, // 00 In Hangar 1
|
|
187 |
{100,21,AMED_EXACTPOS,3}, // 01 In Hangar 2
|
|
188 |
{7,70,0,0}, // 02 Taxi to right outside depot
|
|
189 |
{100,36,0,0}, // 03 Taxi to right outside depot
|
|
190 |
{38,70,AMED_EXACTPOS,5}, // 04 Terminal 1
|
|
191 |
{38,54,AMED_EXACTPOS,5}, // 05 Terminal 2
|
|
192 |
{38,38,AMED_EXACTPOS,5}, // 06 Terminal 3
|
|
193 |
{70,70,AMED_EXACTPOS,1}, // 07 Terminal 4
|
|
194 |
{70,54,AMED_EXACTPOS,1}, // 08 Terminal 5
|
|
195 |
{70,38,AMED_EXACTPOS,1}, // 09 Terminal 6
|
|
196 |
{104,71,AMED_EXACTPOS,1}, // 10 Helipad 1
|
|
197 |
{104,55,AMED_EXACTPOS,1}, // 11 Helipad 2
|
|
198 |
{22,87,0,0}, // 12 Towards Terminals 4/5/6, Helipad 1/2
|
|
199 |
{60,87,0,0}, // 13 Towards Terminals 4/5/6, Helipad 1/2
|
|
200 |
{66,87,0,0}, // 14 Towards Terminals 4/5/6, Helipad 1/2
|
|
201 |
{86,87,AMED_EXACTPOS,7}, // 15 Towards Terminals 4/5/6, Helipad 1/2
|
|
202 |
{86, 70,0,0}, // 16 In Front of Terminal 4 / Helipad 1
|
|
203 |
{86, 54,0,0}, // 17 In Front of Terminal 5 / Helipad 2
|
|
204 |
{86, 38,0,0}, // 18 In Front of Terminal 6
|
|
205 |
{86, 22,0,0}, // 19 Towards Terminals Takeoff (Taxiway)
|
|
206 |
{66,22,0,0}, // 20 Towards Terminals Takeoff (Taxiway)
|
|
207 |
{60,22,0,}, // 21 Towards Terminals Takeoff (Taxiway)
|
|
208 |
{38,22,0,0}, // 22 Towards Terminals Takeoff (Taxiway)
|
|
209 |
{22, 70,0,0}, // 23 In Front of Terminal 1
|
|
210 |
{22, 58,0,0}, // 24 In Front of Terminal 2
|
|
211 |
{22, 38,0,0}, // 25 In Front of Terminal 3
|
|
212 |
{22, 22,AMED_EXACTPOS,7}, // 26 Going for Takeoff
|
|
213 |
{22, 6,0,0}, // 27 On Runway-out, prepare for takeoff
|
|
214 |
{3,6,AMED_EXACTPOS,5}, // 28 Accelerate to end of runway
|
|
215 |
{60,6,AMED_NOSPDCLAMP,0}, // 29 Release control of runway, for smoother movement
|
|
216 |
{105,6,AMED_NOSPDCLAMP,0}, // 30 End of runway
|
|
217 |
{190, 6,AMED_NOSPDCLAMP | AMED_TAKEOFF,0}, // 31 Take off
|
|
218 |
{193,104,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 32 Fly to landing position in air
|
|
219 |
{105,104,AMED_NOSPDCLAMP | AMED_LAND,0}, // 33 Going down for land
|
|
220 |
{ 3,104,AMED_NOSPDCLAMP | AMED_BRAKE,0}, // 34 Just landed, brake until end of runway
|
|
221 |
{ 12,104,0,0}, // 35 Just landed, turn around and taxi 1 square
|
|
222 |
{ 7,84,0,0}, // 36 Taxi from runway to crossing
|
|
223 |
{-31,209,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 37 Fly around waiting for a landing spot (north-east)
|
|
224 |
{1,6,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 38 Fly around waiting for a landing spot (north-west)
|
|
225 |
{273,6,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 39 Fly around waiting for a landing spot (south-west)
|
|
226 |
{305,81,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 40 Fly around waiting for a landing spot (south)
|
|
227 |
// Helicopter
|
|
228 |
{128,80,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 41 Bufferspace before helipad
|
|
229 |
{128,80,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 42 Bufferspace before helipad
|
|
230 |
{96,71,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 43 Get in position for Helipad1
|
|
231 |
{96,55,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 44 Get in position for Helipad2
|
|
232 |
{96,71,AMED_HELI_LOWER,0}, // 45 Land at Helipad1
|
|
233 |
{96,55,AMED_HELI_LOWER,0}, // 46 Land at Helipad2
|
|
234 |
{104,71,AMED_HELI_RAISE,0}, // 47 Takeoff Helipad1
|
|
235 |
{104,55,AMED_HELI_RAISE,0}, // 48 Takeoff Helipad2
|
|
236 |
{104,32,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 49 Go to position for Hangarentrance in air
|
|
237 |
{104,32,AMED_HELI_LOWER,0} // 50 Land in HANGAR2_AREA to go to hangar
|
|
238 |
};
|
|
239 |
|
|
240 |
// Heliport (heliport)
|
|
241 |
static const AirportMovingData _airport_moving_data_heliport[9] = {
|
|
242 |
{ 5,9,AMED_EXACTPOS,1}, // 0 - At heliport terminal
|
|
243 |
{ 2,9,AMED_HELI_RAISE,0}, // 1 - Take off (play sound)
|
|
244 |
{-3,9,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 2 - In position above landing spot helicopter
|
|
245 |
{-3,9,AMED_HELI_LOWER,0}, // 3 - Land
|
|
246 |
{ 2,9,0,0}, // 4 - Goto terminal on ground
|
|
247 |
{-31, 59,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 5 - Circle #1 (north-east)
|
|
248 |
{-31,-49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 6 - Circle #2 (north-west)
|
|
249 |
{ 49,-49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 7 - Circle #3 (south-west)
|
|
250 |
{ 70, 9,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 8 - Circle #4 (south)
|
|
251 |
};
|
|
252 |
|
|
253 |
// Oilrig
|
|
254 |
static const AirportMovingData _airport_moving_data_oilrig[9] = {
|
|
255 |
{31,9,AMED_EXACTPOS,1}, // 0 - At oilrig terminal
|
|
256 |
{28,9,AMED_HELI_RAISE,0}, // 1 - Take off (play sound)
|
|
257 |
{23,9,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 2 - In position above landing spot helicopter
|
|
258 |
{23,9,AMED_HELI_LOWER,0}, // 3 - Land
|
|
259 |
{28,9,0,0}, // 4 - Goto terminal on ground
|
|
260 |
{-31, 69,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 5 - circle #1 (north-east)
|
|
261 |
{-31,-49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 6 - circle #2 (north-west)
|
|
262 |
{ 69,-49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 7 - circle #3 (south-west)
|
|
263 |
{ 70, 9,AMED_NOSPDCLAMP | AMED_SLOWTURN,0},// 8 - circle #4 (south)
|
|
264 |
};
|
|
265 |
|
|
266 |
///////////////////////////////////////////////////////////////////////
|
|
267 |
/////**********Movement Machine on Airports*********************///////
|
|
268 |
// first element of depots array tells us how many depots there are (to know size of array)
|
|
269 |
// this may be changed later when airports are moved to external file
|
|
270 |
static const TileIndex _airport_depots_country[] = {1, TILE_XY(3,0)};
|
|
271 |
static const AirportFTAbuildup _airport_fta_country[] = {
|
|
272 |
{0,HANGAR,NOTHING_block,1},
|
|
273 |
{1,255,AIRPORT_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM1,TERM1_block,2}, {1,TERM2,0,4}, {1,HELITAKEOFF,0,19}, {1,0,0,6},
|
|
274 |
{2,TERM1,TERM1_block,1},
|
|
275 |
{3,TERM2,TERM2_block,5},
|
|
276 |
{4,255,AIRPORT_BUSY_block,0}, {4,TERM2,0,5}, {4,HANGAR,0,1}, {4,TAKEOFF,0,6}, {4,HELITAKEOFF,0,1},
|
|
277 |
{5,255,AIRPORT_BUSY_block,0}, {5,TERM2,TERM2_block,3}, {5,0,0,4},
|
|
278 |
{6,0,AIRPORT_BUSY_block,7},
|
|
279 |
// takeoff
|
|
280 |
{7,TAKEOFF,AIRPORT_BUSY_block,8},
|
|
281 |
{8,STARTTAKEOFF,NOTHING_block,9},
|
|
282 |
{9,ENDTAKEOFF,NOTHING_block,0},
|
|
283 |
// landing
|
|
284 |
{10,FLYING,NOTHING_block,15}, {10,LANDING,0,11}, {10,HELILANDING,0,20},
|
|
285 |
{11,LANDING,AIRPORT_BUSY_block,12},
|
|
286 |
{12,0,AIRPORT_BUSY_block,13},
|
|
287 |
{13,ENDLANDING,AIRPORT_BUSY_block,14}, {13,TERM2,0,5}, {13,0,0,14},
|
|
288 |
{14,0,AIRPORT_BUSY_block,1},
|
|
289 |
// In air
|
|
290 |
{15,0,NOTHING_block,16},
|
|
291 |
{16,0,NOTHING_block,17},
|
|
292 |
{17,0,NOTHING_block,18},
|
|
293 |
{18,0,NOTHING_block,10},
|
|
294 |
{19,HELITAKEOFF,NOTHING_block,0},
|
|
295 |
{20,HELILANDING,AIRPORT_BUSY_block,21},
|
|
296 |
{21,HELIENDLANDING,AIRPORT_BUSY_block,1},
|
|
297 |
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
|
|
298 |
};
|
|
299 |
|
|
300 |
static const TileIndex _airport_depots_city[] = {1, TILE_XY(5,0)};
|
|
301 |
static const AirportFTAbuildup _airport_fta_city[] = {
|
|
302 |
{0,HANGAR,NOTHING_block,1}, {0,TAKEOFF,OUT_WAY_block,1}, {0,0,0,1},
|
|
303 |
{1,255,TAXIWAY_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM2,0,6}, {1,TERM3,0,6}, {1,0,0,7}, // for all else, go to 7
|
|
304 |
{2,TERM1,TERM1_block,7}, {2,TAKEOFF,OUT_WAY_block,7}, {2,0,0,7},
|
|
305 |
{3,TERM2,TERM2_block,5}, {3,TAKEOFF,OUT_WAY_block,5}, {3,0,0,5},
|
|
306 |
{4,TERM3,TERM3_block,5}, {4,TAKEOFF,OUT_WAY_block,5}, {4,0,0,5},
|
|
307 |
{5,255,TAXIWAY_BUSY_block,0}, {5,TERM2,TERM2_block,3}, {5,TERM3,TERM3_block,4}, {5,0,0,6},
|
|
308 |
{6,255,TAXIWAY_BUSY_block,0}, {6,TERM2,0,5}, {6,TERM3,0,5}, {6,HANGAR,0,1}, {6,0,0,7},
|
|
309 |
{7,255,TAXIWAY_BUSY_block,0}, {7,TERM1,TERM1_block,2}, {7,TAKEOFF,OUT_WAY_block,8}, {7,HELITAKEOFF,0,22}, {7,HANGAR,0,1}, {7,0,0,6},
|
|
310 |
{8,0,OUT_WAY_block,9},
|
|
311 |
{9,0,RUNWAY_IN_OUT_block,10},
|
|
312 |
// takeoff
|
|
313 |
{10,TAKEOFF,RUNWAY_IN_OUT_block,11},
|
|
314 |
{11,STARTTAKEOFF,NOTHING_block,12},
|
|
315 |
{12,ENDTAKEOFF,NOTHING_block,0},
|
|
316 |
// landing
|
|
317 |
{13,FLYING,NOTHING_block,18}, {13,LANDING,0,14}, {13,HELILANDING,0,23},
|
|
318 |
{14,LANDING,RUNWAY_IN_OUT_block,15},
|
|
319 |
{15,0,RUNWAY_IN_OUT_block,16},
|
|
320 |
{16,0,RUNWAY_IN_OUT_block,17},
|
|
321 |
{17,ENDLANDING,IN_WAY_block,7},
|
|
322 |
// In Air
|
|
323 |
{18,0,NOTHING_block,19},
|
|
324 |
{19,0,NOTHING_block,20},
|
|
325 |
{20,0,NOTHING_block,21},
|
|
326 |
{21,0,NOTHING_block,13},
|
|
327 |
// helicopter
|
|
328 |
{22,HELITAKEOFF,NOTHING_block,0},
|
|
329 |
{23,HELILANDING,IN_WAY_block,24},
|
|
330 |
{24,HELIENDLANDING,IN_WAY_block,17},
|
|
331 |
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
|
|
332 |
};
|
|
333 |
|
|
334 |
static const TileIndex _airport_depots_metropolitan[] = {1, TILE_XY(5,0)};
|
|
335 |
static const AirportFTAbuildup _airport_fta_metropolitan[] = {
|
|
336 |
{0,HANGAR,NOTHING_block,1},
|
|
337 |
{1,255,TAXIWAY_BUSY_block,0}, {1,HANGAR,0,0}, {1,TERM2,0,6}, {1,TERM3,0,6}, {1,0,0,7}, // for all else, go to 7
|
|
338 |
{2,TERM1,TERM1_block,7},
|
|
339 |
{3,TERM2,TERM2_block,5},
|
|
340 |
{4,TERM3,TERM3_block,5},
|
|
341 |
{5,255,TAXIWAY_BUSY_block,0}, {5,TERM2,TERM2_block,3}, {5,TERM3,TERM3_block,4}, {5,0,0,6},
|
|
342 |
{6,255,TAXIWAY_BUSY_block,0}, {6,TERM2,0,5}, {6,TERM3,0,5}, {6,HANGAR,0,1}, {6,0,0,7},
|
|
343 |
{7,255,TAXIWAY_BUSY_block,0}, {7,TERM1,TERM1_block,2}, {7,TAKEOFF,0,8}, {7,HELITAKEOFF,0,23}, {7,HANGAR,0,1}, {7,0,0,6},
|
|
344 |
{8,0,OUT_WAY_block,9},
|
|
345 |
{9,0,RUNWAY_OUT_block,10},
|
|
346 |
// takeoff
|
|
347 |
{10,TAKEOFF,RUNWAY_OUT_block,11},
|
|
348 |
{11,STARTTAKEOFF,NOTHING_block,12},
|
|
349 |
{12,ENDTAKEOFF,NOTHING_block,0},
|
|
350 |
// landing
|
|
351 |
{13,FLYING,NOTHING_block,19}, {13,LANDING,0,14}, {13,HELILANDING,0,25},
|
|
352 |
{14,LANDING,RUNWAY_IN_block,15},
|
|
353 |
{15,0,RUNWAY_IN_block,16},
|
|
354 |
{16,255,RUNWAY_IN_block,0}, {16,ENDLANDING,IN_WAY_block,17},
|
|
355 |
{17,255,RUNWAY_OUT_block,0}, {17,ENDLANDING,IN_WAY_block,18},
|
|
356 |
{18,ENDLANDING,IN_WAY_block,7},
|
|
357 |
// In Air
|
|
358 |
{19,0,NOTHING_block,20},
|
|
359 |
{20,0,NOTHING_block,21},
|
|
360 |
{21,0,NOTHING_block,22},
|
|
361 |
{22,0,NOTHING_block,13},
|
|
362 |
// helicopter
|
|
363 |
{23,0,NOTHING_block,24},
|
|
364 |
{24,HELITAKEOFF,NOTHING_block,0},
|
|
365 |
{25,HELILANDING,IN_WAY_block,26},
|
|
366 |
{26,HELIENDLANDING,IN_WAY_block,18},
|
|
367 |
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
|
|
368 |
};
|
|
369 |
|
|
370 |
static const TileIndex _airport_depots_international[] = {2, TILE_XY(0,3), TILE_XY(6,1)};
|
|
371 |
static const AirportFTAbuildup _airport_fta_international[] = {
|
|
372 |
{0,HANGAR,NOTHING_block,2}, {0,255,TERM_GROUP1_block,0}, {0,255,TERM_GROUP2_ENTER1_block,1}, {0,HELITAKEOFF,HELIPAD1_block,2}, {0,0,0,2},
|
|
373 |
{1,HANGAR,NOTHING_block,3}, {1,255,HANGAR2_AREA_block,1}, {1,HELITAKEOFF,HELIPAD2_block,3}, {1,0,0,3},
|
|
374 |
{2,255,AIRPORT_ENTRANCE_block,0}, {2,HANGAR,0,0}, {2,TERM4,0,12}, {2,TERM5,0,12}, {2,TERM6,0,12}, {2,HELIPAD1,0,12}, {2,HELIPAD2,0,12}, {2,HELITAKEOFF,0,12}, {2,0,0,23},
|
|
375 |
{3,255,HANGAR2_AREA_block,0}, {3,HANGAR,0,1}, {3,0,0,18},
|
|
376 |
{4,TERM1,TERM1_block,23}, {4,HANGAR,AIRPORT_ENTRANCE_block,23}, {4,0,0,23},
|
|
377 |
{5,TERM2,TERM2_block,24}, {5,HANGAR,AIRPORT_ENTRANCE_block,24}, {5,0,0,24},
|
|
378 |
{6,TERM3,TERM3_block,25}, {6,HANGAR,AIRPORT_ENTRANCE_block,25}, {6,0,0,25},
|
|
379 |
{7,TERM4,TERM4_block,16}, {7,HANGAR,HANGAR2_AREA_block,16}, {7,0,0,16},
|
|
380 |
{8,TERM5,TERM5_block,17}, {8,HANGAR,HANGAR2_AREA_block,17}, {8,0,0,17},
|
|
381 |
{9,TERM6,TERM6_block,18}, {9,HANGAR,HANGAR2_AREA_block,18}, {9,0,0,18},
|
|
382 |
{10,HELIPAD1,HELIPAD1_block,10}, {10,HANGAR,HANGAR2_AREA_block,16}, {10,HELITAKEOFF,0,47},
|
|
383 |
{11,HELIPAD2,HELIPAD2_block,11}, {11,HANGAR,HANGAR2_AREA_block,17}, {11,HELITAKEOFF,0,48},
|
|
384 |
{12,0,TERM_GROUP2_ENTER1_block,13},
|
|
385 |
{13,0,TERM_GROUP2_ENTER1_block,14},
|
|
386 |
{14,0,TERM_GROUP2_ENTER2_block,15},
|
|
387 |
{15,0,TERM_GROUP2_ENTER2_block,16},
|
|
388 |
{16,255,TERM_GROUP2_block,0}, {16,TERM4,TERM4_block,7}, {16,HELIPAD1,HELIPAD1_block,10}, {16,HELITAKEOFF,HELIPAD1_block,10}, {16,0,0,17},
|
|
389 |
{17,255,TERM_GROUP2_block,0}, {17,TERM5,TERM5_block,8}, {17,TERM4,0,16}, {17,HELIPAD1,0,16}, {17,HELIPAD2,HELIPAD2_block,11}, {17,HELITAKEOFF,HELIPAD2_block,11}, {17,0,0,18},
|
|
390 |
{18,255,TERM_GROUP2_block,0}, {18,TERM6,TERM6_block,9}, {18,TAKEOFF,0,19}, {18,HANGAR,HANGAR2_AREA_block,3}, {18,0,0,17},
|
|
391 |
{19,0,TERM_GROUP2_EXIT1_block,20},
|
|
392 |
{20,0,TERM_GROUP2_EXIT1_block,21},
|
|
393 |
{21,0,TERM_GROUP2_EXIT2_block,22},
|
|
394 |
{22,0,TERM_GROUP2_EXIT2_block,26},
|
|
395 |
{23,255,TERM_GROUP1_block,0}, {23,TERM1,TERM1_block,4}, {23,HANGAR,AIRPORT_ENTRANCE_block,2}, {23,0,0,24},
|
|
396 |
{24,255,TERM_GROUP1_block,0}, {24,TERM2,TERM2_block,5}, {24,TERM1,0,23}, {24,HANGAR,0,23}, {24,0,0,25},
|
|
397 |
{25,255,TERM_GROUP1_block,0}, {25,TERM3,TERM3_block,6}, {25,TAKEOFF,0,26}, {25,0,0,24},
|
|
398 |
{26,255,TAXIWAY_BUSY_block,0}, {26,TAKEOFF,0,27}, {26,0,0,25},
|
|
399 |
{27,0,OUT_WAY_block,28},
|
|
400 |
// takeoff
|
|
401 |
{28,TAKEOFF,OUT_WAY_block,29},
|
|
402 |
{29,0,RUNWAY_OUT_block,30},
|
|
403 |
{30,STARTTAKEOFF,NOTHING_block,31},
|
|
404 |
{31,ENDTAKEOFF,NOTHING_block,0},
|
|
405 |
// landing
|
|
406 |
{32,FLYING,NOTHING_block,37}, {32,LANDING,0,33}, {32,HELILANDING,0,41},
|
|
407 |
{33,LANDING,RUNWAY_IN_block,34},
|
|
408 |
{34,0,RUNWAY_IN_block,35},
|
|
409 |
{35,0,RUNWAY_IN_block,36},
|
|
410 |
{36,ENDLANDING,IN_WAY_block,36}, {36,255,TERM_GROUP1_block,0}, {36,255,TERM_GROUP2_ENTER1_block,1}, {36,TERM4,0,12}, {36,TERM5,0,12}, {36,TERM6,0,12}, {36,0,0,2},
|
|
411 |
// In Air
|
|
412 |
{37,0,NOTHING_block,38},
|
|
413 |
{38,0,NOTHING_block,39},
|
|
414 |
{39,0,NOTHING_block,40},
|
|
415 |
{40,0,NOTHING_block,32},
|
|
416 |
// Helicopter -- stay in air in special place as a buffer to choose from helipads
|
|
417 |
{41,HELILANDING,PRE_HELIPAD_block,42},
|
|
418 |
{42,HELIENDLANDING,PRE_HELIPAD_block,42}, {42,HELIPAD1,0,43}, {42,HELIPAD2,0,44}, {42,HANGAR,0,49},
|
|
419 |
{43,0,NOTHING_block,45},
|
|
420 |
{44,0,NOTHING_block,46},
|
|
421 |
// landing
|
|
422 |
{45,255,NOTHING_block,0}, {45,HELIPAD1,HELIPAD1_block,10},
|
|
423 |
{46,255,NOTHING_block,0}, {46,HELIPAD2,HELIPAD2_block,11},
|
|
424 |
// Helicopter -- takeoff
|
|
425 |
{47,HELITAKEOFF,NOTHING_block,0},
|
|
426 |
{48,HELITAKEOFF,NOTHING_block,0},
|
|
427 |
{49,0,HANGAR2_AREA_block,50}, // need to go to hangar when waiting in air
|
|
428 |
{50,0,HANGAR2_AREA_block,3},
|
|
429 |
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
|
|
430 |
};
|
|
431 |
|
|
432 |
static const TileIndex _airport_depots_heliport_oilrig[] = {0};
|
|
433 |
static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
|
|
434 |
{0,HELIPAD1,HELIPAD1_block,1},
|
|
435 |
{1,HELITAKEOFF,NOTHING_block,0}, // takeoff
|
|
436 |
{2,255,AIRPORT_BUSY_block,0}, {2,HELILANDING,0,3}, {2,HELITAKEOFF,0,1},
|
|
437 |
{3,HELILANDING,AIRPORT_BUSY_block,4},
|
|
438 |
{4,HELIENDLANDING,AIRPORT_BUSY_block,4}, {4,HELIPAD1,HELIPAD1_block,0}, {4,HELITAKEOFF,0,2},
|
|
439 |
// In Air
|
|
440 |
{5,0,NOTHING_block,6},
|
|
441 |
{6,0,NOTHING_block,7},
|
|
442 |
{7,0,NOTHING_block,8},
|
|
443 |
{8,FLYING,NOTHING_block,5}, {8,HELILANDING,HELIPAD1_block,2}, // landing
|
|
444 |
{MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE
|
|
445 |
};
|
|
446 |
|
|
447 |
static const AirportMovingData * const _airport_moving_datas[6] = {
|
|
448 |
_airport_moving_data_country, // Country Airfield (small) 4x3
|
|
449 |
_airport_moving_data_town, // City Airport (large) 6x6
|
|
450 |
_airport_moving_data_heliport, // Heliport
|
|
451 |
_airport_moving_data_metropolitan, // Metropolitain Airport (large) - 2 runways
|
|
452 |
_airport_moving_data_international, // International Airport (xlarge) - 2 runways
|
|
453 |
_airport_moving_data_oilrig // Oilrig
|
|
454 |
};
|
|
455 |
|
|
456 |
#endif /* AIRPORT_MOVEMENT_H */
|