Let HandleWindowDragging return a boolean status
[openttd/fttd.git] / src / table / airport_movement.h
blobd3dd5c935f247e7dfd0f16da349ec3de52a9bfd9
1 /* $Id$ */
3 /*
4 * This file is part of OpenTTD.
5 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8 */
10 /** @file airport_movement.h Heart of the airports and their finite state machines */
12 #ifndef AIRPORT_MOVEMENT_H
13 #define AIRPORT_MOVEMENT_H
16 ///////////////////////////////////////////////////////////////////////
17 /////**********Movement Machine on Airports*********************///////
18 static const byte _airport_entries_dummy[] = {0, 1, 2, 3};
19 static const AirportFTA::Position _airport_fta_dummy[] = {
20 { 0, 0, 3, 0, 0, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL },
21 { 0, 0, 0, 0, 96, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL },
22 { 0, 0, 1, 96, 96, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL },
23 { 0, 0, 2, 96, 0, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL },
26 static const AirportFTA::Hangar _airport_depots_country[] = { { 3, 0, DIR_SE, 0 } };
27 static const byte _airport_terminal_country[] = { 1, 0, 2 };
28 static const byte _airport_entries_country[] = {16, 15, 18, 17};
30 static const AirportFTA::Transition _airport_fta_country_1[] = {
31 { 0, HANGAR, 0, false },
32 { TERM1_block, TERM1, 2, false },
33 { 0, TERM2, 4, false },
34 { 0, HELITAKEOFF, 19, false },
35 { 0, 0, 6, true }
37 static const AirportFTA::Transition _airport_fta_country_4[] = {
38 { 0, TERM2, 5, false },
39 { 0, HANGAR, 1, false },
40 { 0, TAKEOFF, 6, false },
41 { 0, HELITAKEOFF, 1, true }
43 static const AirportFTA::Transition _airport_fta_country_5[] = {
44 { TERM2_block, TERM2, 3, false },
45 { 0, 0, 4, true }
47 static const AirportFTA::Transition _airport_fta_country_10[] = {
48 { 0, LANDING, 11, false },
49 { 0, HELILANDING, 20, true }
51 static const AirportFTA::Transition _airport_fta_country_13[] = {
52 { 0, TERM2, 5, false },
53 { 0, 0, 14, true }
55 static const AirportFTA::Position _airport_fta_country[22] = {
56 { NOTHING_block, HANGAR, 1, 53, 3, DIR_SE | AMED_EXACTPOS, NULL }, // 00 In Hangar
57 { AIRPORT_BUSY_block, 255, 0, 53, 27, DIR_N, _airport_fta_country_1 }, // 01 Taxi to right outside depot
58 { TERM1_block, TERM1, 1, 32, 23, DIR_NW | AMED_EXACTPOS, NULL }, // 02 Terminal 1
59 { TERM2_block, TERM2, 5, 10, 23, DIR_NW | AMED_EXACTPOS, NULL }, // 03 Terminal 2
60 { AIRPORT_BUSY_block, 255, 0, 43, 37, DIR_N, _airport_fta_country_4 }, // 04 Going towards terminal 2
61 { AIRPORT_BUSY_block, 255, 0, 24, 37, DIR_N, _airport_fta_country_5 }, // 05 Going towards terminal 2
62 { AIRPORT_BUSY_block, 0, 7, 53, 37, DIR_N, NULL }, // 06 Going for takeoff
63 /* takeoff */
64 { AIRPORT_BUSY_block, TAKEOFF, 8, 61, 40, DIR_NE | AMED_EXACTPOS, NULL }, // 07 Taxi to start of runway (takeoff)
65 { NOTHING_block, STARTTAKEOFF, 9, 3, 40, DIR_N | AMED_NOSPDCLAMP, NULL }, // 08 Accelerate to end of runway
66 { NOTHING_block, ENDTAKEOFF, 0, -79, 40, DIR_N | AMED_NOSPDCLAMP | AMED_TAKEOFF, NULL }, // 09 Take off
67 /* landing */
68 { NOTHING_block, FLYING, 15, 177, 40, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_country_10 }, // 10 Fly to landing position in air
69 { AIRPORT_BUSY_block, LANDING, 12, 56, 40, DIR_N | AMED_NOSPDCLAMP | AMED_LAND, NULL }, // 11 Going down for land
70 { AIRPORT_BUSY_block, 0, 13, 3, 40, DIR_N | AMED_NOSPDCLAMP | AMED_BRAKE, NULL }, // 12 Just landed, brake until end of runway
71 { AIRPORT_BUSY_block, ENDLANDING, 14, 7, 40, DIR_N, _airport_fta_country_13 }, // 13 Just landed, turn around and taxi 1 square
72 { AIRPORT_BUSY_block, 0, 1, 53, 40, DIR_N, NULL }, // 14 Taxi from runway to crossing
73 /* flying */
74 { NOTHING_block, 0, 16, 1, 193, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 15 Fly around waiting for a landing spot (north-east)
75 { NOTHING_block, 0, 17, 1, 1, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 16 Fly around waiting for a landing spot (north-west)
76 { NOTHING_block, 0, 18, 257, 1, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 17 Fly around waiting for a landing spot (south-west)
77 { NOTHING_block, 0, 10, 273, 47, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 18 Fly around waiting for a landing spot (south)
78 { NOTHING_block, HELITAKEOFF, 0, 44, 37, DIR_N | AMED_HELI_RAISE, NULL }, // 19 Helicopter takeoff
79 { AIRPORT_BUSY_block, HELILANDING, 21, 44, 40, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 20 In position above landing spot helicopter
80 { AIRPORT_BUSY_block, HELIENDLANDING, 1, 44, 40, DIR_N | AMED_HELI_LOWER, NULL }, // 21 Helicopter landing
83 static const AirportFTA::Hangar _airport_depots_commuter[] = { { 4, 0, DIR_SE, 0 } };
84 static const byte _airport_terminal_commuter[] = { 1, 0, 3 };
85 static const byte _airport_entries_commuter[] = {22, 21, 24, 23};
87 static const AirportFTA::Transition _airport_fta_commuter_0[] = {
88 { HELIPAD2_block, HELITAKEOFF, 1, false },
89 { 0, 0, 1, true }
91 static const AirportFTA::Transition _airport_fta_commuter_1[] = {
92 { 0, HANGAR, 0, false },
93 { 0, TAKEOFF, 11, false },
94 { TAXIWAY_BUSY_block, TERM1, 10, false },
95 { TAXIWAY_BUSY_block, TERM2, 10, false },
96 { TAXIWAY_BUSY_block, TERM3, 10, false },
97 { TAXIWAY_BUSY_block, HELIPAD1, 10, false },
98 { TAXIWAY_BUSY_block, HELIPAD2, 10, false },
99 { TAXIWAY_BUSY_block, HELITAKEOFF, 10, false },
100 { 0, 0, 0, true }
102 static const AirportFTA::Transition _airport_fta_commuter_2[] = {
103 { 0, HANGAR, 8, false },
104 { 0, TERM1, 8, false },
105 { 0, TERM2, 8, false },
106 { 0, TERM3, 8, false },
107 { 0, HELIPAD1, 8, false },
108 { 0, HELIPAD2, 8, false },
109 { 0, HELITAKEOFF, 8, false },
110 { 0, 0, 2, true }
112 static const AirportFTA::Transition _airport_fta_commuter_3[] = {
113 { 0, HANGAR, 8, false },
114 { 0, TAKEOFF, 8, false },
115 { 0, 0, 3, true }
117 static const AirportFTA::Transition _airport_fta_commuter_4[] = {
118 { 0, HANGAR, 9, false },
119 { 0, TAKEOFF, 9, false },
120 { 0, 0, 4, true }
122 static const AirportFTA::Transition _airport_fta_commuter_5[] = {
123 { 0, HANGAR, 10, false },
124 { 0, TAKEOFF, 10, false },
125 { 0, 0, 5, true }
127 static const AirportFTA::Transition _airport_fta_commuter_6[] = {
128 { TAXIWAY_BUSY_block, HANGAR, 9, false },
129 { 0, HELITAKEOFF, 35, true }
131 static const AirportFTA::Transition _airport_fta_commuter_7[] = {
132 { TAXIWAY_BUSY_block, HANGAR, 10, false },
133 { 0, HELITAKEOFF, 36, true }
135 static const AirportFTA::Transition _airport_fta_commuter_8[] = {
136 { TAXIWAY_BUSY_block, TAKEOFF, 9, false },
137 { TAXIWAY_BUSY_block, HANGAR, 9, false },
138 { TERM1_block, TERM1, 3, false },
139 { TAXIWAY_BUSY_block, 0, 9, true }
141 static const AirportFTA::Transition _airport_fta_commuter_9[] = {
142 { TAXIWAY_BUSY_block, TAKEOFF, 10, false },
143 { TAXIWAY_BUSY_block, HANGAR, 10, false },
144 { TERM2_block, TERM2, 4, false },
145 { HELIPAD1_block, HELIPAD1, 6, false },
146 { HELIPAD1_block, HELITAKEOFF, 6, false },
147 { TAXIWAY_BUSY_block, TERM1, 8, false },
148 { TAXIWAY_BUSY_block, 0, 10, true }
150 static const AirportFTA::Transition _airport_fta_commuter_10[] = {
151 { TERM3_block, TERM3, 5, false },
152 { 0, HELIPAD1, 9, false },
153 { HELIPAD2_block, HELIPAD2, 7, false },
154 { HELIPAD2_block, HELITAKEOFF, 7, false },
155 { TAXIWAY_BUSY_block, TAKEOFF, 1, false },
156 { TAXIWAY_BUSY_block, HANGAR, 1, false },
157 { TAXIWAY_BUSY_block, 0, 9, true }
159 static const AirportFTA::Transition _airport_fta_commuter_16[] = {
160 { IN_WAY_block, LANDING, 17, false },
161 { 0, HELILANDING, 25, true }
163 static const AirportFTA::Transition _airport_fta_commuter_26[] = {
164 { 0, HELIPAD1, 27, false },
165 { 0, HELIPAD2, 28, false },
166 { 0, HANGAR, 33, true }
168 static const AirportFTA::Transition _airport_fta_commuter_29[] = {
169 { HELIPAD1_block, HELIPAD1, 6, true }
171 static const AirportFTA::Transition _airport_fta_commuter_30[] = {
172 { HELIPAD2_block, HELIPAD2, 7, true }
174 static const AirportFTA::Position _airport_fta_commuter[37] = {
175 { NOTHING_block, HANGAR, 1, 69, 3, DIR_SE | AMED_EXACTPOS, _airport_fta_commuter_0 }, // 00 In Hangar
176 { TAXIWAY_BUSY_block, 255, 0, 72, 22, DIR_N, _airport_fta_commuter_1 }, // 01 Taxi to right outside depot
177 { AIRPORT_ENTRANCE_block, 255, 2, 8, 22, DIR_SW | AMED_EXACTPOS, _airport_fta_commuter_2 }, // 01 Taxi to right outside depot
178 { TERM1_block, TERM1, 8, 24, 36, DIR_SE | AMED_EXACTPOS, _airport_fta_commuter_3 }, // 03 Terminal 1
179 { TERM2_block, TERM2, 9, 40, 36, DIR_SE | AMED_EXACTPOS, _airport_fta_commuter_4 }, // 04 Terminal 2
180 { TERM3_block, TERM3, 10, 56, 36, DIR_SE | AMED_EXACTPOS, _airport_fta_commuter_5 }, // 05 Terminal 3
181 { HELIPAD1_block, HELIPAD1, 6, 40, 8, DIR_NE | AMED_EXACTPOS, _airport_fta_commuter_6 }, // 06 Helipad 1
182 { HELIPAD2_block, HELIPAD2, 7, 56, 8, DIR_NE | AMED_EXACTPOS, _airport_fta_commuter_7 }, // 07 Helipad 2
183 { TAXIWAY_BUSY_block, 255, 8, 24, 22, DIR_SW, _airport_fta_commuter_8 }, // 08 Taxiing
184 { TAXIWAY_BUSY_block, 255, 9, 40, 22, DIR_SW, _airport_fta_commuter_9 }, // 09 Taxiing
185 { TAXIWAY_BUSY_block, 255, 10, 56, 22, DIR_SW, _airport_fta_commuter_10 }, // 10 Taxiing
186 { OUT_WAY_block, 0, 12, 72, 40, DIR_SE, NULL }, // 11 Airport OUTWAY
187 /* takeoff */
188 { RUNWAY_IN_OUT_block, TAKEOFF, 13, 72, 54, DIR_NE | AMED_EXACTPOS, NULL }, // 12 Accelerate to end of runway
189 { RUNWAY_IN_OUT_block, 0, 14, 7, 54, DIR_N | AMED_NOSPDCLAMP, NULL }, // 13 Release control of runway, for smoother movement
190 { RUNWAY_IN_OUT_block, STARTTAKEOFF, 15, 5, 54, DIR_N | AMED_NOSPDCLAMP, NULL }, // 14 End of runway
191 { NOTHING_block, ENDTAKEOFF, 0, -79, 54, DIR_N | AMED_NOSPDCLAMP | AMED_TAKEOFF, NULL }, // 15 Take off
192 /* landing */
193 { NOTHING_block, FLYING, 21, 145, 54, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_commuter_16 }, // 16 Fly to landing position in air
194 { RUNWAY_IN_OUT_block, LANDING, 18, 73, 54, DIR_N | AMED_NOSPDCLAMP | AMED_LAND, NULL }, // 17 Going down for land
195 { RUNWAY_IN_OUT_block, 0, 19, 3, 54, DIR_N | AMED_NOSPDCLAMP | AMED_BRAKE, NULL }, // 18 Just landed, brake until end of runway
196 { RUNWAY_IN_OUT_block, 0, 20, 12, 54, DIR_NW | AMED_SLOWTURN, NULL }, // 19 Just landed, turn around and taxi
197 { IN_WAY_block, ENDLANDING, 2, 8, 32, DIR_NW, NULL }, // 20 Taxi from runway to crossing
198 /* flying */
199 { NOTHING_block, 0, 22, 1, 149, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 21 Fly around waiting for a landing spot (north-east)
200 { NOTHING_block, 0, 23, 1, 6, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 22 Fly around waiting for a landing spot (north-west)
201 { NOTHING_block, 0, 24, 193, 6, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 23 Fly around waiting for a landing spot (south-west)
202 { NOTHING_block, 0, 16, 225, 62, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 24 Fly around waiting for a landing spot (south)
203 /* helicopter -- stay in air in special place as a buffer to choose from helipads */
204 { PRE_HELIPAD_block, HELILANDING, 26, 80, 0, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 25 Bufferspace before helipad
205 { PRE_HELIPAD_block, HELIENDLANDING, 26, 80, 0, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_commuter_26 }, // 26 Bufferspace before helipad
206 { NOTHING_block, 0, 29, 32, 8, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 27 Get in position for Helipad1
207 { NOTHING_block, 0, 30, 48, 8, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 28 Get in position for Helipad2
208 /* landing */
209 { NOTHING_block, 255, 0, 32, 8, DIR_N | AMED_HELI_LOWER, _airport_fta_commuter_29 }, // 29 Land at Helipad1
210 { NOTHING_block, 255, 0, 48, 8, DIR_N | AMED_HELI_LOWER, _airport_fta_commuter_30 }, // 30 Land at Helipad2
211 /* helicopter takeoff */
212 { NOTHING_block, HELITAKEOFF, 0, 32, 8, DIR_N | AMED_HELI_RAISE, NULL }, // 31 Takeoff Helipad1
213 { NOTHING_block, HELITAKEOFF, 0, 48, 8, DIR_N | AMED_HELI_RAISE, NULL }, // 32 Takeoff Helipad2
214 { TAXIWAY_BUSY_block, 0, 34, 64, 22, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 33 Go to position for Hangarentrance in air
215 { TAXIWAY_BUSY_block, 0, 1, 64, 22, DIR_N | AMED_HELI_LOWER, NULL }, // 34 Land in front of hangar
216 { HELIPAD1_block, 0, 31, 40, 8, DIR_N | AMED_EXACTPOS, NULL }, // 35 pre-helitakeoff helipad 1
217 { HELIPAD2_block, 0, 32, 56, 8, DIR_N | AMED_EXACTPOS, NULL }, // 36 pre-helitakeoff helipad 2
220 static const AirportFTA::Hangar _airport_depots_city[] = { { 5, 0, DIR_SE, 0 } };
221 static const byte _airport_terminal_city[] = { 1, 0, 3 };
222 static const byte _airport_entries_city[] = {26, 29, 27, 28};
224 static const AirportFTA::Transition _airport_fta_city_0[] = {
225 { OUT_WAY_block, TAKEOFF, 1, false },
226 { 0, 0, 1, true }
228 static const AirportFTA::Transition _airport_fta_city_1[] = {
229 { 0, HANGAR, 0, false },
230 { 0, TERM2, 6, false },
231 { 0, TERM3, 6, false },
232 { 0, 0, 7, true } // for all else, go to 7
234 static const AirportFTA::Transition _airport_fta_city_2[] = {
235 { OUT_WAY_block, TAKEOFF, 7, false },
236 { 0, 0, 7, true }
238 static const AirportFTA::Transition _airport_fta_city_3[] = {
239 { OUT_WAY_block, TAKEOFF, 6, false },
240 { 0, 0, 6, true }
242 static const AirportFTA::Transition _airport_fta_city_4[] = {
243 { OUT_WAY_block, TAKEOFF, 5, false },
244 { 0, 0, 5, true }
246 static const AirportFTA::Transition _airport_fta_city_5[] = {
247 { TERM2_block, TERM2, 3, false },
248 { TERM3_block, TERM3, 4, false },
249 { 0, 0, 6, true }
251 static const AirportFTA::Transition _airport_fta_city_6[] = {
252 { TERM2_block, TERM2, 3, false },
253 { 0, TERM3, 5, false },
254 { 0, HANGAR, 1, false },
255 { 0, 0, 7, true }
257 static const AirportFTA::Transition _airport_fta_city_7[] = {
258 { TERM1_block, TERM1, 2, false },
259 { OUT_WAY_block, TAKEOFF, 8, false },
260 { 0, HELITAKEOFF, 22, false },
261 { 0, HANGAR, 1, false },
262 { 0, 0, 6, true }
264 static const AirportFTA::Transition _airport_fta_city_13[] = {
265 { 0, LANDING, 14, false },
266 { 0, HELILANDING, 23, true }
268 static const AirportFTA::Position _airport_fta_city[] = {
269 { NOTHING_block, HANGAR, 1, 85, 3, DIR_SE | AMED_EXACTPOS, _airport_fta_city_0 }, // 00 In Hangar
270 { TAXIWAY_BUSY_block, 255, 0, 85, 22, DIR_N, _airport_fta_city_1 }, // 01 Taxi to right outside depot
271 { TERM1_block, TERM1, 7, 26, 41, DIR_SW | AMED_EXACTPOS, _airport_fta_city_2 }, // 02 Terminal 1
272 { TERM2_block, TERM2, 5, 56, 22, DIR_SE | AMED_EXACTPOS, _airport_fta_city_3 }, // 03 Terminal 2
273 { TERM3_block, TERM3, 5, 38, 8, DIR_SW | AMED_EXACTPOS, _airport_fta_city_4 }, // 04 Terminal 3
274 { TAXIWAY_BUSY_block, 255, 0, 65, 6, DIR_N, _airport_fta_city_5 }, // 05 Taxi to right in infront of terminal 2/3
275 { TAXIWAY_BUSY_block, 255, 0, 80, 27, DIR_N, _airport_fta_city_6 }, // 06 Taxiway terminals 2-3
276 { TAXIWAY_BUSY_block, 255, 0, 44, 63, DIR_N, _airport_fta_city_7 }, // 07 Taxi to Airport center
277 { OUT_WAY_block, 0, 9, 58, 71, DIR_N, NULL }, // 08 Towards takeoff
278 { RUNWAY_IN_OUT_block, 0, 10, 72, 85, DIR_N, NULL }, // 09 Taxi to runway (takeoff)
279 /* takeoff */
280 { RUNWAY_IN_OUT_block, TAKEOFF, 11, 89, 85, DIR_NE | AMED_EXACTPOS, NULL }, // 10 Taxi to start of runway (takeoff)
281 { NOTHING_block, STARTTAKEOFF, 12, 3, 85, DIR_N | AMED_NOSPDCLAMP, NULL }, // 11 Accelerate to end of runway
282 { NOTHING_block, ENDTAKEOFF, 0, -79, 85, DIR_N | AMED_NOSPDCLAMP | AMED_TAKEOFF, NULL }, // 12 Take off
283 /* landing */
284 { NOTHING_block, FLYING, 18, 177, 87, DIR_N | AMED_HOLD | AMED_SLOWTURN, _airport_fta_city_13 }, // 13 Fly to landing position in air
285 { RUNWAY_IN_OUT_block, LANDING, 15, 89, 87, DIR_N | AMED_HOLD | AMED_LAND, NULL }, // 14 Going down for land
286 { RUNWAY_IN_OUT_block, 0, 17, 20, 87, DIR_N | AMED_NOSPDCLAMP | AMED_BRAKE, NULL }, // 15 Just landed, brake until end of runway
287 { RUNWAY_IN_OUT_block, 0, 17, 20, 87, DIR_N, NULL }, // 16 Just landed, turn around and taxi 1 square // not used, left for compatibility
288 { IN_WAY_block, ENDLANDING, 7, 36, 71, DIR_N, NULL }, // 17 Taxi from runway to crossing
289 /* flying */
290 { NOTHING_block, 0, 25, 160, 87, DIR_N | AMED_HOLD | AMED_SLOWTURN, NULL }, // 18 Fly around waiting for a landing spot (north-east)
291 { NOTHING_block, 0, 20, 140, 1, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 19 Final approach fix
292 { NOTHING_block, 0, 21, 257, 1, DIR_N | AMED_HOLD | AMED_SLOWTURN, NULL }, // 20 Fly around waiting for a landing spot (south-west)
293 { NOTHING_block, 0, 13, 273, 49, DIR_N | AMED_HOLD | AMED_SLOWTURN, NULL }, // 21 Fly around waiting for a landing spot (south)
294 /* helicopter */
295 { NOTHING_block, HELITAKEOFF, 0, 44, 63, DIR_N | AMED_HELI_RAISE, NULL }, // 22 Helicopter takeoff
296 { IN_WAY_block, HELILANDING, 24, 28, 74, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 23 In position above landing spot helicopter
297 { IN_WAY_block, HELIENDLANDING, 17, 28, 74, DIR_N | AMED_HELI_LOWER, NULL }, // 24 Helicopter landing
298 { NOTHING_block, 0, 20, 145, 1, DIR_N | AMED_HOLD | AMED_SLOWTURN, NULL }, // 25 Fly around waiting for a landing spot (north-west)
299 { NOTHING_block, 0, 19, -32, 1, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 26 Initial approach fix (north)
300 { NOTHING_block, 0, 28, 300, -48, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 27 Initial approach fix (south)
301 { NOTHING_block, 0, 19, 140, -48, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 28 Intermediate Approach fix (south), IAF (west)
302 { NOTHING_block, 0, 26, -32, 120, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 29 Initial approach fix (east)
305 static const AirportFTA::Hangar _airport_depots_metropolitan[] = { { 5, 0, DIR_SE, 0 } };
306 static const byte _airport_terminal_metropolitan[] = { 1, 0, 3 };
307 static const byte _airport_entries_metropolitan[] = {20, 19, 22, 21};
309 static const AirportFTA::Transition _airport_fta_metropolitan_1[] = {
310 { 0, HANGAR, 0, false },
311 { 0, TERM2, 6, false },
312 { 0, TERM3, 6, false },
313 { 0, 0, 7, true } // for all else, go to 7
315 static const AirportFTA::Transition _airport_fta_metropolitan_5[] = {
316 { TERM2_block, TERM2, 3, false },
317 { TERM3_block, TERM3, 4, false },
318 { 0, 0, 6, true }
320 static const AirportFTA::Transition _airport_fta_metropolitan_6[] = {
321 { TERM2_block, TERM2, 3, false },
322 { 0, TERM3, 5, false },
323 { 0, HANGAR, 1, false },
324 { 0, 0, 7, true }
326 static const AirportFTA::Transition _airport_fta_metropolitan_7[] = {
327 { TERM1_block, TERM1, 2, false },
328 { 0, TAKEOFF, 8, false },
329 { 0, HELITAKEOFF, 23, false },
330 { 0, HANGAR, 1, false },
331 { 0, 0, 6, true }
333 static const AirportFTA::Transition _airport_fta_metropolitan_13[] = {
334 { 0, LANDING, 14, false },
335 { 0, HELILANDING, 25, true }
337 static const AirportFTA::Transition _airport_fta_metropolitan_16[] = {
338 { IN_WAY_block, ENDLANDING, 17, true }
340 static const AirportFTA::Transition _airport_fta_metropolitan_17[] = {
341 { IN_WAY_block, ENDLANDING, 18, true }
343 static const AirportFTA::Transition _airport_fta_metropolitan_27[] = {
344 { TERM1_block, TERM1, 2, false },
345 { 0, 0, 7, true }
347 static const AirportFTA::Position _airport_fta_metropolitan[28] = {
348 { NOTHING_block, HANGAR, 1, 85, 3, DIR_SE | AMED_EXACTPOS, NULL }, // 00 In Hangar
349 { TAXIWAY_BUSY_block, 255, 0, 85, 22, DIR_N, _airport_fta_metropolitan_1 }, // 01 Taxi to right outside depot
350 { TERM1_block, TERM1, 7, 26, 41, DIR_SW | AMED_EXACTPOS, NULL }, // 02 Terminal 1
351 { TERM2_block, TERM2, 6, 56, 22, DIR_SE | AMED_EXACTPOS, NULL }, // 03 Terminal 2
352 { TERM3_block, TERM3, 5, 38, 8, DIR_SW | AMED_EXACTPOS, NULL }, // 04 Terminal 3
353 { TAXIWAY_BUSY_block, 255, 0, 65, 6, DIR_N, _airport_fta_metropolitan_5 }, // 05 Taxi to right in infront of terminal 2/3
354 { TAXIWAY_BUSY_block, 255, 0, 80, 27, DIR_N, _airport_fta_metropolitan_6 }, // 06 Taxiway terminals 2-3
355 { TAXIWAY_BUSY_block, 255, 0, 49, 58, DIR_N, _airport_fta_metropolitan_7 }, // 07 Taxi to Airport center
356 { OUT_WAY_block, 0, 9, 72, 58, DIR_N, NULL }, // 08 Towards takeoff
357 { RUNWAY_OUT_block, 0, 10, 72, 69, DIR_N, NULL }, // 09 Taxi to runway (takeoff)
358 /* takeoff */
359 { RUNWAY_OUT_block, TAKEOFF, 11, 89, 69, DIR_NE | AMED_EXACTPOS, NULL }, // 10 Taxi to start of runway (takeoff)
360 { NOTHING_block, STARTTAKEOFF, 12, 3, 69, DIR_N | AMED_NOSPDCLAMP, NULL }, // 11 Accelerate to end of runway
361 { NOTHING_block, ENDTAKEOFF, 0, -79, 69, DIR_N | AMED_NOSPDCLAMP | AMED_TAKEOFF, NULL }, // 12 Take off
362 /* landing */
363 { NOTHING_block, FLYING, 19, 177, 85, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_metropolitan_13 }, // 13 Fly to landing position in air
364 { RUNWAY_IN_block, LANDING, 15, 89, 85, DIR_N | AMED_NOSPDCLAMP | AMED_LAND, NULL }, // 14 Going down for land
365 { RUNWAY_IN_block, 0, 16, 3, 85, DIR_N | AMED_NOSPDCLAMP | AMED_BRAKE, NULL }, // 15 Just landed, brake until end of runway
366 { RUNWAY_IN_block, 255, 0, 21, 85, DIR_N, _airport_fta_metropolitan_16 }, // 16 Just landed, turn around and taxi 1 square
367 { RUNWAY_OUT_block, 255, 0, 21, 69, DIR_N, _airport_fta_metropolitan_17 }, // 17 On Runway-out taxiing to In-Way
368 { IN_WAY_block, ENDLANDING, 27, 21, 58, DIR_SW | AMED_EXACTPOS, NULL }, // 18 Taxi from runway to crossing
369 /* flying */
370 { NOTHING_block, 0, 20, 1, 193, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 19 Fly around waiting for a landing spot (north-east)
371 { NOTHING_block, 0, 21, 1, 1, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 20 Fly around waiting for a landing spot (north-west)
372 { NOTHING_block, 0, 22, 257, 1, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 21 Fly around waiting for a landing spot (south-west)
373 { NOTHING_block, 0, 13, 273, 49, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 22 Fly around waiting for a landing spot (south)
374 /* helicopter */
375 { NOTHING_block, 0, 24, 44, 58, DIR_N, NULL }, // 23 Helicopter takeoff spot on ground (to clear airport sooner)
376 { NOTHING_block, HELITAKEOFF, 0, 44, 63, DIR_N | AMED_HELI_RAISE, NULL }, // 24 Helicopter takeoff
377 { IN_WAY_block, HELILANDING, 26, 15, 54, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 25 Get in position above landing spot helicopter
378 { IN_WAY_block, HELIENDLANDING, 18, 15, 54, DIR_N | AMED_HELI_LOWER, NULL }, // 26 Helicopter landing
379 { TAXIWAY_BUSY_block, 255, 27, 21, 58, DIR_SW | AMED_EXACTPOS, _airport_fta_metropolitan_27 }, // 27 Transitions after landing to on-ground movement
382 static const AirportFTA::Hangar _airport_depots_international[] = { { 0, 3, DIR_SE, 0 }, { 6, 1, DIR_SE, 1 } };
383 static const byte _airport_terminal_international[] = { 2, 0, 3, 6 };
384 static const byte _airport_entries_international[] = { 38, 37, 40, 39 };
386 static const AirportFTA::Transition _airport_fta_international_0[] = {
387 { TERM_GROUP1_block, 255, 0, false },
388 { TERM_GROUP2_ENTER1_block, 255, 1, false },
389 { HELIPAD1_block, HELITAKEOFF, 2, false },
390 { 0, 0, 2, true }
392 static const AirportFTA::Transition _airport_fta_international_1[] = {
393 { HANGAR2_AREA_block, 255, 1, false },
394 { HELIPAD2_block, HELITAKEOFF, 3, false },
395 { 0, 0, 3, true }
397 static const AirportFTA::Transition _airport_fta_international_2[] = {
398 { 0, HANGAR, 0, false },
399 { 0, TERM4, 12, false },
400 { 0, TERM5, 12, false },
401 { 0, TERM6, 12, false },
402 { 0, HELIPAD1, 12, false },
403 { 0, HELIPAD2, 12, false },
404 { 0, HELITAKEOFF, 12, false },
405 { 0, 0, 23, true }
407 static const AirportFTA::Transition _airport_fta_international_3[] = {
408 { 0, HANGAR, 1, false },
409 { 0, 0, 18, true }
411 static const AirportFTA::Transition _airport_fta_international_4[] = {
412 { AIRPORT_ENTRANCE_block, HANGAR, 23, false },
413 { 0, 0, 23, true }
415 static const AirportFTA::Transition _airport_fta_international_5[] = {
416 { AIRPORT_ENTRANCE_block, HANGAR, 24, false },
417 { 0, 0, 24, true }
419 static const AirportFTA::Transition _airport_fta_international_6[] = {
420 { AIRPORT_ENTRANCE_block, HANGAR, 25, false },
421 { 0, 0, 25, true }
423 static const AirportFTA::Transition _airport_fta_international_7[] = {
424 { HANGAR2_AREA_block, HANGAR, 16, false },
425 { 0, 0, 16, true }
427 static const AirportFTA::Transition _airport_fta_international_8[] = {
428 { HANGAR2_AREA_block, HANGAR, 17, false },
429 { 0, 0, 17, true }
431 static const AirportFTA::Transition _airport_fta_international_9[] = {
432 { HANGAR2_AREA_block, HANGAR, 18, false },
433 { 0, 0, 18, true }
435 static const AirportFTA::Transition _airport_fta_international_10[] = {
436 { HANGAR2_AREA_block, HANGAR, 16, false },
437 { 0, HELITAKEOFF, 47, true }
439 static const AirportFTA::Transition _airport_fta_international_11[] = {
440 { HANGAR2_AREA_block, HANGAR, 17, false },
441 { 0, HELITAKEOFF, 48, true }
443 static const AirportFTA::Transition _airport_fta_international_16[] = {
444 { TERM4_block, TERM4, 7, false },
445 { HELIPAD1_block, HELIPAD1, 10, false },
446 { HELIPAD1_block, HELITAKEOFF, 10, false },
447 { 0, 0, 17, true }
449 static const AirportFTA::Transition _airport_fta_international_17[] = {
450 { TERM5_block, TERM5, 8, false },
451 { 0, TERM4, 16, false },
452 { 0, HELIPAD1, 16, false },
453 { HELIPAD2_block, HELIPAD2, 11, false },
454 { HELIPAD2_block, HELITAKEOFF, 11, false },
455 { 0, 0, 18, true }
457 static const AirportFTA::Transition _airport_fta_international_18[] = {
458 { TERM6_block, TERM6, 9, false },
459 { 0, TAKEOFF, 19, false },
460 { HANGAR2_AREA_block, HANGAR, 3, false },
461 { 0, 0, 17, true }
463 static const AirportFTA::Transition _airport_fta_international_23[] = {
464 { TERM1_block, TERM1, 4, false },
465 { AIRPORT_ENTRANCE_block, HANGAR, 2, false },
466 { 0, 0, 24, true }
468 static const AirportFTA::Transition _airport_fta_international_24[] = {
469 { TERM2_block, TERM2, 5, false },
470 { 0, TERM1, 23, false },
471 { 0, HANGAR, 23, false },
472 { 0, 0, 25, true }
474 static const AirportFTA::Transition _airport_fta_international_25[] = {
475 { TERM3_block, TERM3, 6, false },
476 { 0, TAKEOFF, 26, false },
477 { 0, 0, 24, true }
479 static const AirportFTA::Transition _airport_fta_international_26[] = {
480 { 0, TAKEOFF, 27, false },
481 { 0, 0, 25, true }
483 static const AirportFTA::Transition _airport_fta_international_32[] = {
484 { 0, LANDING, 33, false },
485 { 0, HELILANDING, 41, true }
487 static const AirportFTA::Transition _airport_fta_international_36[] = {
488 { TERM_GROUP1_block, 255, 0, false },
489 { TERM_GROUP2_ENTER1_block, 255, 1, false },
490 { 0, TERM4, 12, false },
491 { 0, TERM5, 12, false },
492 { 0, TERM6, 12, false },
493 { 0, 0, 2, true }
495 static const AirportFTA::Transition _airport_fta_international_42[] = {
496 { 0, HELIPAD1, 43, false },
497 { 0, HELIPAD2, 44, false },
498 { 0, HANGAR, 49, true }
500 static const AirportFTA::Transition _airport_fta_international_45[] = {
501 { HELIPAD1_block, HELIPAD1, 10, true }
503 static const AirportFTA::Transition _airport_fta_international_46[] = {
504 { HELIPAD2_block, HELIPAD2, 11, true }
506 static const AirportFTA::Position _airport_fta_international[51] = {
507 { NOTHING_block, HANGAR, 2, 7, 55, DIR_SE | AMED_EXACTPOS, _airport_fta_international_0 }, // 00 In Hangar 1
508 { NOTHING_block, HANGAR, 3, 100, 21, DIR_SE | AMED_EXACTPOS, _airport_fta_international_1 }, // 01 In Hangar 2
509 { AIRPORT_ENTRANCE_block, 255, 0, 7, 70, DIR_N, _airport_fta_international_2 }, // 02 Taxi to right outside depot
510 { HANGAR2_AREA_block, 255, 0, 100, 36, DIR_N, _airport_fta_international_3 }, // 03 Taxi to right outside depot
511 { TERM1_block, TERM1, 23, 38, 70, DIR_SW | AMED_EXACTPOS, _airport_fta_international_4 }, // 04 Terminal 1
512 { TERM2_block, TERM2, 24, 38, 54, DIR_SW | AMED_EXACTPOS, _airport_fta_international_5 }, // 05 Terminal 2
513 { TERM3_block, TERM3, 25, 38, 38, DIR_SW | AMED_EXACTPOS, _airport_fta_international_6 }, // 06 Terminal 3
514 { TERM4_block, TERM4, 16, 70, 70, DIR_NE | AMED_EXACTPOS, _airport_fta_international_7 }, // 07 Terminal 4
515 { TERM5_block, TERM5, 17, 70, 54, DIR_NE | AMED_EXACTPOS, _airport_fta_international_8 }, // 08 Terminal 5
516 { TERM6_block, TERM6, 18, 70, 38, DIR_NE | AMED_EXACTPOS, _airport_fta_international_9 }, // 09 Terminal 6
517 { HELIPAD1_block, HELIPAD1, 10, 104, 71, DIR_NE | AMED_EXACTPOS, _airport_fta_international_10 }, // 10 Helipad 1
518 { HELIPAD2_block, HELIPAD2, 11, 104, 55, DIR_NE | AMED_EXACTPOS, _airport_fta_international_11 }, // 11 Helipad 2
519 { TERM_GROUP2_ENTER1_block, 0, 13, 22, 87, DIR_N, NULL }, // 12 Towards Terminals 4/5/6, Helipad 1/2
520 { TERM_GROUP2_ENTER1_block, 0, 14, 60, 87, DIR_N, NULL }, // 13 Towards Terminals 4/5/6, Helipad 1/2
521 { TERM_GROUP2_ENTER2_block, 0, 15, 66, 87, DIR_N, NULL }, // 14 Towards Terminals 4/5/6, Helipad 1/2
522 { TERM_GROUP2_ENTER2_block, 0, 16, 86, 87, DIR_NW | AMED_EXACTPOS, NULL }, // 15 Towards Terminals 4/5/6, Helipad 1/2
523 { TERM_GROUP2_block, 255, 0, 86, 70, DIR_N, _airport_fta_international_16 }, // 16 In Front of Terminal 4 / Helipad 1
524 { TERM_GROUP2_block, 255, 0, 86, 54, DIR_N, _airport_fta_international_17 }, // 17 In Front of Terminal 5 / Helipad 2
525 { TERM_GROUP2_block, 255, 0, 86, 38, DIR_N, _airport_fta_international_18 }, // 18 In Front of Terminal 6
526 { TERM_GROUP2_EXIT1_block, 0, 20, 86, 22, DIR_N, NULL }, // 19 Towards Terminals Takeoff (Taxiway)
527 { TERM_GROUP2_EXIT1_block, 0, 21, 66, 22, DIR_N, NULL }, // 20 Towards Terminals Takeoff (Taxiway)
528 { TERM_GROUP2_EXIT2_block, 0, 22, 60, 22, DIR_N, NULL }, // 21 Towards Terminals Takeoff (Taxiway)
529 { TERM_GROUP2_EXIT2_block, 0, 26, 38, 22, DIR_N, NULL }, // 22 Towards Terminals Takeoff (Taxiway)
530 { TERM_GROUP1_block, 255, 0, 22, 70, DIR_N, _airport_fta_international_23 }, // 23 In Front of Terminal 1
531 { TERM_GROUP1_block, 255, 0, 22, 58, DIR_N, _airport_fta_international_24 }, // 24 In Front of Terminal 2
532 { TERM_GROUP1_block, 255, 0, 22, 38, DIR_N, _airport_fta_international_25 }, // 25 In Front of Terminal 3
533 { TAXIWAY_BUSY_block, 255, 0, 22, 22, DIR_NW | AMED_EXACTPOS, _airport_fta_international_26 }, // 26 Going for Takeoff
534 { OUT_WAY_block, 0, 28, 22, 6, DIR_N, NULL }, // 27 On Runway-out, prepare for takeoff
535 /* takeoff */
536 { OUT_WAY_block, TAKEOFF, 29, 3, 6, DIR_SW | AMED_EXACTPOS, NULL }, // 28 Accelerate to end of runway
537 { RUNWAY_OUT_block, 0, 30, 60, 6, DIR_N | AMED_NOSPDCLAMP, NULL }, // 29 Release control of runway, for smoother movement
538 { NOTHING_block, STARTTAKEOFF, 31, 105, 6, DIR_N | AMED_NOSPDCLAMP, NULL }, // 30 End of runway
539 { NOTHING_block, ENDTAKEOFF, 0, 190, 6, DIR_N | AMED_NOSPDCLAMP | AMED_TAKEOFF, NULL }, // 31 Take off
540 /* landing */
541 { NOTHING_block, FLYING, 37, 193, 104, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_international_32 }, // 32 Fly to landing position in air
542 { RUNWAY_IN_block, LANDING, 34, 105, 104, DIR_N | AMED_NOSPDCLAMP | AMED_LAND, NULL }, // 33 Going down for land
543 { RUNWAY_IN_block, 0, 35, 3, 104, DIR_N | AMED_NOSPDCLAMP | AMED_BRAKE, NULL }, // 34 Just landed, brake until end of runway
544 { RUNWAY_IN_block, 0, 36, 12, 104, DIR_N | AMED_SLOWTURN, NULL }, // 35 Just landed, turn around and taxi 1 square
545 { IN_WAY_block, ENDLANDING, 36, 7, 84, DIR_N, _airport_fta_international_36 }, // 36 Taxi from runway to crossing
546 /* flying */
547 { NOTHING_block, 0, 38, 1, 209, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 37 Fly around waiting for a landing spot (north-east)
548 { NOTHING_block, 0, 39, 1, 6, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 38 Fly around waiting for a landing spot (north-west)
549 { NOTHING_block, 0, 40, 273, 6, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 39 Fly around waiting for a landing spot (south-west)
550 { NOTHING_block, 0, 32, 305, 81, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 40 Fly around waiting for a landing spot (south)
551 /* helicopter -- stay in air in special place as a buffer to choose from helipads */
552 { PRE_HELIPAD_block, HELILANDING, 42, 128, 80, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 41 Bufferspace before helipad
553 { PRE_HELIPAD_block, HELIENDLANDING, 42, 128, 80, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_international_42 }, // 42 Bufferspace before helipad
554 { NOTHING_block, 0, 45, 96, 71, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 43 Get in position for Helipad1
555 { NOTHING_block, 0, 46, 96, 55, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 44 Get in position for Helipad2
556 /* landing */
557 { NOTHING_block, 255, 0, 96, 71, DIR_N | AMED_HELI_LOWER, _airport_fta_international_45 }, // 45 Land at Helipad1
558 { NOTHING_block, 255, 0, 96, 55, DIR_N | AMED_HELI_LOWER, _airport_fta_international_46 }, // 46 Land at Helipad2
559 /* helicopter takeoff */
560 { NOTHING_block, HELITAKEOFF, 0, 104, 71, DIR_N | AMED_HELI_RAISE, NULL }, // 47 Takeoff Helipad1
561 { NOTHING_block, HELITAKEOFF, 0, 104, 55, DIR_N | AMED_HELI_RAISE, NULL }, // 48 Takeoff Helipad2
562 { HANGAR2_AREA_block, 0, 50, 104, 32, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 49 Go to position for Hangarentrance in air
563 { HANGAR2_AREA_block, 0, 3, 104, 32, DIR_N | AMED_HELI_LOWER, NULL }, // 50 Land in HANGAR2_AREA to go to hangar
566 /* intercontinental */
567 static const AirportFTA::Hangar _airport_depots_intercontinental[] = { { 0, 5, DIR_SE, 0 }, { 8, 4, DIR_SE, 1 } };
568 static const byte _airport_terminal_intercontinental[] = { 2, 0, 4, 8 };
569 static const byte _airport_entries_intercontinental[] = { 44, 43, 46, 45 };
571 static const AirportFTA::Transition _airport_fta_intercontinental_0[] = {
572 { HANGAR1_AREA_block | TERM_GROUP1_block, 255, 0, false },
573 { HANGAR1_AREA_block | TERM_GROUP1_block, 255, 1, false },
574 { HANGAR1_AREA_block | TERM_GROUP1_block, TAKEOFF, 2, false },
575 { 0, 0, 2, true }
577 static const AirportFTA::Transition _airport_fta_intercontinental_1[] = {
578 { HANGAR2_AREA_block, 255, 1, false },
579 { HANGAR2_AREA_block, 255, 0, false },
580 { 0, 0, 3, true }
582 static const AirportFTA::Transition _airport_fta_intercontinental_2[] = {
583 { TERM_GROUP1_block, 255, 0, false },
584 { TERM_GROUP1_block, 255, 1, false },
585 { 0, HANGAR, 0, false },
586 { TERM_GROUP1_block, TAKEOFF, 27, false },
587 { 0, TERM5, 26, false },
588 { 0, TERM6, 26, false },
589 { 0, TERM7, 26, false },
590 { 0, TERM8, 26, false },
591 { 0, HELIPAD1, 26, false },
592 { 0, HELIPAD2, 26, false },
593 { 0, HELITAKEOFF, 74, false },
594 { 0, 0, 27, true }
596 static const AirportFTA::Transition _airport_fta_intercontinental_3[] = {
597 { 0, HANGAR, 1, false },
598 { 0, HELITAKEOFF, 75, false },
599 { 0, TAKEOFF, 59, false },
600 { 0, 0, 20, true }
602 static const AirportFTA::Transition _airport_fta_intercontinental_4[] = {
603 { HANGAR1_AREA_block | TERM_GROUP1_block, HANGAR, 26, false },
604 { 0, 0, 26, true }
606 static const AirportFTA::Transition _airport_fta_intercontinental_5[] = {
607 { HANGAR1_AREA_block | TERM_GROUP1_block, HANGAR, 27, false },
608 { 0, 0, 27, true }
610 static const AirportFTA::Transition _airport_fta_intercontinental_6[] = {
611 { HANGAR1_AREA_block | TERM_GROUP1_block, HANGAR, 28, false },
612 { 0, 0, 28, true }
614 static const AirportFTA::Transition _airport_fta_intercontinental_7[] = {
615 { HANGAR1_AREA_block | TERM_GROUP1_block, HANGAR, 29, false },
616 { 0, 0, 29, true }
618 static const AirportFTA::Transition _airport_fta_intercontinental_8[] = {
619 { HANGAR2_AREA_block, HANGAR, 18, false },
620 { 0, 0, 18, true }
622 static const AirportFTA::Transition _airport_fta_intercontinental_9[] = {
623 { HANGAR2_AREA_block, HANGAR, 19, false },
624 { 0, 0, 19, true }
626 static const AirportFTA::Transition _airport_fta_intercontinental_10[] = {
627 { HANGAR2_AREA_block, HANGAR, 20, false },
628 { 0, 0, 20, true }
630 static const AirportFTA::Transition _airport_fta_intercontinental_11[] = {
631 { HANGAR2_AREA_block, HANGAR, 21, false },
632 { 0, 0, 21, true }
634 static const AirportFTA::Transition _airport_fta_intercontinental_12[] = {
635 { 0, HANGAR, 70, false },
636 { 0, HELITAKEOFF, 72, true }
638 static const AirportFTA::Transition _airport_fta_intercontinental_13[] = {
639 { 0, HANGAR, 71, false },
640 { 0, HELITAKEOFF, 73, true }
642 static const AirportFTA::Transition _airport_fta_intercontinental_18[] = {
643 { TERM5_block, TERM5, 8, false },
644 { 0, TAKEOFF, 19, false },
645 { HELIPAD1_block, HELITAKEOFF, 19, false },
646 { TERM_GROUP2_EXIT1_block, 0, 19, true }
648 static const AirportFTA::Transition _airport_fta_intercontinental_19[] = {
649 { TERM6_block, TERM6, 9, false },
650 { 0, TERM5, 18, false },
651 { 0, TAKEOFF, 57, false },
652 { HELIPAD1_block, HELITAKEOFF, 20, false },
653 { TERM_GROUP2_EXIT1_block, 0, 20, true } // add exit to runway out 2
655 static const AirportFTA::Transition _airport_fta_intercontinental_20[] = {
656 { TERM7_block, TERM7, 10, false },
657 { 0, TERM5, 19, false },
658 { 0, TERM6, 19, false },
659 { HANGAR2_AREA_block, HANGAR, 3, false },
660 { 0, TAKEOFF, 19, false },
661 { TERM_GROUP2_EXIT1_block, 0, 21, true }
663 static const AirportFTA::Transition _airport_fta_intercontinental_21[] = {
664 { TERM8_block, TERM8, 11, false },
665 { HANGAR2_AREA_block, HANGAR, 20, false },
666 { 0, TERM5, 20, false },
667 { 0, TERM6, 20, false },
668 { 0, TERM7, 20, false },
669 { 0, TAKEOFF, 20, false },
670 { TERM_GROUP2_EXIT1_block, 0, 22, true }
672 static const AirportFTA::Transition _airport_fta_intercontinental_22[] = {
673 { 0, HANGAR, 21, false },
674 { 0, TERM5, 21, false },
675 { 0, TERM6, 21, false },
676 { 0, TERM7, 21, false },
677 { 0, TERM8, 21, false },
678 { 0, TAKEOFF, 21, false },
679 { 0, 0, 23, true }
681 static const AirportFTA::Transition _airport_fta_intercontinental_25[] = {
682 { HANGAR1_AREA_block | TERM_GROUP1_block, HANGAR, 29, false },
683 { 0, 0, 29, true }
685 static const AirportFTA::Transition _airport_fta_intercontinental_26[] = {
686 { TERM1_block, TERM1, 4, false },
687 { HANGAR1_AREA_block, HANGAR, 27, false },
688 { TERM_GROUP2_ENTER1_block, TERM5, 14, false },
689 { TERM_GROUP2_ENTER1_block, TERM6, 14, false },
690 { TERM_GROUP2_ENTER1_block, TERM7, 14, false },
691 { TERM_GROUP2_ENTER1_block, TERM8, 14, false },
692 { TERM_GROUP2_ENTER1_block, HELIPAD1, 14, false },
693 { TERM_GROUP2_ENTER1_block, HELIPAD2, 14, false },
694 { TERM_GROUP2_ENTER1_block, HELITAKEOFF, 14, false },
695 { 0, 0, 27, true }
697 static const AirportFTA::Transition _airport_fta_intercontinental_27[] = {
698 { TERM2_block, TERM2, 5, false },
699 { HANGAR1_AREA_block, HANGAR, 2, false },
700 { 0, TERM1, 26, false },
701 { 0, TERM5, 26, false },
702 { 0, TERM6, 26, false },
703 { 0, TERM7, 26, false },
704 { 0, TERM8, 26, false },
705 { 0, HELIPAD1, 14, false },
706 { 0, HELIPAD2, 14, false },
707 { 0, 0, 28, true }
709 static const AirportFTA::Transition _airport_fta_intercontinental_28[] = {
710 { TERM3_block, TERM3, 6, false },
711 { HANGAR1_AREA_block, HANGAR, 27, false },
712 { 0, TERM1, 27, false },
713 { 0, TERM2, 27, false },
714 { 0, TERM4, 29, false },
715 { 0, TERM5, 14, false },
716 { 0, TERM6, 14, false },
717 { 0, TERM7, 14, false },
718 { 0, TERM8, 14, false },
719 { 0, HELIPAD1, 14, false },
720 { 0, HELIPAD2, 14, false },
721 { 0, 0, 29, true }
723 static const AirportFTA::Transition _airport_fta_intercontinental_29[] = {
724 { TERM4_block, TERM4, 7, false },
725 { HANGAR1_AREA_block, HANGAR, 27, false },
726 { 0, TAKEOFF, 30, false },
727 { 0, 0, 28, true }
729 static const AirportFTA::Transition _airport_fta_intercontinental_42[] = {
730 { TERM_GROUP1_block, 255, 0, false },
731 { TERM_GROUP1_block, 255, 1, false },
732 { 0, HANGAR, 2, false },
733 { 0, 0, 26, true }
735 static const AirportFTA::Transition _airport_fta_intercontinental_44[] = {
736 { 0, HELILANDING, 47, false },
737 { 0, LANDING, 69, false },
738 { 0, 0, 45, true }
740 static const AirportFTA::Transition _airport_fta_intercontinental_46[] = {
741 { 0, LANDING, 76, false },
742 { 0, 0, 43, true }
744 static const AirportFTA::Transition _airport_fta_intercontinental_48[] = {
745 { 0, HELIPAD1, 49, false },
746 { 0, HELIPAD2, 50, false },
747 { 0, HANGAR, 55, true }
749 static const AirportFTA::Transition _airport_fta_intercontinental_51[] = {
750 { HELIPAD1_block, HELIPAD1, 12, false },
751 { 0, HANGAR, 55, false },
752 { 0, 0, 12, true }
754 static const AirportFTA::Transition _airport_fta_intercontinental_52[] = {
755 { HELIPAD2_block, HELIPAD2, 13, false },
756 { 0, HANGAR, 55, false },
757 { 0, 0, 13, true }
759 static const AirportFTA::Transition _airport_fta_intercontinental_57[] = {
760 { 0, TAKEOFF, 58, false },
761 { 0, 0, 58, true }
763 static const AirportFTA::Transition _airport_fta_intercontinental_66[] = {
764 { 0, 255, 1, false },
765 { 0, 255, 0, false },
766 { 0, 0, 67, true }
768 static const AirportFTA::Transition _airport_fta_intercontinental_68[] = {
769 { TERM_GROUP2_block, 255, 1, false },
770 { TERM_GROUP1_block, 255, 0, false },
771 { HANGAR2_AREA_block, HANGAR, 22, false },
772 { 0, 0, 22, true }
774 static const AirportFTA::Transition _airport_fta_intercontinental_69[] = {
775 { RUNWAY_IN2_block, 0, 63, true }
777 static const AirportFTA::Transition _airport_fta_intercontinental_70[] = {
778 { HELIPAD1_block, HELIPAD1, 12, false },
779 { HELIPAD1_block, HELITAKEOFF, 12, false },
780 { 0, 0, 71, true }
782 static const AirportFTA::Transition _airport_fta_intercontinental_71[] = {
783 { HELIPAD2_block, HELIPAD2, 13, false },
784 { HELIPAD1_block, HELITAKEOFF, 12, false },
785 { 0, 0, 24, true }
787 static const AirportFTA::Transition _airport_fta_intercontinental_76[] = {
788 { RUNWAY_IN_block, 0, 37, true }
790 static const AirportFTA::Position _airport_fta_intercontinental[77] = {
791 { NOTHING_block, HANGAR, 2, 8, 87, DIR_SE | AMED_EXACTPOS, _airport_fta_intercontinental_0 }, // 00 In Hangar 1
792 { NOTHING_block, HANGAR, 3, 136, 72, DIR_SE | AMED_EXACTPOS, _airport_fta_intercontinental_1 }, // 01 In Hangar 2
793 { HANGAR1_AREA_block, 255, 0, 8, 104, DIR_N, _airport_fta_intercontinental_2 }, // 02 Taxi to right outside depot 1
794 { HANGAR2_AREA_block, 255, 0, 136, 88, DIR_N, _airport_fta_intercontinental_3 }, // 03 Taxi to right outside depot 2
795 { TERM1_block, TERM1, 26, 56, 120, DIR_W | AMED_EXACTPOS, _airport_fta_intercontinental_4 }, // 04 Terminal 1
796 { TERM2_block, TERM2, 27, 56, 104, DIR_SW | AMED_EXACTPOS, _airport_fta_intercontinental_5 }, // 05 Terminal 2
797 { TERM3_block, TERM3, 28, 56, 88, DIR_SW | AMED_EXACTPOS, _airport_fta_intercontinental_6 }, // 06 Terminal 3
798 { TERM4_block, TERM4, 29, 56, 72, DIR_SW | AMED_EXACTPOS, _airport_fta_intercontinental_7 }, // 07 Terminal 4
799 { TERM5_block, TERM5, 18, 88, 120, DIR_N | AMED_EXACTPOS, _airport_fta_intercontinental_8 }, // 08 Terminal 5
800 { TERM6_block, TERM6, 19, 88, 104, DIR_NE | AMED_EXACTPOS, _airport_fta_intercontinental_9 }, // 09 Terminal 6
801 { TERM7_block, TERM7, 20, 88, 88, DIR_NE | AMED_EXACTPOS, _airport_fta_intercontinental_10 }, // 10 Terminal 7
802 { TERM8_block, TERM8, 21, 88, 72, DIR_NE | AMED_EXACTPOS, _airport_fta_intercontinental_11 }, // 11 Terminal 8
803 { HELIPAD1_block, HELIPAD1, 12, 88, 56, DIR_SE | AMED_EXACTPOS, _airport_fta_intercontinental_12 }, // 12 Helipad 1
804 { HELIPAD2_block, HELIPAD2, 13, 72, 56, DIR_NE | AMED_EXACTPOS, _airport_fta_intercontinental_13 }, // 13 Helipad 2
805 { TERM_GROUP2_ENTER1_block, 0, 15, 40, 136, DIR_N, NULL }, // 14 Term group 2 enter 1 a
806 { TERM_GROUP2_ENTER1_block, 0, 16, 56, 136, DIR_N, NULL }, // 15 Term group 2 enter 1 b
807 { TERM_GROUP2_ENTER2_block, 0, 17, 88, 136, DIR_N, NULL }, // 16 Term group 2 enter 2 a
808 { TERM_GROUP2_ENTER2_block, 0, 18, 104, 136, DIR_N, NULL }, // 17 Term group 2 enter 2 b
809 { TERM_GROUP2_block, 255, 0, 104, 120, DIR_N, _airport_fta_intercontinental_18 }, // 18 Term group 2 - opp term 5
810 { TERM_GROUP2_block, 255, 0, 104, 104, DIR_N, _airport_fta_intercontinental_19 }, // 19 Term group 2 - opp term 6 & exit2
811 { TERM_GROUP2_block, 255, 0, 104, 88, DIR_N, _airport_fta_intercontinental_20 }, // 20 Term group 2 - opp term 7 & hangar area 2
812 { TERM_GROUP2_block, 255, 0, 104, 72, DIR_N, _airport_fta_intercontinental_21 }, // 21 Term group 2 - opp term 8
813 { TERM_GROUP2_block, 255, 0, 104, 56, DIR_N, _airport_fta_intercontinental_22 }, // 22 Taxi Term group 2 exit a
814 { TERM_GROUP2_EXIT1_block, 0, 70, 104, 40, DIR_N, NULL }, // 23 Taxi Term group 2 exit b
815 { TERM_GROUP2_EXIT2_block, 0, 25, 56, 40, DIR_N, NULL }, // 24 Term group 2 exit 2a
816 { TERM_GROUP2_EXIT2_block, 255, 0, 40, 40, DIR_N, _airport_fta_intercontinental_25 }, // 25 Term group 2 exit 2b
817 { TERM_GROUP1_block, 255, 0, 40, 120, DIR_N, _airport_fta_intercontinental_26 }, // 26 Term group 1 - opp term 1
818 { TERM_GROUP1_block, 255, 0, 40, 104, DIR_N, _airport_fta_intercontinental_27 }, // 27 Term group 1 - opp term 2 & hangar area 1
819 { TERM_GROUP1_block, 255, 0, 40, 88, DIR_N, _airport_fta_intercontinental_28 }, // 28 Term group 1 - opp term 3
820 { TERM_GROUP1_block, 255, 0, 40, 72, DIR_N, _airport_fta_intercontinental_29 }, // 29 Term group 1 - opp term 4
821 { OUT_WAY_block2, 0, 31, 18, 72, DIR_NW, NULL }, // 30 Outway 1
822 { OUT_WAY_block, 0, 32, 8, 40, DIR_NW, NULL }, // 31 Airport OUTWAY
823 /* takeoff */
824 { RUNWAY_OUT_block, TAKEOFF, 33, 8, 24, DIR_SW | AMED_EXACTPOS, NULL }, // 32 Accelerate to end of runway
825 { RUNWAY_OUT_block, 0, 34, 119, 24, DIR_N | AMED_NOSPDCLAMP, NULL }, // 33 Release control of runway, for smoother movement
826 { NOTHING_block, STARTTAKEOFF, 35, 117, 24, DIR_N | AMED_NOSPDCLAMP, NULL }, // 34 End of runway
827 { NOTHING_block, ENDTAKEOFF, 0, 197, 24, DIR_N | AMED_NOSPDCLAMP | AMED_TAKEOFF, NULL }, // 35 Take off
828 /* landing */
829 { 0, 0, 0, 254, 84, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 36 Flying to landing position in air
830 { RUNWAY_IN_block, LANDING, 38, 117, 168, DIR_N | AMED_NOSPDCLAMP | AMED_LAND, NULL }, // 37 Going down for land
831 { RUNWAY_IN_block, 0, 39, 8, 168, DIR_N | AMED_NOSPDCLAMP | AMED_BRAKE, NULL }, // 38 Just landed, brake until end of runway
832 { RUNWAY_IN_block, 0, 40, 8, 168, DIR_N, NULL }, // 39 Just landed, turn around and taxi
833 { RUNWAY_IN_block, ENDLANDING, 41, 8, 144, DIR_NW, NULL }, // 40 Taxi from runway
834 { IN_WAY_block, 0, 42, 8, 128, DIR_NW, NULL }, // 41 Taxi from runway
835 { IN_WAY_block, 255, 0, 8, 120, DIR_NW | AMED_EXACTPOS, _airport_fta_intercontinental_42 }, // 42 Airport entrance
836 /* flying */
837 { 0, 0, 44, 56, 344, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 43 Fly around waiting for a landing spot (north-east)
838 { 0, FLYING, 45, -200, 88, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_intercontinental_44 }, // 44 Fly around waiting for a landing spot (north-west)
839 { 0, 0, 46, 56, -168, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 45 Fly around waiting for a landing spot (south-west)
840 { 0, FLYING, 43, 312, 88, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_intercontinental_46 }, // 46 Fly around waiting for a landing spot (south)
841 /* helicopter -- stay in air in special place as a buffer to choose from helipads */
842 { PRE_HELIPAD_block, HELILANDING, 48, 96, 40, DIR_N | AMED_NOSPDCLAMP, NULL }, // 47 Bufferspace before helipad
843 { PRE_HELIPAD_block, HELIENDLANDING, 48, 96, 40, DIR_N | AMED_NOSPDCLAMP, _airport_fta_intercontinental_48 }, // 48 Bufferspace before helipad
844 { NOTHING_block, 0, 51, 82, 54, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 49 Get in position for Helipad1
845 { NOTHING_block, 0, 52, 64, 56, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 50 Get in position for Helipad2
846 /* landing */
847 { NOTHING_block, 255, 0, 81, 55, DIR_N | AMED_HELI_LOWER, _airport_fta_intercontinental_51 }, // 51 Land at Helipad1
848 { NOTHING_block, 255, 0, 64, 56, DIR_N | AMED_HELI_LOWER, _airport_fta_intercontinental_52 }, // 52 Land at Helipad2
849 /* helicopter takeoff */
850 { NOTHING_block, HELITAKEOFF, 0, 80, 56, DIR_N | AMED_HELI_RAISE, NULL }, // 53 Takeoff Helipad1
851 { NOTHING_block, HELITAKEOFF, 0, 64, 56, DIR_N | AMED_HELI_RAISE, NULL }, // 54 Takeoff Helipad2
852 { HANGAR2_AREA_block, 0, 56, 136, 96, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 55 Go to position for Hangarentrance in air
853 { HANGAR2_AREA_block, 0, 3, 136, 96, DIR_N | AMED_HELI_LOWER, NULL }, // 56 Land in front of hangar2
854 /* runway 2 out support */
855 { OUT_WAY2_block, 255, 0, 126, 104, DIR_SE, _airport_fta_intercontinental_57 }, // 57 Outway 2
856 { OUT_WAY2_block, 0, 59, 136, 136, DIR_NE, NULL }, // 58 Airport OUTWAY 2
857 { RUNWAY_OUT2_block, TAKEOFF, 60, 136, 152, DIR_NE | AMED_EXACTPOS, NULL }, // 59 Accelerate to end of runway2
858 { RUNWAY_OUT2_block, 0, 61, 16, 152, DIR_N | AMED_NOSPDCLAMP, NULL }, // 60 Release control of runway2, for smoother movement
859 { NOTHING_block, STARTTAKEOFF, 62, 20, 152, DIR_N | AMED_NOSPDCLAMP, NULL }, // 61 End of runway2
860 { NOTHING_block, ENDTAKEOFF, 0, -56, 152, DIR_N | AMED_NOSPDCLAMP | AMED_TAKEOFF, NULL }, // 62 Take off2
861 /* runway 2 in support */
862 { RUNWAY_IN2_block, LANDING, 64, 24, 8, DIR_N | AMED_NOSPDCLAMP | AMED_LAND, NULL }, // 63 Going down for land2
863 { RUNWAY_IN2_block, 0, 65, 136, 8, DIR_N | AMED_NOSPDCLAMP | AMED_BRAKE, NULL }, // 64 Just landed, brake until end of runway2in
864 { RUNWAY_IN2_block, 0, 66, 136, 8, DIR_N, NULL }, // 65 Just landed, turn around and taxi
865 { RUNWAY_IN2_block, ENDLANDING, 0, 136, 24, DIR_SE, _airport_fta_intercontinental_66 }, // 66 Taxi from runway 2in
866 { IN_WAY2_block, 0, 68, 136, 40, DIR_SE, NULL }, // 67 Taxi from runway 2in
867 { IN_WAY2_block, 255, 0, 136, 56, DIR_NE | AMED_EXACTPOS, _airport_fta_intercontinental_68 }, // 68 Airport entrance2
868 { RUNWAY_IN2_block, 255, 0, -56, 8, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_intercontinental_69 }, // 69 Fly to landing position in air2
869 { TERM_GROUP2_EXIT1_block, 255, 0, 88, 40, DIR_N, _airport_fta_intercontinental_70 }, // 70 Taxi Term group 2 exit - opp heli1
870 { TERM_GROUP2_EXIT1_block, 255, 0, 72, 40, DIR_N, _airport_fta_intercontinental_71 }, // 71 Taxi Term group 2 exit - opp heli2
871 { HELIPAD1_block, 0, 53, 88, 57, DIR_SE | AMED_EXACTPOS, NULL }, // 72 pre-helitakeoff helipad 1
872 { HELIPAD2_block, 0, 54, 71, 56, DIR_NE | AMED_EXACTPOS, NULL }, // 73 pre-helitakeoff helipad 2
873 { NOTHING_block, HELITAKEOFF, 0, 8, 120, DIR_N | AMED_HELI_RAISE, NULL }, // 74 Helitakeoff outside depot 1
874 { NOTHING_block, HELITAKEOFF, 0, 136, 104, DIR_N | AMED_HELI_RAISE, NULL }, // 75 Helitakeoff outside depot 2
875 { RUNWAY_IN_block, 255, 0, 197, 168, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_intercontinental_76 }, // 76 Fly to landing position in air1
879 /* heliports, oilrigs don't have depots */
880 static const byte _airport_entries_heliport[] = { 7, 7, 7, 7 };
882 static const AirportFTA::Transition _airport_fta_heliport_2[] = {
883 { 0, HELILANDING, 3, false },
884 { 0, HELITAKEOFF, 1, true }
886 static const AirportFTA::Transition _airport_fta_heliport_4[] = {
887 { HELIPAD1_block, HELIPAD1, 0, false },
888 { 0, HELITAKEOFF, 2, true }
890 static const AirportFTA::Transition _airport_fta_heliport_8[] = {
891 { HELIPAD1_block, HELILANDING, 2, true }
893 static const AirportFTA::Position _airport_fta_heliport[9] = {
894 { HELIPAD1_block, HELIPAD1, 1, 5, 9, DIR_NE | AMED_EXACTPOS, NULL }, // 0 - At heliport terminal
895 { NOTHING_block, HELITAKEOFF, 0, 2, 9, DIR_N | AMED_HELI_RAISE, NULL }, // 1 - Take off (play sound)
896 { AIRPORT_BUSY_block, 255, 0, -3, 9, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_heliport_2 }, // 2 - In position above landing spot helicopter
897 { AIRPORT_BUSY_block, HELILANDING, 4, -3, 9, DIR_N | AMED_HELI_LOWER, NULL }, // 3 - Land
898 { AIRPORT_BUSY_block, HELIENDLANDING, 4, 2, 9, DIR_N, _airport_fta_heliport_4 }, // 4 - Goto terminal on ground
899 /* flying */
900 { NOTHING_block, 0, 6, -31, 59, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 5 - Circle #1 (north-east)
901 { NOTHING_block, 0, 7, -31, -49, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 6 - Circle #2 (north-west)
902 { NOTHING_block, 0, 8, 49, -49, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 7 - Circle #3 (south-west)
903 { NOTHING_block, FLYING, 5, 70, 9, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_heliport_8 }, // 8 - Circle #4 (south)
906 #define _airport_entries_oilrig _airport_entries_heliport
908 static const AirportFTA::Position _airport_fta_oilrig[9] = {
909 { HELIPAD1_block, HELIPAD1, 1, 31, 9, DIR_NE | AMED_EXACTPOS, NULL }, // 0 - At oilrig terminal
910 { NOTHING_block, HELITAKEOFF, 0, 28, 9, DIR_N | AMED_HELI_RAISE, NULL }, // 1 - Take off (play sound)
911 { AIRPORT_BUSY_block, 255, 0, 23, 9, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_heliport_2 }, // 2 - In position above landing spot helicopter
912 { AIRPORT_BUSY_block, HELILANDING, 4, 23, 9, DIR_N | AMED_HELI_LOWER, NULL }, // 3 - Land
913 { AIRPORT_BUSY_block, HELIENDLANDING, 4, 28, 9, DIR_N, _airport_fta_heliport_4 }, // 4 - Goto terminal on ground
914 /* flying */
915 { NOTHING_block, 0, 6, -31, 69, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 5 - circle #1 (north-east)
916 { NOTHING_block, 0, 7, -31, -49, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 6 - circle #2 (north-west)
917 { NOTHING_block, 0, 8, 69, -49, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 7 - circle #3 (south-west)
918 { NOTHING_block, FLYING, 5, 69, 9, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_heliport_8 }, // 8 - circle #4 (south)
921 /* helidepots */
922 static const AirportFTA::Hangar _airport_depots_helidepot[] = { { 1, 0, DIR_SE, 0 } };
923 static const byte _airport_entries_helidepot[] = { 4, 4, 4, 4 };
925 static const AirportFTA::Transition _airport_fta_helidepot_1[] = {
926 { 0, HANGAR, 0, false },
927 { HELIPAD1_block, HELIPAD1, 14, false },
928 { 0, HELITAKEOFF, 15, false },
929 { 0, 0, 0, true }
931 static const AirportFTA::Transition _airport_fta_helidepot_2[] = {
932 { PRE_HELIPAD_block, HELILANDING, 7, false },
933 { 0, HANGAR, 12, false },
934 { NOTHING_block, HELITAKEOFF, 16, true }
936 static const AirportFTA::Transition _airport_fta_helidepot_8[] = {
937 { 0, HELIPAD1, 9, false },
938 { 0, HANGAR, 12, false },
939 { 0, 0, 2, true }
941 static const AirportFTA::Transition _airport_fta_helidepot_10[] = {
942 { HELIPAD1_block, HELIPAD1, 14, false },
943 { 0, HANGAR, 1, false },
944 { 0, 0, 14, true }
946 static const AirportFTA::Transition _airport_fta_helidepot_14[] = {
947 { 0, HANGAR, 1, false },
948 { 0, HELITAKEOFF, 17, true }
950 static const AirportFTA::Position _airport_fta_helidepot[18] = {
951 { NOTHING_block, HANGAR, 1, 24, 4, DIR_NE | AMED_EXACTPOS, NULL }, // 0 - At depot
952 { HANGAR2_AREA_block, 255, 0, 24, 28, DIR_N, _airport_fta_helidepot_1 }, // 1 Taxi to right outside depot
953 { NOTHING_block, FLYING, 3, 5, 38, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_helidepot_2 }, // 2 Flying
954 /* flying */
955 { NOTHING_block, 0, 4, -15, -15, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 3 - Circle #1 (north-east)
956 { NOTHING_block, 0, 5, -15, -49, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 4 - Circle #2 (north-west)
957 { NOTHING_block, 0, 6, 49, -49, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 5 - Circle #3 (south-west)
958 { NOTHING_block, 0, 2, 49, -15, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 6 - Circle #4 (south-east)
959 /* helicopter -- stay in air in special place as a buffer to choose from helipads */
960 { PRE_HELIPAD_block, HELILANDING, 8, 8, 32, DIR_NW | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 7 - PreHelipad
961 { PRE_HELIPAD_block, HELIENDLANDING, 8, 8, 32, DIR_NW | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_helidepot_8 }, // 8 - Helipad
962 { NOTHING_block, 0, 10, 8, 16, DIR_NW | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 9 - Land
963 /* landing */
964 { NOTHING_block, 255, 10, 8, 16, DIR_NW | AMED_HELI_LOWER, _airport_fta_helidepot_10 }, // 10 - Land
965 /* helicopter takeoff */
966 { NOTHING_block, HELITAKEOFF, 0, 8, 24, DIR_N | AMED_HELI_RAISE, NULL }, // 11 - Take off (play sound)
967 { HANGAR2_AREA_block, 0, 13, 32, 24, DIR_NW | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 12 Air to above hangar area
968 { HANGAR2_AREA_block, 0, 1, 32, 24, DIR_NW | AMED_HELI_LOWER, NULL }, // 13 Taxi to right outside depot
969 { HELIPAD1_block, HELIPAD1, 14, 8, 24, DIR_NW | AMED_EXACTPOS, _airport_fta_helidepot_14 }, // 14 - on helipad1
970 { NOTHING_block, HELITAKEOFF, 0, 24, 28, DIR_N | AMED_HELI_RAISE, NULL }, // 15 Takeoff right outside depot
971 { 0, HELITAKEOFF, 14, 8, 24, DIR_SW | AMED_HELI_RAISE, NULL }, // 16 - Take off (play sound)
972 { NOTHING_block, 0, 11, 8, 24, DIR_E | AMED_SLOWTURN | AMED_EXACTPOS, NULL }, // 17 - turn on helipad1 for takeoff
975 /* helistation */
976 static const AirportFTA::Hangar _airport_depots_helistation[] = { { 0, 0, DIR_SE, 0 } };
977 static const byte _airport_entries_helistation[] = { 25, 25, 25, 25 };
979 static const AirportFTA::Transition _airport_fta_helistation_0[] = {
980 { 0, HELIPAD1, 1, false },
981 { 0, HELIPAD2, 1, false },
982 { 0, HELIPAD3, 1, false },
983 { 0, HELITAKEOFF, 1, false },
984 { 0, 0, 0, true }
986 static const AirportFTA::Transition _airport_fta_helistation_1[] = {
987 { 0, HANGAR, 0, false },
988 { 0, HELITAKEOFF, 3, false },
989 { 0, 0, 4, true }
991 static const AirportFTA::Transition _airport_fta_helistation_2[] = {
992 { 0, HELILANDING, 15, false },
993 { 0, 0, 28, true }
995 static const AirportFTA::Transition _airport_fta_helistation_4[] = {
996 { HANGAR2_AREA_block, HANGAR, 1, false },
997 { 0, HELITAKEOFF, 1, false },
998 { 0, 0, 5, true }
1000 static const AirportFTA::Transition _airport_fta_helistation_5[] = {
1001 { HELIPAD1_block, HELIPAD1, 6, false },
1002 { HELIPAD2_block, HELIPAD2, 7, false },
1003 { HELIPAD3_block, HELIPAD3, 8, false },
1004 { 0, 0, 4, true }
1006 static const AirportFTA::Transition _airport_fta_helistation_6[] = {
1007 { HANGAR2_AREA_block, HANGAR, 5, false },
1008 { 0, HELITAKEOFF, 9, false },
1009 { 0, 0, 6, true }
1011 static const AirportFTA::Transition _airport_fta_helistation_7[] = {
1012 { HANGAR2_AREA_block, HANGAR, 5, false },
1013 { 0, HELITAKEOFF, 10, false },
1014 { 0, 0, 7, true }
1016 static const AirportFTA::Transition _airport_fta_helistation_8[] = {
1017 { HANGAR2_AREA_block, HANGAR, 5, false },
1018 { 0, HELITAKEOFF, 11, false },
1019 { 0, 0, 8, true }
1021 static const AirportFTA::Transition _airport_fta_helistation_16[] = {
1022 { 0, HELIPAD1, 17, false },
1023 { 0, HELIPAD2, 18, false },
1024 { 0, HELIPAD3, 19, false },
1025 { 0, HANGAR, 23, true }
1027 static const AirportFTA::Transition _airport_fta_helistation_20[] = {
1028 { HELIPAD1_block, HELIPAD1, 6, false },
1029 { 0, HANGAR, 23, false },
1030 { 0, 0, 6, true }
1032 static const AirportFTA::Transition _airport_fta_helistation_21[] = {
1033 { HELIPAD2_block, HELIPAD2, 7, false },
1034 { 0, HANGAR, 23, false },
1035 { 0, 0, 7, true }
1037 static const AirportFTA::Transition _airport_fta_helistation_22[] = {
1038 { HELIPAD3_block, HELIPAD3, 8, false },
1039 { 0, HANGAR, 23, false },
1040 { 0, 0, 8, true }
1042 static const AirportFTA::Position _airport_fta_helistation[33] = {
1043 { NOTHING_block, HANGAR, 8, 8, 3, DIR_SE | AMED_EXACTPOS, _airport_fta_helistation_0 }, // 00 In Hangar2
1044 { HANGAR2_AREA_block, 255, 0, 8, 22, DIR_N, _airport_fta_helistation_1 }, // 01 outside hangar 2
1045 /* landing */
1046 { NOTHING_block, FLYING, 28, 116, 24, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_helistation_2 }, // 02 Fly to landing position in air
1047 /* helicopter side */
1048 { NOTHING_block, HELITAKEOFF, 0, 14, 22, DIR_N | AMED_HELI_RAISE, NULL }, // 03 Helitakeoff outside hangar1 (play sound)
1049 { TAXIWAY_BUSY_block, 255, 0, 24, 22, DIR_N, _airport_fta_helistation_4 }, // 04 taxiing
1050 { TAXIWAY_BUSY_block, 255, 0, 40, 22, DIR_N, _airport_fta_helistation_5 }, // 05 taxiing
1051 { HELIPAD1_block, HELIPAD1, 5, 40, 8, DIR_NE | AMED_EXACTPOS, _airport_fta_helistation_6 }, // 06 Helipad 1
1052 { HELIPAD2_block, HELIPAD2, 5, 56, 8, DIR_NE | AMED_EXACTPOS, _airport_fta_helistation_7 }, // 07 Helipad 2
1053 { HELIPAD3_block, HELIPAD3, 5, 56, 24, DIR_NE | AMED_EXACTPOS, _airport_fta_helistation_8 }, // 08 Helipad 3
1054 { HELIPAD1_block, 0, 12, 40, 8, DIR_N | AMED_EXACTPOS, NULL }, // 09 pre-helitakeoff helipad 1
1055 { HELIPAD2_block, 0, 13, 56, 8, DIR_N | AMED_EXACTPOS, NULL }, // 10 pre-helitakeoff helipad 2
1056 { HELIPAD3_block, 0, 14, 56, 24, DIR_N | AMED_EXACTPOS, NULL }, // 11 pre-helitakeoff helipad 3
1057 { NOTHING_block, HELITAKEOFF, 0, 32, 8, DIR_N | AMED_HELI_RAISE, NULL }, // 12 Takeoff Helipad1
1058 { NOTHING_block, HELITAKEOFF, 0, 48, 8, DIR_N | AMED_HELI_RAISE, NULL }, // 13 Takeoff Helipad2
1059 { NOTHING_block, HELITAKEOFF, 0, 48, 24, DIR_N | AMED_HELI_RAISE, NULL }, // 14 Takeoff Helipad3
1060 /* flying */
1061 { PRE_HELIPAD_block, HELILANDING, 16, 84, 24, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 15 Bufferspace before helipad
1062 { PRE_HELIPAD_block, HELIENDLANDING, 16, 68, 24, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, _airport_fta_helistation_16 }, // 16 Bufferspace before helipad
1063 { NOTHING_block, 0, 20, 32, 8, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 17 Get in position for Helipad1
1064 { NOTHING_block, 0, 21, 48, 8, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 18 Get in position for Helipad2
1065 { NOTHING_block, 0, 22, 48, 24, DIR_NE | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 19 Get in position for Helipad3
1066 /* helicopter landing */
1067 { NOTHING_block, 255, 0, 40, 8, DIR_N | AMED_HELI_LOWER, _airport_fta_helistation_20 }, // 20 Land at Helipad1
1068 { NOTHING_block, 255, 0, 48, 8, DIR_N | AMED_HELI_LOWER, _airport_fta_helistation_21 }, // 21 Land at Helipad2
1069 { NOTHING_block, 255, 0, 48, 24, DIR_N | AMED_HELI_LOWER, _airport_fta_helistation_22 }, // 22 Land at Helipad3
1070 { HANGAR2_AREA_block, 0, 24, 0, 22, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 23 Go to position for Hangarentrance in air
1071 { HANGAR2_AREA_block, 0, 1, 0, 22, DIR_N | AMED_HELI_LOWER, NULL }, // 24 Land in front of hangar
1072 { NOTHING_block, 0, 26, 148, -8, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 25 Fly around waiting for a landing spot (south-east)
1073 { NOTHING_block, 0, 27, 148, 8, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 26 Fly around waiting for a landing spot (south-west)
1074 { NOTHING_block, 0, 2, 132, 24, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 27 Fly around waiting for a landing spot (south-west)
1075 { NOTHING_block, 0, 29, 100, 24, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 28 Fly around waiting for a landing spot (north-east)
1076 { NOTHING_block, 0, 30, 84, 8, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 29 Fly around waiting for a landing spot (south-east)
1077 { NOTHING_block, 0, 31, 84, -8, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 30 Fly around waiting for a landing spot (south-west)
1078 { NOTHING_block, 0, 32, 100, -24, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 31 Fly around waiting for a landing spot (north-west)
1079 { NOTHING_block, 0, 25, 132, -24, DIR_N | AMED_NOSPDCLAMP | AMED_SLOWTURN, NULL }, // 32 Fly around waiting for a landing spot (north-east)
1082 #endif /* AIRPORT_MOVEMENT_H */