OpenTTD Source: src/table/airport_movement.h Source File

OpenTTD Source 15.3

airport_movement.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * 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.
4 * 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.
5 * 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 <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
10#ifndef AIRPORT_MOVEMENT_H
11#define AIRPORT_MOVEMENT_H
12
13#include "../airport.h"
14#include "../newgrf_airport.h"
15
20 struct AirportFTAbuildup {
21 uint8_t position;
22 uint8_t heading;
23 AirportBlocks blocks;
24 uint8_t next;
25};
26
29
38 static const AirportMovingData _airport_moving_data_dummy[] = {
39 { 0, 0, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N },
40 { 0, 96, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N },
41 { 96, 96, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N },
42 { 96, 0, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N },
43};
44
46 static const AirportMovingData _airport_moving_data_country[22] = {
47 { 53, 3, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 00 In Hangar
48 { 53, 27, {}, DIR_N }, // 01 Taxi to right outside depot
49 { 32, 23, {AirportMovingDataFlag::ExactPosition}, DIR_NW}, // 02 Terminal 1
50 { 10, 23, {AirportMovingDataFlag::ExactPosition}, DIR_NW}, // 03 Terminal 2
51 { 43, 37, {}, DIR_N }, // 04 Going towards terminal 2
52 { 24, 37, {}, DIR_N }, // 05 Going towards terminal 2
53 { 53, 37, {}, DIR_N }, // 06 Going for takeoff
54 { 61, 40, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 07 Taxi to start of runway (takeoff)
55 { 3, 40, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 08 Accelerate to end of runway
56 { -79, 40, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Takeoff}, DIR_N }, // 09 Take off
57 { 177, 40, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 10 Fly to landing position in air
58 { 56, 40, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Land}, DIR_N }, // 11 Going down for land
59 { 3, 40, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Brake}, DIR_N }, // 12 Just landed, brake until end of runway
60 { 7, 40, {}, DIR_N }, // 13 Just landed, turn around and taxi 1 square
61 { 53, 40, {}, DIR_N }, // 14 Taxi from runway to crossing
62 { 1, 193, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 15 Fly around waiting for a landing spot (north-east)
63 { 1, 1, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 16 Fly around waiting for a landing spot (north-west)
64 { 257, 1, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 17 Fly around waiting for a landing spot (south-west)
65 { 273, 47, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 18 Fly around waiting for a landing spot (south)
66 { 44, 37, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 19 Helicopter takeoff
67 { 44, 40, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 20 In position above landing spot helicopter
68 { 44, 40, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 21 Helicopter landing
69};
70
72 static const AirportMovingData _airport_moving_data_commuter[38] = {
73 { 69, 3, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 00 In Hangar
74 { 72, 22, {}, DIR_N }, // 01 Taxi to right outside depot
75 { 8, 22, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 02 Taxi to right outside depot
76 { 24, 36, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 03 Terminal 1
77 { 40, 36, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 04 Terminal 2
78 { 56, 36, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 05 Terminal 3
79 { 40, 8, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 06 Helipad 1
80 { 56, 8, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 07 Helipad 2
81 { 24, 22, {}, DIR_SW}, // 08 Taxiing
82 { 40, 22, {}, DIR_SW}, // 09 Taxiing
83 { 56, 22, {}, DIR_SW}, // 10 Taxiing
84 { 72, 40, {}, DIR_SE}, // 11 Airport OUTWAY
85 { 72, 54, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 12 Accelerate to end of runway
86 { 7, 54, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 13 Release control of runway, for smoother movement
87 { 5, 54, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 14 End of runway
88 { -79, 54, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Takeoff}, DIR_N }, // 15 Take off
89 { 145, 54, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 16 Fly to landing position in air
90 { 73, 54, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Land}, DIR_N }, // 17 Going down for land
91 { 3, 54, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Brake}, DIR_N }, // 18 Just landed, brake until end of runway
92 { 12, 54, {AirportMovingDataFlag::SlowTurn}, DIR_NW}, // 19 Just landed, turn around and taxi
93 { 8, 32, {}, DIR_NW}, // 20 Taxi from runway to crossing
94 { 1, 149, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 21 Fly around waiting for a landing spot (north-east)
95 { 1, 6, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 22 Fly around waiting for a landing spot (north-west)
96 { 193, 6, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 23 Fly around waiting for a landing spot (south-west)
97 { 225, 62, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 24 Fly around waiting for a landing spot (south)
98 /* Helicopter */
99 { 80, 0, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 25 Bufferspace before helipad
100 { 80, 0, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 26 Bufferspace before helipad
101 { 32, 8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 27 Get in position for Helipad1
102 { 48, 8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 28 Get in position for Helipad2
103 { 32, 8, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 29 Land at Helipad1
104 { 48, 8, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 30 Land at Helipad2
105 { 32, 8, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 31 Takeoff Helipad1
106 { 48, 8, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 32 Takeoff Helipad2
107 { 64, 22, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 33 Go to position for Hangarentrance in air
108 { 64, 22, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 34 Land in front of hangar
109 { 40, 8, {AirportMovingDataFlag::ExactPosition}, DIR_N }, // 35 pre-helitakeoff helipad 1
110 { 56, 8, {AirportMovingDataFlag::ExactPosition}, DIR_N }, // 36 pre-helitakeoff helipad 2
111 { 64, 25, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 37 Take off in front of hangar
112};
113
115 static const AirportMovingData _airport_moving_data_city[] = {
116 { 85, 3, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 00 In Hangar
117 { 85, 22, {}, DIR_N }, // 01 Taxi to right outside depot
118 { 26, 41, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 02 Terminal 1
119 { 56, 22, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 03 Terminal 2
120 { 38, 8, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 04 Terminal 3
121 { 65, 6, {}, DIR_N }, // 05 Taxi to right in infront of terminal 2/3
122 { 80, 27, {}, DIR_N }, // 06 Taxiway terminals 2-3
123 { 44, 63, {}, DIR_N }, // 07 Taxi to Airport center
124 { 58, 71, {}, DIR_N }, // 08 Towards takeoff
125 { 72, 85, {}, DIR_N }, // 09 Taxi to runway (takeoff)
126 { 89, 85, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 10 Taxi to start of runway (takeoff)
127 { 3, 85, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 11 Accelerate to end of runway
128 { -79, 85, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Takeoff}, DIR_N }, // 12 Take off
129 { 177, 87, {AirportMovingDataFlag::Hold, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 13 Fly to landing position in air
130 { 89, 87, {AirportMovingDataFlag::Hold, AirportMovingDataFlag::Land}, DIR_N }, // 14 Going down for land
131 { 20, 87, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Brake}, DIR_N }, // 15 Just landed, brake until end of runway
132 { 20, 87, {}, DIR_N }, // 16 Just landed, turn around and taxi 1 square // NOT USED
133 { 36, 71, {}, DIR_N }, // 17 Taxi from runway to crossing
134 { 160, 87, {AirportMovingDataFlag::Hold, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 18 Fly around waiting for a landing spot (north-east)
135 { 140, 1, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 19 Final approach fix
136 { 257, 1, {AirportMovingDataFlag::Hold, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 20 Fly around waiting for a landing spot (south-west)
137 { 273, 49, {AirportMovingDataFlag::Hold, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 21 Fly around waiting for a landing spot (south)
138 { 44, 63, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 22 Helicopter takeoff
139 { 28, 74, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 23 In position above landing spot helicopter
140 { 28, 74, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 24 Helicopter landing
141 { 145, 1, {AirportMovingDataFlag::Hold, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 25 Fly around waiting for a landing spot (north-west)
142 { -32, 1, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 26 Initial approach fix (north)
143 { 300, -48, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 27 Initial approach fix (south)
144 { 140, -48, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 28 Intermediate Approach fix (south), IAF (west)
145 { -32, 120, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 29 Initial approach fix (east)
146};
147
149 static const AirportMovingData _airport_moving_data_metropolitan[28] = {
150 { 85, 3, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 00 In Hangar
151 { 85, 22, {}, DIR_N }, // 01 Taxi to right outside depot
152 { 26, 41, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 02 Terminal 1
153 { 56, 22, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 03 Terminal 2
154 { 38, 8, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 04 Terminal 3
155 { 65, 6, {}, DIR_N }, // 05 Taxi to right in infront of terminal 2/3
156 { 80, 27, {}, DIR_N }, // 06 Taxiway terminals 2-3
157 { 49, 58, {}, DIR_N }, // 07 Taxi to Airport center
158 { 72, 58, {}, DIR_N }, // 08 Towards takeoff
159 { 72, 69, {}, DIR_N }, // 09 Taxi to runway (takeoff)
160 { 89, 69, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 10 Taxi to start of runway (takeoff)
161 { 3, 69, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 11 Accelerate to end of runway
162 { -79, 69, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Takeoff}, DIR_N }, // 12 Take off
163 { 177, 85, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 13 Fly to landing position in air
164 { 89, 85, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Land}, DIR_N }, // 14 Going down for land
165 { 3, 85, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Brake}, DIR_N }, // 15 Just landed, brake until end of runway
166 { 21, 85, {}, DIR_N }, // 16 Just landed, turn around and taxi 1 square
167 { 21, 69, {}, DIR_N }, // 17 On Runway-out taxiing to In-Way
168 { 21, 58, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 18 Taxi from runway to crossing
169 { 1, 193, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 19 Fly around waiting for a landing spot (north-east)
170 { 1, 1, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 20 Fly around waiting for a landing spot (north-west)
171 { 257, 1, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 21 Fly around waiting for a landing spot (south-west)
172 { 273, 49, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 22 Fly around waiting for a landing spot (south)
173 { 44, 58, {}, DIR_N }, // 23 Helicopter takeoff spot on ground (to clear airport sooner)
174 { 44, 63, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 24 Helicopter takeoff
175 { 15, 54, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 25 Get in position above landing spot helicopter
176 { 15, 54, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 26 Helicopter landing
177 { 21, 58, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 27 Transitions after landing to on-ground movement
178};
179
181 static const AirportMovingData _airport_moving_data_international[53] = {
182 { 7, 55, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 00 In Hangar 1
183 { 100, 21, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 01 In Hangar 2
184 { 7, 70, {}, DIR_N }, // 02 Taxi to right outside depot (Hangar 1)
185 { 100, 36, {}, DIR_N }, // 03 Taxi to right outside depot (Hangar 2)
186 { 38, 70, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 04 Terminal 1
187 { 38, 54, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 05 Terminal 2
188 { 38, 38, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 06 Terminal 3
189 { 70, 70, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 07 Terminal 4
190 { 70, 54, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 08 Terminal 5
191 { 70, 38, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 09 Terminal 6
192 { 104, 71, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 10 Helipad 1
193 { 104, 55, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 11 Helipad 2
194 { 22, 87, {}, DIR_N }, // 12 Towards Terminals 4/5/6, Helipad 1/2
195 { 60, 87, {}, DIR_N }, // 13 Towards Terminals 4/5/6, Helipad 1/2
196 { 66, 87, {}, DIR_N }, // 14 Towards Terminals 4/5/6, Helipad 1/2
197 { 86, 87, {AirportMovingDataFlag::ExactPosition}, DIR_NW}, // 15 Towards Terminals 4/5/6, Helipad 1/2
198 { 86, 70, {}, DIR_N }, // 16 In Front of Terminal 4 / Helipad 1
199 { 86, 54, {}, DIR_N }, // 17 In Front of Terminal 5 / Helipad 2
200 { 86, 38, {}, DIR_N }, // 18 In Front of Terminal 6
201 { 86, 22, {}, DIR_N }, // 19 Towards Terminals Takeoff (Taxiway)
202 { 66, 22, {}, DIR_N }, // 20 Towards Terminals Takeoff (Taxiway)
203 { 60, 22, {}, DIR_N }, // 21 Towards Terminals Takeoff (Taxiway)
204 { 38, 22, {}, DIR_N }, // 22 Towards Terminals Takeoff (Taxiway)
205 { 22, 70, {}, DIR_N }, // 23 In Front of Terminal 1
206 { 22, 58, {}, DIR_N }, // 24 In Front of Terminal 2
207 { 22, 38, {}, DIR_N }, // 25 In Front of Terminal 3
208 { 22, 22, {AirportMovingDataFlag::ExactPosition}, DIR_NW}, // 26 Going for Takeoff
209 { 22, 6, {}, DIR_N }, // 27 On Runway-out, prepare for takeoff
210 { 3, 6, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 28 Accelerate to end of runway
211 { 60, 6, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 29 Release control of runway, for smoother movement
212 { 105, 6, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 30 End of runway
213 { 190, 6, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Takeoff}, DIR_N }, // 31 Take off
214 { 193, 104, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 32 Fly to landing position in air
215 { 105, 104, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Land}, DIR_N }, // 33 Going down for land
216 { 3, 104, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Brake}, DIR_N }, // 34 Just landed, brake until end of runway
217 { 12, 104, {AirportMovingDataFlag::SlowTurn}, DIR_N }, // 35 Just landed, turn around and taxi 1 square
218 { 7, 84, {}, DIR_N }, // 36 Taxi from runway to crossing
219 { 1, 209, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 37 Fly around waiting for a landing spot (north-east)
220 { 1, 6, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 38 Fly around waiting for a landing spot (north-west)
221 { 273, 6, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 39 Fly around waiting for a landing spot (south-west)
222 { 305, 81, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 40 Fly around waiting for a landing spot (south)
223 /* Helicopter */
224 { 128, 80, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 41 Bufferspace before helipad
225 { 128, 80, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 42 Bufferspace before helipad
226 { 96, 71, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 43 Get in position for Helipad1
227 { 96, 55, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 44 Get in position for Helipad2
228 { 96, 71, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 45 Land at Helipad1
229 { 96, 55, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 46 Land at Helipad2
230 { 104, 71, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 47 Takeoff Helipad1
231 { 104, 55, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 48 Takeoff Helipad2
232 { 104, 32, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 49 Go to position for Hangarentrance in air
233 { 104, 32, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 50 Land in HANGAR2_AREA to go to hangar
234 { 7, 70, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 51 Takeoff from HANGAR1_AREA
235 { 100, 36, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 52 Takeoff from HANGAR2_AREA
236};
237
239 static const AirportMovingData _airport_moving_data_intercontinental[77] = {
240 { 8, 87, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 00 In Hangar 1
241 { 136, 72, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 01 In Hangar 2
242 { 8, 104, {}, DIR_N }, // 02 Taxi to right outside depot 1
243 { 136, 88, {}, DIR_N }, // 03 Taxi to right outside depot 2
244 { 56, 120, {AirportMovingDataFlag::ExactPosition}, DIR_W }, // 04 Terminal 1
245 { 56, 104, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 05 Terminal 2
246 { 56, 88, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 06 Terminal 3
247 { 56, 72, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 07 Terminal 4
248 { 88, 120, {AirportMovingDataFlag::ExactPosition}, DIR_N }, // 08 Terminal 5
249 { 88, 104, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 09 Terminal 6
250 { 88, 88, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 10 Terminal 7
251 { 88, 72, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 11 Terminal 8
252 { 88, 56, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 12 Helipad 1
253 { 72, 56, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 13 Helipad 2
254 { 40, 136, {}, DIR_N }, // 14 Term group 2 enter 1 a
255 { 56, 136, {}, DIR_N }, // 15 Term group 2 enter 1 b
256 { 88, 136, {}, DIR_N }, // 16 Term group 2 enter 2 a
257 { 104, 136, {}, DIR_N }, // 17 Term group 2 enter 2 b
258 { 104, 120, {}, DIR_N }, // 18 Term group 2 - opp term 5
259 { 104, 104, {}, DIR_N }, // 19 Term group 2 - opp term 6 & exit2
260 { 104, 88, {}, DIR_N }, // 20 Term group 2 - opp term 7 & hangar area 2
261 { 104, 72, {}, DIR_N }, // 21 Term group 2 - opp term 8
262 { 104, 56, {}, DIR_N }, // 22 Taxi Term group 2 exit a
263 { 104, 40, {}, DIR_N }, // 23 Taxi Term group 2 exit b
264 { 56, 40, {}, DIR_N }, // 24 Term group 2 exit 2a
265 { 40, 40, {}, DIR_N }, // 25 Term group 2 exit 2b
266 { 40, 120, {}, DIR_N }, // 26 Term group 1 - opp term 1
267 { 40, 104, {}, DIR_N }, // 27 Term group 1 - opp term 2 & hangar area 1
268 { 40, 88, {}, DIR_N }, // 28 Term group 1 - opp term 3
269 { 40, 72, {}, DIR_N }, // 29 Term group 1 - opp term 4
270 { 18, 72, {}, DIR_NW}, // 30 Outway 1
271 { 8, 40, {}, DIR_NW}, // 31 Airport OUTWAY
272 { 8, 24, {AirportMovingDataFlag::ExactPosition}, DIR_SW}, // 32 Accelerate to end of runway
273 { 119, 24, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 33 Release control of runway, for smoother movement
274 { 117, 24, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 34 End of runway
275 { 197, 24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Takeoff}, DIR_N }, // 35 Take off
276 { 254, 84, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 36 Flying to landing position in air
277 { 117, 168, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Land}, DIR_N }, // 37 Going down for land
278 { 8, 168, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Brake}, DIR_N }, // 38 Just landed, brake until end of runway
279 { 8, 168, {}, DIR_N }, // 39 Just landed, turn around and taxi
280 { 8, 144, {}, DIR_NW}, // 40 Taxi from runway
281 { 8, 128, {}, DIR_NW}, // 41 Taxi from runway
282 { 8, 120, {AirportMovingDataFlag::ExactPosition}, DIR_NW}, // 42 Airport entrance
283 { 56, 344, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 43 Fly around waiting for a landing spot (north-east)
284 { -200, 88, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 44 Fly around waiting for a landing spot (north-west)
285 { 56, -168, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 45 Fly around waiting for a landing spot (south-west)
286 { 312, 88, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 46 Fly around waiting for a landing spot (south)
287 /* Helicopter */
288 { 96, 40, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 47 Bufferspace before helipad
289 { 96, 40, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 48 Bufferspace before helipad
290 { 82, 54, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 49 Get in position for Helipad1
291 { 64, 56, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 50 Get in position for Helipad2
292 { 81, 55, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 51 Land at Helipad1
293 { 64, 56, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 52 Land at Helipad2
294 { 80, 56, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 53 Takeoff Helipad1
295 { 64, 56, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 54 Takeoff Helipad2
296 { 136, 96, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 55 Go to position for Hangarentrance in air
297 { 136, 96, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 56 Land in front of hangar2
298 { 126, 104, {}, DIR_SE}, // 57 Outway 2
299 { 136, 136, {}, DIR_NE}, // 58 Airport OUTWAY 2
300 { 136, 152, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 59 Accelerate to end of runway2
301 { 16, 152, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 60 Release control of runway2, for smoother movement
302 { 20, 152, {AirportMovingDataFlag::NoSpeedClamp}, DIR_N }, // 61 End of runway2
303 { -56, 152, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Takeoff}, DIR_N }, // 62 Take off2
304 { 24, 8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Land}, DIR_N }, // 63 Going down for land2
305 { 136, 8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::Brake}, DIR_N }, // 64 Just landed, brake until end of runway2in
306 { 136, 8, {}, DIR_N }, // 65 Just landed, turn around and taxi
307 { 136, 24, {}, DIR_SE}, // 66 Taxi from runway 2in
308 { 136, 40, {}, DIR_SE}, // 67 Taxi from runway 2in
309 { 136, 56, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 68 Airport entrance2
310 { -56, 8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 69 Fly to landing position in air2
311 { 88, 40, {}, DIR_N }, // 70 Taxi Term group 2 exit - opp heli1
312 { 72, 40, {}, DIR_N }, // 71 Taxi Term group 2 exit - opp heli2
313 { 88, 57, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 72 pre-helitakeoff helipad 1
314 { 71, 56, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 73 pre-helitakeoff helipad 2
315 { 8, 120, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 74 Helitakeoff outside depot 1
316 { 136, 104, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 75 Helitakeoff outside depot 2
317 { 197, 168, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 76 Fly to landing position in air1
318};
319
320
322 static const AirportMovingData _airport_moving_data_heliport[9] = {
323 { 5, 9, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 0 - At heliport terminal
324 { 2, 9, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 1 - Take off (play sound)
325 { -3, 9, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 2 - In position above landing spot helicopter
326 { -3, 9, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 3 - Land
327 { 2, 9, {}, DIR_N }, // 4 - Goto terminal on ground
328 { -31, 59, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 5 - Circle #1 (north-east)
329 { -31, -49, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 6 - Circle #2 (north-west)
330 { 49, -49, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 7 - Circle #3 (south-west)
331 { 70, 9, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 8 - Circle #4 (south)
332};
333
335 static const AirportMovingData _airport_moving_data_helidepot[18] = {
336 { 24, 4, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 0 - At depot
337 { 24, 28, {}, DIR_N }, // 1 Taxi to right outside depot
338 { 5, 38, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 2 Flying
339 { -15, -15, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 3 - Circle #1 (north-east)
340 { -15, -49, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 4 - Circle #2 (north-west)
341 { 49, -49, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 5 - Circle #3 (south-west)
342 { 49, -15, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 6 - Circle #4 (south-east)
343 { 8, 32, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_NW}, // 7 - PreHelipad
344 { 8, 32, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_NW}, // 8 - Helipad
345 { 8, 16, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_NW}, // 9 - Land
346 { 8, 16, {AirportMovingDataFlag::HeliLower}, DIR_NW}, // 10 - Land
347 { 8, 24, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 11 - Take off (play sound)
348 { 32, 24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_NW}, // 12 Air to above hangar area
349 { 32, 24, {AirportMovingDataFlag::HeliLower}, DIR_NW}, // 13 Taxi to right outside depot
350 { 8, 24, {AirportMovingDataFlag::ExactPosition}, DIR_NW}, // 14 - on helipad1
351 { 24, 28, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 15 Takeoff right outside depot
352 { 8, 24, {AirportMovingDataFlag::HeliRaise}, DIR_SW}, // 16 - Take off (play sound)
353 { 8, 24, {AirportMovingDataFlag::SlowTurn, AirportMovingDataFlag::ExactPosition}, DIR_E }, // 17 - turn on helipad1 for takeoff
354};
355
357 static const AirportMovingData _airport_moving_data_helistation[33] = {
358 { 8, 3, {AirportMovingDataFlag::ExactPosition}, DIR_SE}, // 00 In Hangar2
359 { 8, 22, {}, DIR_N }, // 01 outside hangar 2
360 { 116, 24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 02 Fly to landing position in air
361 { 14, 22, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 03 Helitakeoff outside hangar1(play sound)
362 { 24, 22, {}, DIR_N }, // 04 taxiing
363 { 40, 22, {}, DIR_N }, // 05 taxiing
364 { 40, 8, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 06 Helipad 1
365 { 56, 8, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 07 Helipad 2
366 { 56, 24, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 08 Helipad 3
367 { 40, 8, {AirportMovingDataFlag::ExactPosition}, DIR_N }, // 09 pre-helitakeoff helipad 1
368 { 56, 8, {AirportMovingDataFlag::ExactPosition}, DIR_N }, // 10 pre-helitakeoff helipad 2
369 { 56, 24, {AirportMovingDataFlag::ExactPosition}, DIR_N }, // 11 pre-helitakeoff helipad 3
370 { 32, 8, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 12 Takeoff Helipad1
371 { 48, 8, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 13 Takeoff Helipad2
372 { 48, 24, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 14 Takeoff Helipad3
373 { 84, 24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 15 Bufferspace before helipad
374 { 68, 24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 16 Bufferspace before helipad
375 { 32, 8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 17 Get in position for Helipad1
376 { 48, 8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 18 Get in position for Helipad2
377 { 48, 24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_NE}, // 19 Get in position for Helipad3
378 { 40, 8, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 20 Land at Helipad1
379 { 48, 8, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 21 Land at Helipad2
380 { 48, 24, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 22 Land at Helipad3
381 { 0, 22, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 23 Go to position for Hangarentrance in air
382 { 0, 22, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 24 Land in front of hangar
383 { 148, -8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 25 Fly around waiting for a landing spot (south-east)
384 { 148, 8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 26 Fly around waiting for a landing spot (south-west)
385 { 132, 24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 27 Fly around waiting for a landing spot (south-west)
386 { 100, 24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 28 Fly around waiting for a landing spot (north-east)
387 { 84, 8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 29 Fly around waiting for a landing spot (south-east)
388 { 84, -8, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 30 Fly around waiting for a landing spot (south-west)
389 { 100, -24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 31 Fly around waiting for a landing spot (north-west)
390 { 132, -24, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 32 Fly around waiting for a landing spot (north-east)
391};
392
394 static const AirportMovingData _airport_moving_data_oilrig[9] = {
395 { 31, 9, {AirportMovingDataFlag::ExactPosition}, DIR_NE}, // 0 - At oilrig terminal
396 { 28, 9, {AirportMovingDataFlag::HeliRaise}, DIR_N }, // 1 - Take off (play sound)
397 { 23, 9, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 2 - In position above landing spot helicopter
398 { 23, 9, {AirportMovingDataFlag::HeliLower}, DIR_N }, // 3 - Land
399 { 28, 9, {}, DIR_N }, // 4 - Goto terminal on ground
400 { -31, 69, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 5 - circle #1 (north-east)
401 { -31, -49, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 6 - circle #2 (north-west)
402 { 69, -49, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 7 - circle #3 (south-west)
403 { 69, 9, {AirportMovingDataFlag::NoSpeedClamp, AirportMovingDataFlag::SlowTurn}, DIR_N }, // 8 - circle #4 (south)
404};
405
406#undef AMD
407
410static const uint8_t _airport_entries_dummy[] = {0, 1, 2, 3};
411static const AirportFTAbuildup _airport_fta_dummy[] = {
412 { 0, TO_ALL, {}, 3},
413 { 1, TO_ALL, {}, 0},
414 { 2, TO_ALL, {}, 1},
415 { 3, TO_ALL, {}, 2},
416 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
417};
418
419/* First element of terminals array tells us how many depots there are (to know size of array)
420 * this may be changed later when airports are moved to external file */
421static const HangarTileTable _airport_depots_country[] = { {{3, 0}, DIR_SE, 0} };
422static const uint8_t _airport_terminal_country[] = {1, 2};
423static const uint8_t _airport_entries_country[] = {16, 15, 18, 17};
424static const AirportFTAbuildup _airport_fta_country[] = {
425 { 0, HANGAR, AirportBlock::Nothing, 1 },
426 { 1, TERMGROUP, AirportBlock::AirportBusy, 0 }, { 1, HANGAR, {}, 0 }, { 1, TERM1, AirportBlock::Term1, 2 }, { 1, TERM2, {}, 4 }, { 1, HELITAKEOFF, {}, 19 }, { 1, TO_ALL, {}, 6 },
427 { 2, TERM1, AirportBlock::Term1, 1 },
428 { 3, TERM2, AirportBlock::Term2, 5 },
429 { 4, TERMGROUP, AirportBlock::AirportBusy, 0 }, { 4, TERM2, {}, 5 }, { 4, HANGAR, {}, 1 }, { 4, TAKEOFF, {}, 6 }, { 4, HELITAKEOFF, {}, 1 },
430 { 5, TERMGROUP, AirportBlock::AirportBusy, 0 }, { 5, TERM2, AirportBlock::Term2, 3 }, { 5, TO_ALL, {}, 4 },
431 { 6, TO_ALL, AirportBlock::AirportBusy, 7 },
432 /* takeoff */
433 { 7, TAKEOFF, AirportBlock::AirportBusy, 8 },
434 { 8, STARTTAKEOFF, AirportBlock::Nothing, 9 },
435 { 9, ENDTAKEOFF, AirportBlock::Nothing, 0 },
436 /* landing */
437 { 10, FLYING, AirportBlock::Nothing, 15 }, { 10, LANDING, {}, 11 }, { 10, HELILANDING, {}, 20 },
438 { 11, LANDING, AirportBlock::AirportBusy, 12 },
439 { 12, TO_ALL, AirportBlock::AirportBusy, 13 },
440 { 13, ENDLANDING, AirportBlock::AirportBusy, 14 }, { 13, TERM2, {}, 5 }, { 13, TO_ALL, {}, 14 },
441 { 14, TO_ALL, AirportBlock::AirportBusy, 1 },
442 /* In air */
443 { 15, TO_ALL, AirportBlock::Nothing, 16 },
444 { 16, TO_ALL, AirportBlock::Nothing, 17 },
445 { 17, TO_ALL, AirportBlock::Nothing, 18 },
446 { 18, TO_ALL, AirportBlock::Nothing, 10 },
447 { 19, HELITAKEOFF, AirportBlock::Nothing, 0 },
448 { 20, HELILANDING, AirportBlock::AirportBusy, 21 },
449 { 21, HELIENDLANDING, AirportBlock::AirportBusy, 1 },
450 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
451};
452
453static const HangarTileTable _airport_depots_commuter[] = { {{4, 0}, DIR_SE, 0} };
454static const uint8_t _airport_terminal_commuter[] = { 1, 3 };
455static const uint8_t _airport_entries_commuter[] = {22, 21, 24, 23};
456static const AirportFTAbuildup _airport_fta_commuter[] = {
457 { 0, HANGAR, AirportBlock::Nothing, 1 }, { 0, HELITAKEOFF, AirportBlock::TaxiwayBusy, 1 }, { 0, TO_ALL, {}, 1 },
458 { 1, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 1, HANGAR, {}, 0 }, { 1, TAKEOFF, {}, 11 }, { 1, TERM1, AirportBlock::TaxiwayBusy, 10 }, { 1, TERM2, AirportBlock::TaxiwayBusy, 10 }, { 1, TERM3, AirportBlock::TaxiwayBusy, 10 }, { 1, HELIPAD1, AirportBlock::TaxiwayBusy, 10 }, { 1, HELIPAD2, AirportBlock::TaxiwayBusy, 10 }, { 1, HELITAKEOFF, AirportBlock::TaxiwayBusy, 37 }, { 1, TO_ALL, {}, 0 },
459 { 2, TERMGROUP, AirportBlock::AirportEntrance, 2 }, { 2, HANGAR, {}, 8 }, { 2, TERM1, {}, 8 }, { 2, TERM2, {}, 8 }, { 2, TERM3, {}, 8 }, { 2, HELIPAD1, {}, 8 }, { 2, HELIPAD2, {}, 8 }, { 2, HELITAKEOFF, {}, 8 }, { 2, TO_ALL, {}, 2 },
460 { 3, TERM1, AirportBlock::Term1, 8 }, { 3, HANGAR, {}, 8 }, { 3, TAKEOFF, {}, 8 }, { 3, TO_ALL, {}, 3 },
461 { 4, TERM2, AirportBlock::Term2, 9 }, { 4, HANGAR, {}, 9 }, { 4, TAKEOFF, {}, 9 }, { 4, TO_ALL, {}, 4 },
462 { 5, TERM3, AirportBlock::Term3, 10 }, { 5, HANGAR, {}, 10 }, { 5, TAKEOFF, {}, 10 }, { 5, TO_ALL, {}, 5 },
463 { 6, HELIPAD1, AirportBlock::Helipad1, 6 }, { 6, HANGAR, AirportBlock::TaxiwayBusy, 9 }, { 6, HELITAKEOFF, {}, 35 },
464 { 7, HELIPAD2, AirportBlock::Helipad2, 7 }, { 7, HANGAR, AirportBlock::TaxiwayBusy, 10 }, { 7, HELITAKEOFF, {}, 36 },
465 { 8, TERMGROUP, AirportBlock::TaxiwayBusy, 8 }, { 8, TAKEOFF, AirportBlock::TaxiwayBusy, 9 }, { 8, HANGAR, AirportBlock::TaxiwayBusy, 9 }, { 8, TERM1, AirportBlock::Term1, 3 }, { 8, TO_ALL, AirportBlock::TaxiwayBusy, 9 },
466 { 9, TERMGROUP, AirportBlock::TaxiwayBusy, 9 }, { 9, TAKEOFF, AirportBlock::TaxiwayBusy, 10 }, { 9, HANGAR, AirportBlock::TaxiwayBusy, 10 }, { 9, TERM2, AirportBlock::Term2, 4 }, { 9, HELIPAD1, AirportBlock::Helipad1, 6 }, { 9, HELITAKEOFF, AirportBlock::Helipad1, 6 }, { 9, TERM1, AirportBlock::TaxiwayBusy, 8 }, { 9, TO_ALL, AirportBlock::TaxiwayBusy, 10 },
467 { 10, TERMGROUP, AirportBlock::TaxiwayBusy, 10 }, { 10, TERM3, AirportBlock::Term3, 5 }, { 10, HELIPAD1, {}, 9 }, { 10, HELIPAD2, AirportBlock::Helipad2, 7 }, { 10, HELITAKEOFF, {}, 1 }, { 10, TAKEOFF, AirportBlock::TaxiwayBusy, 1 }, { 10, HANGAR, AirportBlock::TaxiwayBusy, 1 }, { 10, TO_ALL, AirportBlock::TaxiwayBusy, 9 },
468 { 11, TO_ALL, AirportBlock::OutWay, 12 },
469 /* takeoff */
470 { 12, TAKEOFF, AirportBlock::RunwayInOut, 13 },
471 { 13, TO_ALL, AirportBlock::RunwayInOut, 14 },
472 { 14, STARTTAKEOFF, AirportBlock::RunwayInOut, 15 },
473 { 15, ENDTAKEOFF, AirportBlock::Nothing, 0 },
474 /* landing */
475 { 16, FLYING, AirportBlock::Nothing, 21 }, { 16, LANDING, AirportBlock::InWay, 17 }, { 16, HELILANDING, {}, 25 },
476 { 17, LANDING, AirportBlock::RunwayInOut, 18 },
477 { 18, TO_ALL, AirportBlock::RunwayInOut, 19 },
478 { 19, TO_ALL, AirportBlock::RunwayInOut, 20 },
479 { 20, ENDLANDING, AirportBlock::InWay, 2 },
480 /* In Air */
481 { 21, TO_ALL, AirportBlock::Nothing, 22 },
482 { 22, TO_ALL, AirportBlock::Nothing, 23 },
483 { 23, TO_ALL, AirportBlock::Nothing, 24 },
484 { 24, TO_ALL, AirportBlock::Nothing, 16 },
485 /* Helicopter -- stay in air in special place as a buffer to choose from helipads */
486 { 25, HELILANDING, AirportBlock::PreHelipad, 26 },
487 { 26, HELIENDLANDING, AirportBlock::PreHelipad, 26 }, { 26, HELIPAD1, {}, 27 }, { 26, HELIPAD2, {}, 28 }, { 26, HANGAR, {}, 33 },
488 { 27, TO_ALL, AirportBlock::Nothing, 29 }, // helipad1 approach
489 { 28, TO_ALL, AirportBlock::Nothing, 30 },
490 /* landing */
491 { 29, TERMGROUP, AirportBlock::Nothing, 0 }, { 29, HELIPAD1, AirportBlock::Helipad1, 6 },
492 { 30, TERMGROUP, AirportBlock::Nothing, 0 }, { 30, HELIPAD2, AirportBlock::Helipad2, 7 },
493 /* Helicopter -- takeoff */
494 { 31, HELITAKEOFF, AirportBlock::Nothing, 0 },
495 { 32, HELITAKEOFF, AirportBlock::Nothing, 0 },
496 { 33, TO_ALL, AirportBlock::TaxiwayBusy, 34 }, // need to go to hangar when waiting in air
497 { 34, TO_ALL, AirportBlock::TaxiwayBusy, 1 },
498 { 35, TO_ALL, AirportBlock::Helipad1, 31 },
499 { 36, TO_ALL, AirportBlock::Helipad2, 32 },
500 { 37, HELITAKEOFF, AirportBlock::Nothing, 0 },
501 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
502};
503
504static const HangarTileTable _airport_depots_city[] = { {{5, 0}, DIR_SE, 0} };
505static const uint8_t _airport_terminal_city[] = { 1, 3 };
506static const uint8_t _airport_entries_city[] = {26, 29, 27, 28};
507static const AirportFTAbuildup _airport_fta_city[] = {
508 { 0, HANGAR, AirportBlock::Nothing, 1 }, { 0, TAKEOFF, AirportBlock::OutWay, 1 }, { 0, TO_ALL, {}, 1 },
509 { 1, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 1, HANGAR, {}, 0 }, { 1, TERM2, {}, 6 }, { 1, TERM3, {}, 6 }, { 1, TO_ALL, {}, 7 }, // for all else, go to 7
510 { 2, TERM1, AirportBlock::Term1, 7 }, { 2, TAKEOFF, AirportBlock::OutWay, 7 }, { 2, TO_ALL, {}, 7 },
511 { 3, TERM2, AirportBlock::Term2, 5 }, { 3, TAKEOFF, AirportBlock::OutWay, 6 }, { 3, TO_ALL, {}, 6 },
512 { 4, TERM3, AirportBlock::Term3, 5 }, { 4, TAKEOFF, AirportBlock::OutWay, 5 }, { 4, TO_ALL, {}, 5 },
513 { 5, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 5, TERM2, AirportBlock::Term2, 3 }, { 5, TERM3, AirportBlock::Term3, 4 }, { 5, TO_ALL, {}, 6 },
514 { 6, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 6, TERM2, AirportBlock::Term2, 3 }, { 6, TERM3, {}, 5 }, { 6, HANGAR, {}, 1 }, { 6, TO_ALL, {}, 7 },
515 { 7, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 7, TERM1, AirportBlock::Term1, 2 }, { 7, TAKEOFF, AirportBlock::OutWay, 8 }, { 7, HELITAKEOFF, {}, 22 }, { 7, HANGAR, {}, 1 }, { 7, TO_ALL, {}, 6 },
516 { 8, TO_ALL, AirportBlock::OutWay, 9 },
517 { 9, TO_ALL, AirportBlock::RunwayInOut, 10 },
518 /* takeoff */
519 { 10, TAKEOFF, AirportBlock::RunwayInOut, 11 },
520 { 11, STARTTAKEOFF, AirportBlock::Nothing, 12 },
521 { 12, ENDTAKEOFF, AirportBlock::Nothing, 0 },
522 /* landing */
523 { 13, FLYING, AirportBlock::Nothing, 18 }, { 13, LANDING, {}, 14 }, { 13, HELILANDING, {}, 23 },
524 { 14, LANDING, AirportBlock::RunwayInOut, 15 },
525 { 15, TO_ALL, AirportBlock::RunwayInOut, 17 },
526 { 16, TO_ALL, AirportBlock::RunwayInOut, 17 }, // not used, left for compatibility
527 { 17, ENDLANDING, AirportBlock::InWay, 7 },
528 /* In Air */
529 { 18, TO_ALL, AirportBlock::Nothing, 25 },
530 { 19, TO_ALL, AirportBlock::Nothing, 20 },
531 { 20, TO_ALL, AirportBlock::Nothing, 21 },
532 { 21, TO_ALL, AirportBlock::Nothing, 13 },
533 /* helicopter */
534 { 22, HELITAKEOFF, AirportBlock::Nothing, 0 },
535 { 23, HELILANDING, AirportBlock::InWay, 24 },
536 { 24, HELIENDLANDING, AirportBlock::InWay, 17 },
537 { 25, TO_ALL, AirportBlock::Nothing, 20},
538 { 26, TO_ALL, AirportBlock::Nothing, 19},
539 { 27, TO_ALL, AirportBlock::Nothing, 28},
540 { 28, TO_ALL, AirportBlock::Nothing, 19},
541 { 29, TO_ALL, AirportBlock::Nothing, 26},
542 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
543};
544
545static const HangarTileTable _airport_depots_metropolitan[] = { {{5, 0}, DIR_SE, 0} };
546static const uint8_t _airport_terminal_metropolitan[] = { 1, 3 };
547static const uint8_t _airport_entries_metropolitan[] = {20, 19, 22, 21};
548static const AirportFTAbuildup _airport_fta_metropolitan[] = {
549 { 0, HANGAR, AirportBlock::Nothing, 1 },
550 { 1, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 1, HANGAR, {}, 0 }, { 1, TERM2, {}, 6 }, { 1, TERM3, {}, 6 }, { 1, TO_ALL, {}, 7 }, // for all else, go to 7
551 { 2, TERM1, AirportBlock::Term1, 7 },
552 { 3, TERM2, AirportBlock::Term2, 6 },
553 { 4, TERM3, AirportBlock::Term3, 5 },
554 { 5, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 5, TERM2, AirportBlock::Term2, 3 }, { 5, TERM3, AirportBlock::Term3, 4 }, { 5, TO_ALL, {}, 6 },
555 { 6, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 6, TERM2, AirportBlock::Term2, 3 }, { 6, TERM3, {}, 5 }, { 6, HANGAR, {}, 1 }, { 6, TO_ALL, {}, 7 },
556 { 7, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 7, TERM1, AirportBlock::Term1, 2 }, { 7, TAKEOFF, {}, 8 }, { 7, HELITAKEOFF, {}, 23 }, { 7, HANGAR, {}, 1 }, { 7, TO_ALL, {}, 6 },
557 { 8, 0, AirportBlock::OutWay, 9 },
558 { 9, 0, AirportBlock::RunwayOut, 10 },
559 /* takeoff */
560 { 10, TAKEOFF, AirportBlock::RunwayOut, 11 },
561 { 11, STARTTAKEOFF, AirportBlock::Nothing, 12 },
562 { 12, ENDTAKEOFF, AirportBlock::Nothing, 0 },
563 /* landing */
564 { 13, FLYING, AirportBlock::Nothing, 19 }, { 13, LANDING, {}, 14 }, { 13, HELILANDING, {}, 25 },
565 { 14, LANDING, AirportBlock::RunwayIn, 15 },
566 { 15, TO_ALL, AirportBlock::RunwayIn, 16 },
567 { 16, TERMGROUP, AirportBlock::RunwayIn, 0 }, { 16, ENDLANDING, AirportBlock::InWay, 17 },
568 { 17, TERMGROUP, AirportBlock::RunwayOut, 0 }, { 17, ENDLANDING, AirportBlock::InWay, 18 },
569 { 18, ENDLANDING, AirportBlock::InWay, 27 },
570 /* In Air */
571 { 19, TO_ALL, AirportBlock::Nothing, 20 },
572 { 20, TO_ALL, AirportBlock::Nothing, 21 },
573 { 21, TO_ALL, AirportBlock::Nothing, 22 },
574 { 22, TO_ALL, AirportBlock::Nothing, 13 },
575 /* helicopter */
576 { 23, TO_ALL, AirportBlock::Nothing, 24 },
577 { 24, HELITAKEOFF, AirportBlock::Nothing, 0 },
578 { 25, HELILANDING, AirportBlock::InWay, 26 },
579 { 26, HELIENDLANDING, AirportBlock::InWay, 18 },
580 { 27, TERMGROUP, AirportBlock::TaxiwayBusy, 27 }, { 27, TERM1, AirportBlock::Term1, 2 }, { 27, TO_ALL, {}, 7 },
581 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
582};
583
584static const HangarTileTable _airport_depots_international[] = { {{0, 3}, DIR_SE, 0}, {{6, 1}, DIR_SE, 1} };
585static const uint8_t _airport_terminal_international[] = { 2, 3, 3 };
586static const uint8_t _airport_entries_international[] = { 38, 37, 40, 39 };
587static const AirportFTAbuildup _airport_fta_international[] = {
588 { 0, HANGAR, AirportBlock::Nothing, 2 }, { 0, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 0, TERMGROUP, AirportBlock::TermGroup2Enter1, 1 }, { 0, HELITAKEOFF, AirportBlock::AirportEntrance, 2 }, { 0, TO_ALL, {}, 2 },
589 { 1, HANGAR, AirportBlock::Nothing, 3 }, { 1, TERMGROUP, AirportBlock::Hangar2Area, 1 }, { 1, HELITAKEOFF, AirportBlock::Hangar2Area, 3 }, { 1, TO_ALL, {}, 3 },
590 { 2, TERMGROUP, AirportBlock::AirportEntrance, 0 }, { 2, HANGAR, {}, 0 }, { 2, TERM4, {}, 12 }, { 2, TERM5, {}, 12 }, { 2, TERM6, {}, 12 }, { 2, HELIPAD1, {}, 12 }, { 2, HELIPAD2, {}, 12 }, { 2, HELITAKEOFF, {}, 51 }, { 2, TO_ALL, {}, 23 },
591 { 3, TERMGROUP, AirportBlock::Hangar2Area, 0 }, { 3, HANGAR, {}, 1 }, { 3, HELITAKEOFF, {}, 52 }, { 3, TO_ALL, {}, 18 },
592 { 4, TERM1, AirportBlock::Term1, 23 }, { 4, HANGAR, AirportBlock::AirportEntrance, 23 }, { 4, TO_ALL, {}, 23 },
593 { 5, TERM2, AirportBlock::Term2, 24 }, { 5, HANGAR, AirportBlock::AirportEntrance, 24 }, { 5, TO_ALL, {}, 24 },
594 { 6, TERM3, AirportBlock::Term3, 25 }, { 6, HANGAR, AirportBlock::AirportEntrance, 25 }, { 6, TO_ALL, {}, 25 },
595 { 7, TERM4, AirportBlock::Term4, 16 }, { 7, HANGAR, AirportBlock::Hangar2Area, 16 }, { 7, TO_ALL, {}, 16 },
596 { 8, TERM5, AirportBlock::Term5, 17 }, { 8, HANGAR, AirportBlock::Hangar2Area, 17 }, { 8, TO_ALL, {}, 17 },
597 { 9, TERM6, AirportBlock::Term6, 18 }, { 9, HANGAR, AirportBlock::Hangar2Area, 18 }, { 9, TO_ALL, {}, 18 },
598 { 10, HELIPAD1, AirportBlock::Helipad1, 10 }, { 10, HANGAR, AirportBlock::Hangar2Area, 16 }, { 10, HELITAKEOFF, {}, 47 },
599 { 11, HELIPAD2, AirportBlock::Helipad2, 11 }, { 11, HANGAR, AirportBlock::Hangar2Area, 17 }, { 11, HELITAKEOFF, {}, 48 },
600 { 12, TO_ALL, AirportBlock::TermGroup2Enter1, 13 },
601 { 13, TO_ALL, AirportBlock::TermGroup2Enter1, 14 },
602 { 14, TO_ALL, AirportBlock::TermGroup2Enter2, 15 },
603 { 15, TO_ALL, AirportBlock::TermGroup2Enter2, 16 },
604 { 16, TERMGROUP, AirportBlock::TermGroup2, 0 }, { 16, TERM4, AirportBlock::Term4, 7 }, { 16, HELIPAD1, AirportBlock::Helipad1, 10 }, { 16, HELITAKEOFF, AirportBlock::Helipad1, 10 }, { 16, TO_ALL, {}, 17 },
605 { 17, TERMGROUP, AirportBlock::TermGroup2, 0 }, { 17, TERM5, AirportBlock::Term5, 8 }, { 17, TERM4, {}, 16 }, { 17, HELIPAD1, {}, 16 }, { 17, HELIPAD2, AirportBlock::Helipad2, 11 }, { 17, HELITAKEOFF, AirportBlock::Helipad2, 11 }, { 17, TO_ALL, {}, 18 },
606 { 18, TERMGROUP, AirportBlock::TermGroup2, 0 }, { 18, TERM6, AirportBlock::Term6, 9 }, { 18, TAKEOFF, {}, 19 }, { 18, HANGAR, AirportBlock::Hangar2Area, 3 }, { 18, TO_ALL, {}, 17 },
607 { 19, TO_ALL, AirportBlock::TermGroup2Exit1, 20 },
608 { 20, TO_ALL, AirportBlock::TermGroup2Exit1, 21 },
609 { 21, TO_ALL, AirportBlock::TermGroup2Exit2, 22 },
610 { 22, TO_ALL, AirportBlock::TermGroup2Exit2, 26 },
611 { 23, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 23, TERM1, AirportBlock::Term1, 4 }, { 23, HANGAR, AirportBlock::AirportEntrance, 2 }, { 23, TO_ALL, {}, 24 },
612 { 24, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 24, TERM2, AirportBlock::Term2, 5 }, { 24, TERM1, {}, 23 }, { 24, HANGAR, {}, 23 }, { 24, TO_ALL, {}, 25 },
613 { 25, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 25, TERM3, AirportBlock::Term3, 6 }, { 25, TAKEOFF, {}, 26 }, { 25, TO_ALL, {}, 24 },
614 { 26, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 26, TAKEOFF, {}, 27 }, { 26, TO_ALL, {}, 25 },
615 { 27, TO_ALL, AirportBlock::OutWay, 28 },
616 /* takeoff */
617 { 28, TAKEOFF, AirportBlock::OutWay, 29 },
618 { 29, TO_ALL, AirportBlock::RunwayOut, 30 },
619 { 30, STARTTAKEOFF, AirportBlock::Nothing, 31 },
620 { 31, ENDTAKEOFF, AirportBlock::Nothing, 0 },
621 /* landing */
622 { 32, FLYING, AirportBlock::Nothing, 37 }, { 32, LANDING, {}, 33 }, { 32, HELILANDING, {}, 41 },
623 { 33, LANDING, AirportBlock::RunwayIn, 34 },
624 { 34, TO_ALL, AirportBlock::RunwayIn, 35 },
625 { 35, TO_ALL, AirportBlock::RunwayIn, 36 },
626 { 36, ENDLANDING, AirportBlock::InWay, 36 }, { 36, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 36, TERMGROUP, AirportBlock::TermGroup2Enter1, 1 }, { 36, TERM4, {}, 12 }, { 36, TERM5, {}, 12 }, { 36, TERM6, {}, 12 }, { 36, TO_ALL, {}, 2 },
627 /* In Air */
628 { 37, TO_ALL, AirportBlock::Nothing, 38 },
629 { 38, TO_ALL, AirportBlock::Nothing, 39 },
630 { 39, TO_ALL, AirportBlock::Nothing, 40 },
631 { 40, TO_ALL, AirportBlock::Nothing, 32 },
632 /* Helicopter -- stay in air in special place as a buffer to choose from helipads */
633 { 41, HELILANDING, AirportBlock::PreHelipad, 42 },
634 { 42, HELIENDLANDING, AirportBlock::PreHelipad, 42 }, { 42, HELIPAD1, {}, 43 }, { 42, HELIPAD2, {}, 44 }, { 42, HANGAR, {}, 49 },
635 { 43, TO_ALL, AirportBlock::Nothing, 45 },
636 { 44, TO_ALL, AirportBlock::Nothing, 46 },
637 /* landing */
638 { 45, TERMGROUP, AirportBlock::Nothing, 0 }, { 45, HELIPAD1, AirportBlock::Helipad1, 10 },
639 { 46, TERMGROUP, AirportBlock::Nothing, 0 }, { 46, HELIPAD2, AirportBlock::Helipad2, 11 },
640 /* Helicopter -- takeoff */
641 { 47, HELITAKEOFF, AirportBlock::Nothing, 0 },
642 { 48, HELITAKEOFF, AirportBlock::Nothing, 0 },
643 { 49, TO_ALL, AirportBlock::Hangar2Area, 50 }, // need to go to hangar when waiting in air
644 { 50, TO_ALL, AirportBlock::Hangar2Area, 3 },
645 { 51, HELITAKEOFF, AirportBlock::Nothing, 0 },
646 { 52, HELITAKEOFF, AirportBlock::Nothing, 0 },
647 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
648};
649
650/* intercontinental */
651static const HangarTileTable _airport_depots_intercontinental[] = { {{0, 5}, DIR_SE, 0}, {{8, 4}, DIR_SE, 1} };
652static const uint8_t _airport_terminal_intercontinental[] = { 2, 4, 4 };
653static const uint8_t _airport_entries_intercontinental[] = { 44, 43, 46, 45 };
654static const AirportFTAbuildup _airport_fta_intercontinental[] = {
655 { 0, HANGAR, AirportBlock::Nothing, 2 }, { 0, TERMGROUP, {AirportBlock::Hangar1Area, AirportBlock::TermGroup1}, 0 }, { 0, TERMGROUP, {AirportBlock::Hangar1Area, AirportBlock::TermGroup1}, 1 }, { 0, TAKEOFF, {AirportBlock::Hangar1Area, AirportBlock::TermGroup1}, 2 }, { 0, TO_ALL, {}, 2 },
656 { 1, HANGAR, AirportBlock::Nothing, 3 }, { 1, TERMGROUP, AirportBlock::Hangar2Area, 1 }, { 1, TERMGROUP, AirportBlock::Hangar2Area, 0 }, { 1, TO_ALL, {}, 3 },
657 { 2, TERMGROUP, AirportBlock::Hangar1Area, 0 }, { 2, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 2, TERMGROUP, AirportBlock::TermGroup1, 1 }, { 2, HANGAR, {}, 0 }, { 2, TAKEOFF, AirportBlock::TermGroup1, 27 }, { 2, TERM5, {}, 26 }, { 2, TERM6, {}, 26 }, { 2, TERM7, {}, 26 }, { 2, TERM8, {}, 26 }, { 2, HELIPAD1, {}, 26 }, { 2, HELIPAD2, {}, 26 }, { 2, HELITAKEOFF, {}, 74 }, { 2, TO_ALL, {}, 27 },
658 { 3, TERMGROUP, AirportBlock::Hangar2Area, 0 }, { 3, HANGAR, {}, 1 }, { 3, HELITAKEOFF, {}, 75 }, {3, TAKEOFF, {}, 59}, { 3, TO_ALL, {}, 20 },
659 { 4, TERM1, AirportBlock::Term1, 26 }, { 4, HANGAR, {AirportBlock::Hangar1Area, AirportBlock::TermGroup1}, 26 }, { 4, TO_ALL, {}, 26 },
660 { 5, TERM2, AirportBlock::Term2, 27 }, { 5, HANGAR, {AirportBlock::Hangar1Area, AirportBlock::TermGroup1}, 27 }, { 5, TO_ALL, {}, 27 },
661 { 6, TERM3, AirportBlock::Term3, 28 }, { 6, HANGAR, {AirportBlock::Hangar1Area, AirportBlock::TermGroup1}, 28 }, { 6, TO_ALL, {}, 28 },
662 { 7, TERM4, AirportBlock::Term4, 29 }, { 7, HANGAR, {AirportBlock::Hangar1Area, AirportBlock::TermGroup1}, 29 }, { 7, TO_ALL, {}, 29 },
663 { 8, TERM5, AirportBlock::Term5, 18 }, { 8, HANGAR, AirportBlock::Hangar2Area, 18 }, { 8, TO_ALL, {}, 18 },
664 { 9, TERM6, AirportBlock::Term6, 19 }, { 9, HANGAR, AirportBlock::Hangar2Area, 19 }, { 9, TO_ALL, {}, 19 },
665 { 10, TERM7, AirportBlock::Term7, 20 }, { 10, HANGAR, AirportBlock::Hangar2Area, 20 }, { 10, TO_ALL, {}, 20 },
666 { 11, TERM8, AirportBlock::Term8, 21 }, { 11, HANGAR, AirportBlock::Hangar2Area, 21 }, { 11, TO_ALL, {}, 21 },
667 { 12, HELIPAD1, AirportBlock::Helipad1, 12 }, { 12, HANGAR, {}, 70 }, { 12, HELITAKEOFF, {}, 72 },
668 { 13, HELIPAD2, AirportBlock::Helipad2, 13 }, { 13, HANGAR, {}, 71 }, { 13, HELITAKEOFF, {}, 73 },
669 { 14, TO_ALL, AirportBlock::TermGroup2Enter1, 15 },
670 { 15, TO_ALL, AirportBlock::TermGroup2Enter1, 16 },
671 { 16, TO_ALL, AirportBlock::TermGroup2Enter2, 17 },
672 { 17, TO_ALL, AirportBlock::TermGroup2Enter2, 18 },
673 { 18, TERMGROUP, AirportBlock::TermGroup2, 0 }, { 18, TERM5, AirportBlock::Term5, 8 }, { 18, TAKEOFF, {}, 19 }, { 18, HELITAKEOFF, AirportBlock::Helipad1, 19 }, { 18, TO_ALL, AirportBlock::TermGroup2Exit1, 19 },
674 { 19, TERMGROUP, AirportBlock::TermGroup2, 0 }, { 19, TERM6, AirportBlock::Term6, 9 }, { 19, TERM5, {}, 18 }, { 19, TAKEOFF, {}, 57 }, { 19, HELITAKEOFF, AirportBlock::Helipad1, 20 }, { 19, TO_ALL, AirportBlock::TermGroup2Exit1, 20 }, // add exit to runway out 2
675 { 20, TERMGROUP, AirportBlock::TermGroup2, 0 }, { 20, TERM7, AirportBlock::Term7, 10 }, { 20, TERM5, {}, 19 }, { 20, TERM6, {}, 19 }, { 20, HANGAR, AirportBlock::Hangar2Area, 3 }, { 20, TAKEOFF, {}, 19 }, { 20, TO_ALL, AirportBlock::TermGroup2Exit1, 21 },
676 { 21, TERMGROUP, AirportBlock::TermGroup2, 0 }, { 21, TERM8, AirportBlock::Term8, 11 }, { 21, HANGAR, AirportBlock::Hangar2Area, 20 }, { 21, TERM5, {}, 20 }, { 21, TERM6, {}, 20 }, { 21, TERM7, {}, 20 }, { 21, TAKEOFF, {}, 20 }, { 21, TO_ALL, AirportBlock::TermGroup2Exit1, 22 },
677 { 22, TERMGROUP, AirportBlock::TermGroup2, 0 }, { 22, HANGAR, {}, 21 }, { 22, TERM5, {}, 21 }, { 22, TERM6, {}, 21 }, { 22, TERM7, {}, 21 }, { 22, TERM8, {}, 21 }, { 22, TAKEOFF, {}, 21 }, { 22, TO_ALL, {}, 23 },
678 { 23, TO_ALL, AirportBlock::TermGroup2Exit1, 70 },
679 { 24, TO_ALL, AirportBlock::TermGroup2Exit2, 25 },
680 { 25, TERMGROUP, AirportBlock::TermGroup2Exit2, 0 }, { 25, HANGAR, {AirportBlock::Hangar1Area, AirportBlock::TermGroup1}, 29 }, { 25, TO_ALL, {}, 29 },
681 { 26, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 26, TERM1, AirportBlock::Term1, 4 }, { 26, HANGAR, AirportBlock::Hangar1Area, 27 }, { 26, TERM5, AirportBlock::TermGroup2Enter1, 14 }, { 26, TERM6, AirportBlock::TermGroup2Enter1, 14 }, { 26, TERM7, AirportBlock::TermGroup2Enter1, 14 }, { 26, TERM8, AirportBlock::TermGroup2Enter1, 14 }, { 26, HELIPAD1, AirportBlock::TermGroup2Enter1, 14 }, { 26, HELIPAD2, AirportBlock::TermGroup2Enter1, 14 }, { 26, HELITAKEOFF, AirportBlock::TermGroup2Enter1, 14 }, { 26, TO_ALL, {}, 27 },
682 { 27, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 27, TERM2, AirportBlock::Term2, 5 }, { 27, HANGAR, AirportBlock::Hangar1Area, 2 }, { 27, TERM1, {}, 26 }, { 27, TERM5, {}, 26 }, { 27, TERM6, {}, 26 }, { 27, TERM7, {}, 26 }, { 27, TERM8, {}, 26 }, { 27, HELIPAD1, {}, 14 }, { 27, HELIPAD2, {}, 14 }, { 27, TO_ALL, {}, 28 },
683 { 28, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 28, TERM3, AirportBlock::Term3, 6 }, { 28, HANGAR, AirportBlock::Hangar1Area, 27 }, { 28, TERM1, {}, 27 }, { 28, TERM2, {}, 27 }, { 28, TERM4, {}, 29 }, { 28, TERM5, {}, 14 }, { 28, TERM6, {}, 14 }, { 28, TERM7, {}, 14 }, { 28, TERM8, {}, 14 }, { 28, HELIPAD1, {}, 14 }, { 28, HELIPAD2, {}, 14 }, { 28, TO_ALL, {}, 29 },
684 { 29, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 29, TERM4, AirportBlock::Term4, 7 }, { 29, HANGAR, AirportBlock::Hangar1Area, 27 }, { 29, TAKEOFF, {}, 30 }, { 29, TO_ALL, {}, 28 },
685 { 30, TO_ALL, AirportBlock::OutWay3, 31 },
686 { 31, TO_ALL, AirportBlock::OutWay, 32 },
687 /* takeoff */
688 { 32, TAKEOFF, AirportBlock::RunwayOut, 33 },
689 { 33, TO_ALL, AirportBlock::RunwayOut, 34 },
690 { 34, STARTTAKEOFF, AirportBlock::Nothing, 35 },
691 { 35, ENDTAKEOFF, AirportBlock::Nothing, 0 },
692 /* landing */
693 { 36, TO_ALL, {}, 0 },
694 { 37, LANDING, AirportBlock::RunwayIn, 38 },
695 { 38, TO_ALL, AirportBlock::RunwayIn, 39 },
696 { 39, TO_ALL, AirportBlock::RunwayIn, 40 },
697 { 40, ENDLANDING, AirportBlock::RunwayIn, 41 },
698 { 41, TO_ALL, AirportBlock::InWay, 42 },
699 { 42, TERMGROUP, AirportBlock::InWay, 0 }, { 42, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 42, TERMGROUP, AirportBlock::TermGroup1, 1 }, { 42, HANGAR, {}, 2 }, { 42, TO_ALL, {}, 26 },
700 /* In Air */
701 { 43, TO_ALL, {}, 44 },
702 { 44, FLYING, {}, 45 }, { 44, HELILANDING, {}, 47 }, { 44, LANDING, {}, 69 }, { 44, TO_ALL, {}, 45 },
703 { 45, TO_ALL, {}, 46 },
704 { 46, FLYING, {}, 43 }, { 46, LANDING, {}, 76 }, { 46, TO_ALL, {}, 43 },
705 /* Helicopter -- stay in air in special place as a buffer to choose from helipads */
706 { 47, HELILANDING, AirportBlock::PreHelipad, 48 },
707 { 48, HELIENDLANDING, AirportBlock::PreHelipad, 48 }, { 48, HELIPAD1, {}, 49 }, { 48, HELIPAD2, {}, 50 }, { 48, HANGAR, {}, 55 },
708 { 49, TO_ALL, AirportBlock::Nothing, 51 },
709 { 50, TO_ALL, AirportBlock::Nothing, 52 },
710 /* landing */
711 { 51, TERMGROUP, AirportBlock::Nothing, 0 }, { 51, HELIPAD1, AirportBlock::Helipad1, 12 }, { 51, HANGAR, {}, 55 }, { 51, TO_ALL, {}, 12 },
712 { 52, TERMGROUP, AirportBlock::Nothing, 0 }, { 52, HELIPAD2, AirportBlock::Helipad2, 13 }, { 52, HANGAR, {}, 55 }, { 52, TO_ALL, {}, 13 },
713 /* Helicopter -- takeoff */
714 { 53, HELITAKEOFF, AirportBlock::Nothing, 0 },
715 { 54, HELITAKEOFF, AirportBlock::Nothing, 0 },
716 { 55, TO_ALL, AirportBlock::Hangar2Area, 56 }, // need to go to hangar when waiting in air
717 { 56, TO_ALL, AirportBlock::Hangar2Area, 3 },
718 /* runway 2 out support */
719 { 57, TERMGROUP, AirportBlock::OutWay2, 0 }, { 57, TAKEOFF, {}, 58 }, { 57, TO_ALL, {}, 58 },
720 { 58, TO_ALL, AirportBlock::OutWay2, 59 },
721 { 59, TAKEOFF, AirportBlock::RunwayOut2, 60 }, // takeoff
722 { 60, TO_ALL, AirportBlock::RunwayOut2, 61 },
723 { 61, STARTTAKEOFF, AirportBlock::Nothing, 62 },
724 { 62, ENDTAKEOFF, AirportBlock::Nothing, 0 },
725 /* runway 2 in support */
726 { 63, LANDING, AirportBlock::RunwayIn2, 64 },
727 { 64, TO_ALL, AirportBlock::RunwayIn2, 65 },
728 { 65, TO_ALL, AirportBlock::RunwayIn2, 66 },
729 { 66, ENDLANDING, AirportBlock::RunwayIn2, 0 }, { 66, TERMGROUP, {}, 1 }, { 66, TERMGROUP, {}, 0 }, { 66, TO_ALL, {}, 67 },
730 { 67, TO_ALL, AirportBlock::InWay2, 68 },
731 { 68, TERMGROUP, AirportBlock::InWay2, 0 }, { 68, TERMGROUP, AirportBlock::TermGroup2, 1 }, { 68, TERMGROUP, AirportBlock::TermGroup1, 0 }, { 68, HANGAR, AirportBlock::Hangar2Area, 22 }, { 68, TO_ALL, {}, 22 },
732 { 69, TERMGROUP, AirportBlock::RunwayIn2, 0 }, { 69, TO_ALL, AirportBlock::RunwayIn2, 63 },
733 { 70, TERMGROUP, AirportBlock::TermGroup2Exit1, 0 }, { 70, HELIPAD1, AirportBlock::Helipad1, 12 }, { 70, HELITAKEOFF, AirportBlock::Helipad1, 12 }, { 70, TO_ALL, {}, 71 },
734 { 71, TERMGROUP, AirportBlock::TermGroup2Exit1, 0 }, { 71, HELIPAD2, AirportBlock::Helipad2, 13 }, { 71, HELITAKEOFF, AirportBlock::Helipad1, 12 }, { 71, TO_ALL, {}, 24 },
735 { 72, TO_ALL, AirportBlock::Helipad1, 53 },
736 { 73, TO_ALL, AirportBlock::Helipad2, 54 },
737 { 74, HELITAKEOFF, AirportBlock::Nothing, 0 },
738 { 75, HELITAKEOFF, AirportBlock::Nothing, 0 },
739 { 76, TERMGROUP, AirportBlock::RunwayIn, 0 }, { 76, TO_ALL, AirportBlock::RunwayIn, 37 },
740 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
741};
742
743
744/* heliports, oilrigs don't have depots */
745static const uint8_t _airport_entries_heliport[] = { 7, 7, 7, 7 };
746static const AirportFTAbuildup _airport_fta_heliport[] = {
747 { 0, HELIPAD1, AirportBlock::Helipad1, 1 },
748 { 1, HELITAKEOFF, AirportBlock::Nothing, 0 }, // takeoff
749 { 2, TERMGROUP, AirportBlock::AirportBusy, 0 }, { 2, HELILANDING, {}, 3 }, { 2, HELITAKEOFF, {}, 1 },
750 { 3, HELILANDING, AirportBlock::AirportBusy, 4 },
751 { 4, HELIENDLANDING, AirportBlock::AirportBusy, 4 }, { 4, HELIPAD1, AirportBlock::Helipad1, 0 }, { 4, HELITAKEOFF, {}, 2 },
752 /* In Air */
753 { 5, TO_ALL, AirportBlock::Nothing, 6 },
754 { 6, TO_ALL, AirportBlock::Nothing, 7 },
755 { 7, TO_ALL, AirportBlock::Nothing, 8 },
756 { 8, FLYING, AirportBlock::Nothing, 5 }, { 8, HELILANDING, AirportBlock::Helipad1, 2 }, // landing
757 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
758};
759#define _airport_entries_oilrig _airport_entries_heliport
760#define _airport_fta_oilrig _airport_fta_heliport
761
762/* helidepots */
763static const HangarTileTable _airport_depots_helidepot[] = { {{1, 0}, DIR_SE, 0} };
764static const uint8_t _airport_entries_helidepot[] = { 4, 4, 4, 4 };
765static const AirportFTAbuildup _airport_fta_helidepot[] = {
766 { 0, HANGAR, AirportBlock::Nothing, 1 },
767 { 1, TERMGROUP, AirportBlock::Hangar2Area, 0 }, { 1, HANGAR, {}, 0 }, { 1, HELIPAD1, AirportBlock::Helipad1, 14 }, { 1, HELITAKEOFF, {}, 15 }, { 1, TO_ALL, {}, 0 },
768 { 2, FLYING, AirportBlock::Nothing, 3 }, { 2, HELILANDING, AirportBlock::PreHelipad, 7 }, { 2, HANGAR, {}, 12 }, { 2, HELITAKEOFF, AirportBlock::Nothing, 16 },
769 /* In Air */
770 { 3, TO_ALL, AirportBlock::Nothing, 4 },
771 { 4, TO_ALL, AirportBlock::Nothing, 5 },
772 { 5, TO_ALL, AirportBlock::Nothing, 6 },
773 { 6, TO_ALL, AirportBlock::Nothing, 2 },
774 /* Helicopter -- stay in air in special place as a buffer to choose from helipads */
775 { 7, HELILANDING, AirportBlock::PreHelipad, 8 },
776 { 8, HELIENDLANDING, AirportBlock::PreHelipad, 8 }, { 8, HELIPAD1, {}, 9 }, { 8, HANGAR, {}, 12 }, { 8, TO_ALL, {}, 2 },
777 { 9, TO_ALL, AirportBlock::Nothing, 10 },
778 /* landing */
779 { 10, TERMGROUP, AirportBlock::Nothing, 10 }, { 10, HELIPAD1, AirportBlock::Helipad1, 14 }, { 10, HANGAR, {}, 1 }, { 10, TO_ALL, {}, 14 },
780 /* Helicopter -- takeoff */
781 { 11, HELITAKEOFF, AirportBlock::Nothing, 0 },
782 { 12, TO_ALL, AirportBlock::Hangar2Area, 13 }, // need to go to hangar when waiting in air
783 { 13, TO_ALL, AirportBlock::Hangar2Area, 1 },
784 { 14, HELIPAD1, AirportBlock::Helipad1, 14 }, { 14, HANGAR, {}, 1 }, { 14, HELITAKEOFF, {}, 17 },
785 { 15, HELITAKEOFF, AirportBlock::Nothing, 0 }, // takeoff outside depot
786 { 16, HELITAKEOFF, {}, 14 },
787 { 17, TO_ALL, AirportBlock::Nothing, 11 },
788 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
789};
790
791/* helistation */
792static const HangarTileTable _airport_depots_helistation[] = { {{0, 0}, DIR_SE, 0} };
793static const uint8_t _airport_entries_helistation[] = { 25, 25, 25, 25 };
794static const AirportFTAbuildup _airport_fta_helistation[] = {
795 { 0, HANGAR, AirportBlock::Nothing, 8 }, { 0, HELIPAD1, {}, 1 }, { 0, HELIPAD2, {}, 1 }, { 0, HELIPAD3, {}, 1 }, { 0, HELITAKEOFF, {}, 1 }, { 0, TO_ALL, {}, 0 },
796 { 1, TERMGROUP, AirportBlock::Hangar2Area, 0 }, { 1, HANGAR, {}, 0 }, { 1, HELITAKEOFF, {}, 3 }, { 1, TO_ALL, {}, 4 },
797 /* landing */
798 { 2, FLYING, AirportBlock::Nothing, 28 }, { 2, HELILANDING, {}, 15 }, { 2, TO_ALL, {}, 28 },
799 /* helicopter side */
800 { 3, HELITAKEOFF, AirportBlock::Nothing, 0 }, // helitakeoff outside hangar2
801 { 4, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 4, HANGAR, AirportBlock::Hangar2Area, 1 }, { 4, HELITAKEOFF, {}, 1 }, { 4, TO_ALL, {}, 5 },
802 { 5, TERMGROUP, AirportBlock::TaxiwayBusy, 0 }, { 5, HELIPAD1, AirportBlock::Helipad1, 6 }, { 5, HELIPAD2, AirportBlock::Helipad2, 7 }, { 5, HELIPAD3, AirportBlock::Helipad3, 8 }, { 5, TO_ALL, {}, 4 },
803 { 6, HELIPAD1, AirportBlock::Helipad1, 5 }, { 6, HANGAR, AirportBlock::Hangar2Area, 5 }, { 6, HELITAKEOFF, {}, 9 }, { 6, TO_ALL, {}, 6 },
804 { 7, HELIPAD2, AirportBlock::Helipad2, 5 }, { 7, HANGAR, AirportBlock::Hangar2Area, 5 }, { 7, HELITAKEOFF, {}, 10 }, { 7, TO_ALL, {}, 7 },
805 { 8, HELIPAD3, AirportBlock::Helipad3, 5 }, { 8, HANGAR, AirportBlock::Hangar2Area, 5 }, { 8, HELITAKEOFF, {}, 11 }, { 8, TO_ALL, {}, 8 },
806 { 9, TO_ALL, AirportBlock::Helipad1, 12 },
807 { 10, TO_ALL, AirportBlock::Helipad2, 13 },
808 { 11, TO_ALL, AirportBlock::Helipad3, 14 },
809 { 12, HELITAKEOFF, AirportBlock::Nothing, 0 },
810 { 13, HELITAKEOFF, AirportBlock::Nothing, 0 },
811 { 14, HELITAKEOFF, AirportBlock::Nothing, 0 },
812 /* heli - in flight moves */
813 { 15, HELILANDING, AirportBlock::PreHelipad, 16 },
814 { 16, HELIENDLANDING, AirportBlock::PreHelipad, 16 }, { 16, HELIPAD1, {}, 17 }, { 16, HELIPAD2, {}, 18 }, { 16, HELIPAD3, {}, 19 }, { 16, HANGAR, {}, 23 },
815 { 17, TO_ALL, AirportBlock::Nothing, 20 },
816 { 18, TO_ALL, AirportBlock::Nothing, 21 },
817 { 19, TO_ALL, AirportBlock::Nothing, 22 },
818 /* heli landing */
819 { 20, TERMGROUP, AirportBlock::Nothing, 0 }, { 20, HELIPAD1, AirportBlock::Helipad1, 6 }, { 20, HANGAR, {}, 23 }, { 20, TO_ALL, {}, 6 },
820 { 21, TERMGROUP, AirportBlock::Nothing, 0 }, { 21, HELIPAD2, AirportBlock::Helipad2, 7 }, { 21, HANGAR, {}, 23 }, { 21, TO_ALL, {}, 7 },
821 { 22, TERMGROUP, AirportBlock::Nothing, 0 }, { 22, HELIPAD3, AirportBlock::Helipad3, 8 }, { 22, HANGAR, {}, 23 }, { 22, TO_ALL, {}, 8 },
822 { 23, TO_ALL, AirportBlock::Hangar2Area, 24 }, // need to go to helihangar when waiting in air
823 { 24, TO_ALL, AirportBlock::Hangar2Area, 1 },
824 { 25, TO_ALL, AirportBlock::Nothing, 26 },
825 { 26, TO_ALL, AirportBlock::Nothing, 27 },
826 { 27, TO_ALL, AirportBlock::Nothing, 2 },
827 { 28, TO_ALL, AirportBlock::Nothing, 29 },
828 { 29, TO_ALL, AirportBlock::Nothing, 30 },
829 { 30, TO_ALL, AirportBlock::Nothing, 31 },
830 { 31, TO_ALL, AirportBlock::Nothing, 32 },
831 { 32, TO_ALL, AirportBlock::Nothing, 25 },
832 { MAX_ELEMENTS, TO_ALL, {}, 0 } // end marker. DO NOT REMOVE
833};
834
835#endif /* AIRPORT_MOVEMENT_H */
MAX_ELEMENTS
static const uint MAX_ELEMENTS
maximum number of aircraft positions at airport
Definition airport.h:19
AirportBlock::Term2
@ Term2
Block belonging to terminal 2.
AirportBlock::Term5
@ Term5
Block belonging to terminal 5.
AirportBlock::Term6
@ Term6
Block belonging to terminal 6.
AirportBlock::Term4
@ Term4
Block belonging to terminal 4.
AirportBlock::Helipad3
@ Helipad3
Block belonging to helipad 3.
AirportBlock::Term7
@ Term7
Block belonging to terminal 7.
AirportBlock::Helipad1
@ Helipad1
Block belonging to helipad 1.
AirportBlock::Term3
@ Term3
Block belonging to terminal 3.
AirportBlock::Term1
@ Term1
Block belonging to terminal 1.
AirportBlock::Helipad2
@ Helipad2
Block belonging to helipad 2.
AirportBlock::Term8
@ Term8
Block belonging to terminal 8.
AirportBlock::RunwayOut2
@ RunwayOut2
AirportMovingDataFlag::HeliRaise
@ HeliRaise
Helicopter take-off.
AirportMovingDataFlag::HeliLower
@ HeliLower
Helicopter landing.
AirportMovingDataFlag::Land
@ Land
Landing onto landing strip.
AirportMovingDataFlag::Takeoff
@ Takeoff
Takeoff movement.
AirportMovingDataFlag::SlowTurn
@ SlowTurn
Turn slowly (mostly used in the air).
AirportMovingDataFlag::Brake
@ Brake
Taxiing at the airport.
AirportMovingDataFlag::NoSpeedClamp
@ NoSpeedClamp
No speed restrictions.
AirportMovingDataFlag::Hold
@ Hold
Holding pattern movement (above the airport).
AirportMovingDataFlag::ExactPosition
@ ExactPosition
Go exactly to the destination coordinates.
HELITAKEOFF
@ HELITAKEOFF
Helicopter wants to leave the airport.
Definition airport.h:76
TERM4
@ TERM4
Heading for terminal 4.
Definition airport.h:68
STARTTAKEOFF
@ STARTTAKEOFF
Airplane has arrived at a runway for take-off.
Definition airport.h:74
HELIPAD2
@ HELIPAD2
Heading for helipad 2.
Definition airport.h:72
ENDTAKEOFF
@ ENDTAKEOFF
Airplane has reached end-point of the take-off runway.
Definition airport.h:75
TERM5
@ TERM5
Heading for terminal 5.
Definition airport.h:69
TERM6
@ TERM6
Heading for terminal 6.
Definition airport.h:70
TERM3
@ TERM3
Heading for terminal 3.
Definition airport.h:67
TERM8
@ TERM8
Heading for terminal 8.
Definition airport.h:83
HELIPAD3
@ HELIPAD3
Heading for helipad 3.
Definition airport.h:84
HELIPAD1
@ HELIPAD1
Heading for helipad 1.
Definition airport.h:71
TERM2
@ TERM2
Heading for terminal 2.
Definition airport.h:66
HANGAR
@ HANGAR
Heading for hangar.
Definition airport.h:64
FLYING
@ FLYING
Vehicle is flying in the air.
Definition airport.h:77
TAKEOFF
@ TAKEOFF
Airplane wants to leave the airport.
Definition airport.h:73
HELILANDING
@ HELILANDING
Helicopter wants to land.
Definition airport.h:80
TO_ALL
@ TO_ALL
Go in this direction for every target.
Definition airport.h:63
ENDLANDING
@ ENDLANDING
Airplane wants to finish landing.
Definition airport.h:79
HELIENDLANDING
@ HELIENDLANDING
Helicopter wants to finish landing.
Definition airport.h:81
TERM1
@ TERM1
Heading for terminal 1.
Definition airport.h:65
LANDING
@ LANDING
Airplane wants to land.
Definition airport.h:78
TERM7
@ TERM7
Heading for terminal 7.
Definition airport.h:82
TERMGROUP
@ TERMGROUP
Aircraft is looking for a free terminal in a terminalgroup.
Definition airport.h:86
_airport_moving_data_intercontinental
static const AirportMovingData _airport_moving_data_intercontinental[77]
Intercontinental Airport - 4 runways, 8 terminals, 2 dedicated helipads.
Definition airport_movement.h:239
_airport_moving_data_commuter
static const AirportMovingData _airport_moving_data_commuter[38]
Commuter Airfield (small) 5x4.
Definition airport_movement.h:72
_airport_moving_data_international
static const AirportMovingData _airport_moving_data_international[53]
International Airport (international) - 2 runways, 6 terminals, dedicated helipad.
Definition airport_movement.h:181
_airport_moving_data_oilrig
static const AirportMovingData _airport_moving_data_oilrig[9]
Oilrig.
Definition airport_movement.h:394
_airport_moving_data_dummy
static const AirportMovingData _airport_moving_data_dummy[]
Airport movement data creation macro.
Definition airport_movement.h:38
_airport_moving_data_country
static const AirportMovingData _airport_moving_data_country[22]
Country Airfield (small) 4x3.
Definition airport_movement.h:46
_airport_moving_data_heliport
static const AirportMovingData _airport_moving_data_heliport[9]
Heliport (heliport).
Definition airport_movement.h:322
_airport_moving_data_helidepot
static const AirportMovingData _airport_moving_data_helidepot[18]
HeliDepot 2x2 (heliport).
Definition airport_movement.h:335
_airport_moving_data_helistation
static const AirportMovingData _airport_moving_data_helistation[33]
HeliDepot 2x2 (heliport).
Definition airport_movement.h:357
_airport_moving_data_metropolitan
static const AirportMovingData _airport_moving_data_metropolitan[28]
Metropolitan Airport (metropolitan) - 2 runways.
Definition airport_movement.h:149
_airport_moving_data_city
static const AirportMovingData _airport_moving_data_city[]
City Airport (large) 6x6.
Definition airport_movement.h:115
EnumBitSet< AirportBlock, uint64_t >
DIR_SW
@ DIR_SW
Southwest.
Definition direction_type.h:31
DIR_NW
@ DIR_NW
Northwest.
Definition direction_type.h:33
DIR_N
@ DIR_N
North.
Definition direction_type.h:26
DIR_SE
@ DIR_SE
Southeast.
Definition direction_type.h:29
DIR_NE
@ DIR_NE
Northeast.
Definition direction_type.h:27
DIR_W
@ DIR_W
West.
Definition direction_type.h:32
DIR_E
@ DIR_E
East.
Definition direction_type.h:28
AirportFTAbuildup
State machine input struct (from external file, etc.) Finite sTate mAchine --> FTA.
Definition airport_movement.h:20
AirportFTAbuildup::heading
uint8_t heading
The current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.).
Definition airport_movement.h:22
AirportFTAbuildup::blocks
AirportBlocks blocks
The block this position is on on the airport (st->airport.flags).
Definition airport_movement.h:23
AirportFTAbuildup::next
uint8_t next
Next position from this position.
Definition airport_movement.h:24
AirportFTAbuildup::position
uint8_t position
The position that an airplane is at.
Definition airport_movement.h:21
AirportMovingData
A single location on an airport where aircraft can move to.
Definition airport.h:136
HangarTileTable
A list of all hangar tiles in an airport.
Definition newgrf_airport.h:95