airport_movement.h

Go to the documentation of this file.
00001 /* $Id: airport_movement.h 15718 2009-03-15 00:32:18Z rubidium $ */
00002 
00005 #ifndef AIRPORT_MOVEMENT_H
00006 #define AIRPORT_MOVEMENT_H
00007 
00008 
00009 /* state machine input struct (from external file, etc.)
00010  * Finite sTate mAchine --> FTA */
00011 struct AirportFTAbuildup {
00012   byte position; // the position that an airplane is at
00013   byte heading;  // the current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.)
00014   uint64 block;  // the block this position is on on the airport (st->airport_flags)
00015   byte next;     // next position from this position
00016 };
00017 
00020 
00021 static const AirportMovingData _airport_moving_data_dummy[] = {
00022   {    0,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN,     {DIR_N} },
00023   {    0,   96, AMED_NOSPDCLAMP | AMED_SLOWTURN,     {DIR_N} },
00024   {   96,   96, AMED_NOSPDCLAMP | AMED_SLOWTURN,     {DIR_N} },
00025   {   96,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN,     {DIR_N} },
00026 };
00027 
00028 /* Country Airfield (small) 4x3 */
00029 static const AirportMovingData _airport_moving_data_country[22] = {
00030   {   53,    3, AMED_EXACTPOS,                   {DIR_SE} }, // 00 In Hangar
00031   {   53,   27, 0,                               {DIR_N} }, // 01 Taxi to right outside depot
00032   {   32,   23, AMED_EXACTPOS,                   {DIR_NW} }, // 02 Terminal 1
00033   {   10,   23, AMED_EXACTPOS,                   {DIR_NW} }, // 03 Terminal 2
00034   {   43,   37, 0,                               {DIR_N} }, // 04 Going towards terminal 2
00035   {   24,   37, 0,                               {DIR_N} }, // 05 Going towards terminal 2
00036   {   53,   37, 0,                               {DIR_N} }, // 06 Going for takeoff
00037   {   61,   40, AMED_EXACTPOS,                   {DIR_NE} }, // 07 Taxi to start of runway (takeoff)
00038   {    3,   40, AMED_NOSPDCLAMP,                 {DIR_N} }, // 08 Accelerate to end of runway
00039   {  -79,   40, AMED_NOSPDCLAMP | AMED_TAKEOFF,  {DIR_N} }, // 09 Take off
00040   {  177,   40, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 10 Fly to landing position in air
00041   {   56,   40, AMED_NOSPDCLAMP | AMED_LAND,     {DIR_N} }, // 11 Going down for land
00042   {    3,   40, AMED_NOSPDCLAMP | AMED_BRAKE,    {DIR_N} }, // 12 Just landed, brake until end of runway
00043   {    7,   40, 0,                               {DIR_N} }, // 13 Just landed, turn around and taxi 1 square
00044   {   53,   40, 0,                               {DIR_N} }, // 14 Taxi from runway to crossing
00045   {  -31,  193, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 15 Fly around waiting for a landing spot (north-east)
00046   {    1,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 16 Fly around waiting for a landing spot (north-west)
00047   {  257,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 17 Fly around waiting for a landing spot (south-west)
00048   {  273,   49, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 18 Fly around waiting for a landing spot (south)
00049   {   44,   37, AMED_HELI_RAISE,                 {DIR_N} }, // 19 Helicopter takeoff
00050   {   44,   40, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 20 In position above landing spot helicopter
00051   {   44,   40, AMED_HELI_LOWER,                 {DIR_N} }, // 21 Helicopter landing
00052 };
00053 
00054 /* Commuter Airfield (small) 5x4 */
00055 static const AirportMovingData _airport_moving_data_commuter[37] = {
00056   {   69,    3, AMED_EXACTPOS,                   {DIR_SE} }, // 00 In Hangar
00057   {   72,   22, 0,                               {DIR_N} }, // 01 Taxi to right outside depot
00058   {    8,   22, AMED_EXACTPOS,                   {DIR_SW} }, // 01 Taxi to right outside depot
00059   {   24,   36, AMED_EXACTPOS,                   {DIR_SE} }, // 03 Terminal 1
00060   {   40,   36, AMED_EXACTPOS,                   {DIR_SE} }, // 04 Terminal 2
00061   {   56,   36, AMED_EXACTPOS,                   {DIR_SE} }, // 05 Terminal 3
00062   {   40,    8, AMED_EXACTPOS,                   {DIR_NE} }, // 06 Helipad 1
00063   {   56,    8, AMED_EXACTPOS,                   {DIR_NE} }, // 07 Helipad 2
00064   {   24,   22, 0,                               {DIR_SW} }, // 08 Taxiing
00065   {   40,   22, 0,                               {DIR_SW} }, // 09 Taxiing
00066   {   56,   22, 0,                               {DIR_SW} }, // 10 Taxiing
00067   {   72,   40, 0,                               {DIR_SE} }, // 11 Airport OUTWAY
00068   {   72,   54, AMED_EXACTPOS,                   {DIR_NE} }, // 12 Accelerate to end of runway
00069   {    7,   54, AMED_NOSPDCLAMP,                 {DIR_N} }, // 13 Release control of runway, for smoother movement
00070   {    5,   54, AMED_NOSPDCLAMP,                 {DIR_N} }, // 14 End of runway
00071   {  -79,   54, AMED_NOSPDCLAMP | AMED_TAKEOFF,  {DIR_N} }, // 15 Take off
00072   {  145,   54, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 16 Fly to landing position in air
00073   {   73,   54, AMED_NOSPDCLAMP | AMED_LAND,     {DIR_N} }, // 17 Going down for land
00074   {    3,   54, AMED_NOSPDCLAMP | AMED_BRAKE,    {DIR_N} }, // 18 Just landed, brake until end of runway
00075   {   12,   54, AMED_SLOWTURN,                   {DIR_NW} }, // 19 Just landed, turn around and taxi
00076   {    8,   32, 0,                               {DIR_NW} }, // 20 Taxi from runway to crossing
00077   {  -31,  149, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 21 Fly around waiting for a landing spot (north-east)
00078   {    1,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 22 Fly around waiting for a landing spot (north-west)
00079   {  193,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 23 Fly around waiting for a landing spot (south-west)
00080   {  225,   81, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 24 Fly around waiting for a landing spot (south)
00081   /* Helicopter */
00082   {   80,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 25 Bufferspace before helipad
00083   {   80,    0, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 26 Bufferspace before helipad
00084   {   32,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 27 Get in position for Helipad1
00085   {   48,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 28 Get in position for Helipad2
00086   {   32,    8, AMED_HELI_LOWER,                 {DIR_N} }, // 29 Land at Helipad1
00087   {   48,    8, AMED_HELI_LOWER,                 {DIR_N} }, // 30 Land at Helipad2
00088   {   32,    8, AMED_HELI_RAISE,                 {DIR_N} }, // 31 Takeoff Helipad1
00089   {   48,    8, AMED_HELI_RAISE,                 {DIR_N} }, // 32 Takeoff Helipad2
00090   {   64,   22, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 33 Go to position for Hangarentrance in air
00091   {   64,   22, AMED_HELI_LOWER,                 {DIR_N} }, // 34 Land in front of hangar
00092   {   40,    8, AMED_EXACTPOS,                   {DIR_N} }, // pre-helitakeoff helipad 1
00093   {   56,    8, AMED_EXACTPOS,                   {DIR_N} }, // pre-helitakeoff helipad 2
00094 };
00095 
00096 /* City Airport (large) 6x6 */
00097 static const AirportMovingData _airport_moving_data_town[] = {
00098   {   85,    3, AMED_EXACTPOS,                   {DIR_SE} }, // 00 In Hangar
00099   {   85,   27, 0,                               {DIR_N} }, // 01 Taxi to right outside depot
00100   {   26,   41, AMED_EXACTPOS,                   {DIR_SW} }, // 02 Terminal 1
00101   {   56,   20, AMED_EXACTPOS,                   {DIR_SE} }, // 03 Terminal 2
00102   {   38,    8, AMED_EXACTPOS,                   {DIR_SW} }, // 04 Terminal 3
00103   {   65,    6, 0,                               {DIR_N} }, // 05 Taxi to right in infront of terminal 2/3
00104   {   80,   27, 0,                               {DIR_N} }, // 06 Taxiway terminals 2-3
00105   {   44,   63, 0,                               {DIR_N} }, // 07 Taxi to Airport center
00106   {   58,   71, 0,                               {DIR_N} }, // 08 Towards takeoff
00107   {   72,   85, 0,                               {DIR_N} }, // 09 Taxi to runway (takeoff)
00108   {   89,   85, AMED_EXACTPOS,                   {DIR_NE} }, // 10 Taxi to start of runway (takeoff)
00109   {    3,   85, AMED_NOSPDCLAMP,                 {DIR_N} }, // 11 Accelerate to end of runway
00110   {  -79,   85, AMED_NOSPDCLAMP | AMED_TAKEOFF,  {DIR_N} }, // 12 Take off
00111   {  177,   87, AMED_HOLD       | AMED_SLOWTURN, {DIR_N} }, // 13 Fly to landing position in air
00112   {   89,   87, AMED_HOLD       | AMED_LAND,     {DIR_N} }, // 14 Going down for land
00113   {   20,   87, AMED_NOSPDCLAMP | AMED_BRAKE,    {DIR_N} }, // 15 Just landed, brake until end of runway
00114   {   20,   87, 0,                               {DIR_N} }, // 16 Just landed, turn around and taxi 1 square // NOT USED
00115   {   36,   71, 0,                               {DIR_N} }, // 17 Taxi from runway to crossing
00116   {  160,   87, AMED_HOLD       | AMED_SLOWTURN, {DIR_N} }, // 18 Fly around waiting for a landing spot (north-east)
00117   {  140,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 19 Final approach fix
00118   {  257,    1, AMED_HOLD       | AMED_SLOWTURN, {DIR_N} }, // 20 Fly around waiting for a landing spot (south-west)
00119   {  273,   49, AMED_HOLD       | AMED_SLOWTURN, {DIR_N} }, // 21 Fly around waiting for a landing spot (south)
00120   {   44,   63, AMED_HELI_RAISE,                 {DIR_N} }, // 22 Helicopter takeoff
00121   {   28,   74, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 23 In position above landing spot helicopter
00122   {   28,   74, AMED_HELI_LOWER,                 {DIR_N} }, // 24 Helicopter landing
00123   {  145,    1, AMED_HOLD       | AMED_SLOWTURN, {DIR_N} }, // 25 Fly around waiting for a landing spot (north-west)
00124   {  -32,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 26 Initial approach fix (north)
00125   {  300,  -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 27 Initial approach fix (south)
00126   {  140,  -48, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 28 Intermediadate Approach fix (south), IAF (west)
00127   {  -32,  120, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 29 Initial approach fix (east)
00128 };
00129 
00130 /* Metropolitan Airport (metropolitan) - 2 runways */
00131 static const AirportMovingData _airport_moving_data_metropolitan[27] = {
00132   {   85,    3, AMED_EXACTPOS,                   {DIR_SE} }, // 00 In Hangar
00133   {   85,   27, 0,                               {DIR_N} }, // 01 Taxi to right outside depot
00134   {   26,   41, AMED_EXACTPOS,                   {DIR_SW} }, // 02 Terminal 1
00135   {   56,   20, AMED_EXACTPOS,                   {DIR_SE} }, // 03 Terminal 2
00136   {   38,    8, AMED_EXACTPOS,                   {DIR_SW} }, // 04 Terminal 3
00137   {   65,    6, 0,                               {DIR_N} }, // 05 Taxi to right in infront of terminal 2/3
00138   {   70,   33, 0,                               {DIR_N} }, // 06 Taxiway terminals 2-3
00139   {   44,   58, 0,                               {DIR_N} }, // 07 Taxi to Airport center
00140   {   72,   58, 0,                               {DIR_N} }, // 08 Towards takeoff
00141   {   72,   69, 0,                               {DIR_N} }, // 09 Taxi to runway (takeoff)
00142   {   89,   69, AMED_EXACTPOS,                   {DIR_NE} }, // 10 Taxi to start of runway (takeoff)
00143   {    3,   69, AMED_NOSPDCLAMP,                 {DIR_N} }, // 11 Accelerate to end of runway
00144   {  -79,   69, AMED_NOSPDCLAMP | AMED_TAKEOFF,  {DIR_N} }, // 12 Take off
00145   {  177,   85, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 13 Fly to landing position in air
00146   {   89,   85, AMED_NOSPDCLAMP | AMED_LAND,     {DIR_N} }, // 14 Going down for land
00147   {    3,   85, AMED_NOSPDCLAMP | AMED_BRAKE,    {DIR_N} }, // 15 Just landed, brake until end of runway
00148   {   21,   85, 0,                               {DIR_N} }, // 16 Just landed, turn around and taxi 1 square
00149   {   21,   69, 0,                               {DIR_N} }, // 17 On Runway-out taxiing to In-Way
00150   {   21,   54, AMED_EXACTPOS,                   {DIR_SW} }, // 18 Taxi from runway to crossing
00151   {  -31,  193, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 19 Fly around waiting for a landing spot (north-east)
00152   {    1,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 20 Fly around waiting for a landing spot (north-west)
00153   {  257,    1, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 21 Fly around waiting for a landing spot (south-west)
00154   {  273,   49, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 22 Fly around waiting for a landing spot (south)
00155   {   44,   58, 0,                               {DIR_N} }, // 23 Helicopter takeoff spot on ground (to clear airport sooner)
00156   {   44,   63, AMED_HELI_RAISE,                 {DIR_N} }, // 24 Helicopter takeoff
00157   {   15,   54, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 25 Get in position above landing spot helicopter
00158   {   15,   54, AMED_HELI_LOWER,                 {DIR_N} }, // 26 Helicopter landing
00159 };
00160 
00161 /* International Airport (international) - 2 runways, 6 terminals, dedicated helipod */
00162 static const AirportMovingData _airport_moving_data_international[51] = {
00163   {    7,   55, AMED_EXACTPOS,                   {DIR_SE} }, // 00 In Hangar 1
00164   {  100,   21, AMED_EXACTPOS,                   {DIR_SE} }, // 01 In Hangar 2
00165   {    7,   70, 0,                               {DIR_N} }, // 02 Taxi to right outside depot
00166   {  100,   36, 0,                               {DIR_N} }, // 03 Taxi to right outside depot
00167   {   38,   70, AMED_EXACTPOS,                   {DIR_SW} }, // 04 Terminal 1
00168   {   38,   54, AMED_EXACTPOS,                   {DIR_SW} }, // 05 Terminal 2
00169   {   38,   38, AMED_EXACTPOS,                   {DIR_SW} }, // 06 Terminal 3
00170   {   70,   70, AMED_EXACTPOS,                   {DIR_NE} }, // 07 Terminal 4
00171   {   70,   54, AMED_EXACTPOS,                   {DIR_NE} }, // 08 Terminal 5
00172   {   70,   38, AMED_EXACTPOS,                   {DIR_NE} }, // 09 Terminal 6
00173   {  104,   71, AMED_EXACTPOS,                   {DIR_NE} }, // 10 Helipad 1
00174   {  104,   55, AMED_EXACTPOS,                   {DIR_NE} }, // 11 Helipad 2
00175   {   22,   87, 0,                               {DIR_N} }, // 12 Towards Terminals 4/5/6, Helipad 1/2
00176   {   60,   87, 0,                               {DIR_N} }, // 13 Towards Terminals 4/5/6, Helipad 1/2
00177   {   66,   87, 0,                               {DIR_N} }, // 14 Towards Terminals 4/5/6, Helipad 1/2
00178   {   86,   87, AMED_EXACTPOS,                   {DIR_NW} }, // 15 Towards Terminals 4/5/6, Helipad 1/2
00179   {   86,   70, 0,                               {DIR_N} }, // 16 In Front of Terminal 4 / Helipad 1
00180   {   86,   54, 0,                               {DIR_N} }, // 17 In Front of Terminal 5 / Helipad 2
00181   {   86,   38, 0,                               {DIR_N} }, // 18 In Front of Terminal 6
00182   {   86,   22, 0,                               {DIR_N} }, // 19 Towards Terminals Takeoff (Taxiway)
00183   {   66,   22, 0,                               {DIR_N} }, // 20 Towards Terminals Takeoff (Taxiway)
00184   {   60,   22, 0,                               {DIR_N} }, // 21 Towards Terminals Takeoff (Taxiway)
00185   {   38,   22, 0,                               {DIR_N} }, // 22 Towards Terminals Takeoff (Taxiway)
00186   {   22,   70, 0,                               {DIR_N} }, // 23 In Front of Terminal 1
00187   {   22,   58, 0,                               {DIR_N} }, // 24 In Front of Terminal 2
00188   {   22,   38, 0,                               {DIR_N} }, // 25 In Front of Terminal 3
00189   {   22,   22, AMED_EXACTPOS,                   {DIR_NW} }, // 26 Going for Takeoff
00190   {   22,    6, 0,                               {DIR_N} }, // 27 On Runway-out, prepare for takeoff
00191   {    3,    6, AMED_EXACTPOS,                   {DIR_SW} }, // 28 Accelerate to end of runway
00192   {   60,    6, AMED_NOSPDCLAMP,                 {DIR_N} }, // 29 Release control of runway, for smoother movement
00193   {  105,    6, AMED_NOSPDCLAMP,                 {DIR_N} }, // 30 End of runway
00194   {  190,    6, AMED_NOSPDCLAMP | AMED_TAKEOFF,  {DIR_N} }, // 31 Take off
00195   {  193,  104, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 32 Fly to landing position in air
00196   {  105,  104, AMED_NOSPDCLAMP | AMED_LAND,     {DIR_N} }, // 33 Going down for land
00197   {    3,  104, AMED_NOSPDCLAMP | AMED_BRAKE,    {DIR_N} }, // 34 Just landed, brake until end of runway
00198   {   12,  104, AMED_SLOWTURN,                   {DIR_N} }, // 35 Just landed, turn around and taxi 1 square
00199   {    7,   84, 0,                               {DIR_N} }, // 36 Taxi from runway to crossing
00200   {  -31,  209, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 37 Fly around waiting for a landing spot (north-east)
00201   {    1,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 38 Fly around waiting for a landing spot (north-west)
00202   {  273,    6, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 39 Fly around waiting for a landing spot (south-west)
00203   {  305,   81, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 40 Fly around waiting for a landing spot (south)
00204   /* Helicopter */
00205   {  128,   80, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 41 Bufferspace before helipad
00206   {  128,   80, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 42 Bufferspace before helipad
00207   {   96,   71, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 43 Get in position for Helipad1
00208   {   96,   55, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 44 Get in position for Helipad2
00209   {   96,   71, AMED_HELI_LOWER,                 {DIR_N} }, // 45 Land at Helipad1
00210   {   96,   55, AMED_HELI_LOWER,                 {DIR_N} }, // 46 Land at Helipad2
00211   {  104,   71, AMED_HELI_RAISE,                 {DIR_N} }, // 47 Takeoff Helipad1
00212   {  104,   55, AMED_HELI_RAISE,                 {DIR_N} }, // 48 Takeoff Helipad2
00213   {  104,   32, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 49 Go to position for Hangarentrance in air
00214   {  104,   32, AMED_HELI_LOWER,                 {DIR_N} }, // 50 Land in HANGAR2_AREA to go to hangar
00215 };
00216 
00217 /* Intercontinental Airport - 4 runways, 8 terminals, 2 dedicated helipads */
00218 static const AirportMovingData _airport_moving_data_intercontinental[77] = {
00219   {    7,   87, AMED_EXACTPOS,                   {DIR_SE} }, // 00 In Hangar 1
00220   {  135,   72, AMED_EXACTPOS,                   {DIR_SE} }, // 01 In Hangar 2
00221   {    7,  104, 0,                               {DIR_N} }, // 02 Taxi to right outside depot 1
00222   {  135,   88, 0,                               {DIR_N} }, // 03 Taxi to right outside depot 2
00223   {   56,  120, AMED_EXACTPOS,                   {DIR_W} }, // 04 Terminal 1
00224   {   56,  104, AMED_EXACTPOS,                   {DIR_SW} }, // 05 Terminal 2
00225   {   56,   88, AMED_EXACTPOS,                   {DIR_SW} }, // 06 Terminal 3
00226   {   56,   72, AMED_EXACTPOS,                   {DIR_SW} }, // 07 Terminal 4
00227   {   88,  120, AMED_EXACTPOS,                   {DIR_N} }, // 08 Terminal 5
00228   {   88,  104, AMED_EXACTPOS,                   {DIR_NE} }, // 09 Terminal 6
00229   {   88,   88, AMED_EXACTPOS,                   {DIR_NE} }, // 10 Terminal 7
00230   {   88,   72, AMED_EXACTPOS,                   {DIR_NE} }, // 11 Terminal 8
00231   {   88,   56, AMED_EXACTPOS,                   {DIR_SE} }, // 12 Helipad 1
00232   {   72,   56, AMED_EXACTPOS,                   {DIR_NE} }, // 13 Helipad 2
00233   {   40,  136, 0,                               {DIR_N} }, // 14 Term group 2 enter 1 a
00234   {   56,  136, 0,                               {DIR_N} }, // 15 Term group 2 enter 1 b
00235   {   88,  136, 0,                               {DIR_N} }, // 16 Term group 2 enter 2 a
00236   {  104,  136, 0,                               {DIR_N} }, // 17 Term group 2 enter 2 b
00237   {  104,  120, 0,                               {DIR_N} }, // 18 Term group 2 - opp term 5
00238   {  104,  104, 0,                               {DIR_N} }, // 19 Term group 2 - opp term 6 & exit2
00239   {  104,   88, 0,                               {DIR_N} }, // 20 Term group 2 - opp term 7 & hangar area 2
00240   {  104,   72, 0,                               {DIR_N} }, // 21 Term group 2 - opp term 8
00241   {  104,   56, 0,                               {DIR_N} }, // 22 Taxi Term group 2 exit a
00242   {  104,   40, 0,                               {DIR_N} }, // 23 Taxi Term group 2 exit b
00243   {   56,   40, 0,                               {DIR_N} }, // 24 Term group 2 exit 2a
00244   {   40,   40, 0,                               {DIR_N} }, // 25 Term group 2 exit 2b
00245   {   40,  120, 0,                               {DIR_N} }, // 26 Term group 1 - opp term 1
00246   {   40,  104, 0,                               {DIR_N} }, // 27 Term group 1 - opp term 2 & hangar area 1
00247   {   40,   88, 0,                               {DIR_N} }, // 28 Term group 1 - opp term 3
00248   {   40,   72, 0,                               {DIR_N} }, // 29 Term group 1 - opp term 4
00249   {   18,   72, 0,                               {DIR_NW} }, // 30 Outway 1
00250   {    8,   40, 0,                               {DIR_NW} }, // 31 Airport OUTWAY
00251   {    8,   24, AMED_EXACTPOS,                   {DIR_SW} }, // 32 Accelerate to end of runway
00252   {  119,   24, AMED_NOSPDCLAMP,                 {DIR_N} }, // 33 Release control of runway, for smoother movement
00253   {  117,   24, AMED_NOSPDCLAMP,                 {DIR_N} }, // 34 End of runway
00254   {  197,   24, AMED_NOSPDCLAMP | AMED_TAKEOFF,  {DIR_N} }, // 35 Take off
00255   {  254,   84, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 36 Flying to landing position in air
00256   {  117,  168, AMED_NOSPDCLAMP | AMED_LAND,     {DIR_N} }, // 37 Going down for land
00257   {    3,  168, AMED_NOSPDCLAMP | AMED_BRAKE,    {DIR_N} }, // 38 Just landed, brake until end of runway
00258   {    8,  168, 0,                               {DIR_N} }, // 39 Just landed, turn around and taxi
00259   {    8,  144, 0,                               {DIR_NW} }, // 40 Taxi from runway
00260   {    8,  128, 0,                               {DIR_NW} }, // 41 Taxi from runway
00261   {    8,  120, AMED_EXACTPOS,                   {DIR_SW} }, // 42 Airport entrance
00262   {   56,  344, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 43 Fly around waiting for a landing spot (north-east)
00263   { -200,   88, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 44 Fly around waiting for a landing spot (north-west)
00264   {   56, -168, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 45 Fly around waiting for a landing spot (south-west)
00265   {  312,   88, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 46 Fly around waiting for a landing spot (south)
00266   /* Helicopter */
00267   {   96,   40, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 47 Bufferspace before helipad
00268   {   96,   40, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 48 Bufferspace before helipad
00269   {   82,   54, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 49 Get in position for Helipad1
00270   {   64,   56, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 50 Get in position for Helipad2
00271   {   81,   55, AMED_HELI_LOWER,                 {DIR_N} }, // 51 Land at Helipad1
00272   {   64,   56, AMED_HELI_LOWER,                 {DIR_N} }, // 52 Land at Helipad2
00273   {   80,   56, AMED_HELI_RAISE,                 {DIR_N} }, // 53 Takeoff Helipad1
00274   {   64,   56, AMED_HELI_RAISE,                 {DIR_N} }, // 54 Takeoff Helipad2
00275   {  136,   96, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 55 Go to position for Hangarentrance in air
00276   {  136,   96, AMED_HELI_LOWER,                 {DIR_N} }, // 56 Land in front of hangar2
00277   {  126,  104, 0,                               {DIR_SE} }, // 57 Outway 2
00278   {  136,  136, 0,                               {DIR_NE} }, // 58 Airport OUTWAY 2
00279   {  136,  152, AMED_EXACTPOS,                   {DIR_NE} }, // 59 Accelerate to end of runway2
00280   {   16,  152, AMED_NOSPDCLAMP,                 {DIR_N} }, // 60 Release control of runway2, for smoother movement
00281   {   20,  152, AMED_NOSPDCLAMP,                 {DIR_N} }, // 61 End of runway2
00282   {  -56,  152, AMED_NOSPDCLAMP | AMED_TAKEOFF,  {DIR_N} }, // 62 Take off2
00283   {   24,    8, AMED_NOSPDCLAMP | AMED_LAND,     {DIR_N} }, // 63 Going down for land2
00284   {  136,    8, AMED_NOSPDCLAMP | AMED_BRAKE,    {DIR_N} }, // 64 Just landed, brake until end of runway2in
00285   {  136,    8, 0,                               {DIR_N} }, // 65 Just landed, turn around and taxi
00286   {  136,   24, 0,                               {DIR_SE} }, // 66 Taxi from runway 2in
00287   {  136,   40, 0,                               {DIR_SE} }, // 67 Taxi from runway 2in
00288   {  136,   56, AMED_EXACTPOS,                   {DIR_NE} }, // 68 Airport entrance2
00289   {  -56,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 69 Fly to landing position in air2
00290   {   88,   40, 0,                               {DIR_N} }, // 70 Taxi Term group 2 exit - opp heli1
00291   {   72,   40, 0,                               {DIR_N} }, // 71 Taxi Term group 2 exit - opp heli2
00292   {   88,   57, AMED_EXACTPOS,                   {DIR_SE} }, // 72 pre-helitakeoff helipad 1
00293   {   71,   56, AMED_EXACTPOS,                   {DIR_NE} }, // 73 pre-helitakeoff helipad 2
00294   {    8,  120, AMED_HELI_RAISE,                 {DIR_N} }, // 74 Helitakeoff outside depot 1
00295   {  136,  104, AMED_HELI_RAISE,                 {DIR_N} }, // 75 Helitakeoff outside depot 2
00296   {  197,  168, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 76 Fly to landing position in air1
00297 };
00298 
00299 
00300 /* Heliport (heliport) */
00301 static const AirportMovingData _airport_moving_data_heliport[9] = {
00302   {    5,    9, AMED_EXACTPOS,                   {DIR_NE} }, // 0 - At heliport terminal
00303   {    2,    9, AMED_HELI_RAISE,                 {DIR_N} }, // 1 - Take off (play sound)
00304   {   -3,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 2 - In position above landing spot helicopter
00305   {   -3,    9, AMED_HELI_LOWER,                 {DIR_N} }, // 3 - Land
00306   {    2,    9, 0,                               {DIR_N} }, // 4 - Goto terminal on ground
00307   {  -31,   59, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 5 - Circle #1 (north-east)
00308   {  -31,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 6 - Circle #2 (north-west)
00309   {   49,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 7 - Circle #3 (south-west)
00310   {   70,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 8 - Circle #4 (south)
00311 };
00312 
00313 /* HeliDepot 2x2 (heliport) */
00314 static const AirportMovingData _airport_moving_data_helidepot[18] = {
00315   {   24,    4, AMED_EXACTPOS,                   {DIR_NE} }, // 0 - At depot
00316   {   24,   28, 0,                               {DIR_N} }, // 1 Taxi to right outside depot
00317   {    5,   38, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 2 Flying
00318   {  -15,  -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 3 - Circle #1 (north-east)
00319   {  -15,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 4 - Circle #2 (north-west)
00320   {   49,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 5 - Circle #3 (south-west)
00321   {   49,  -15, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 6 - Circle #4 (south-east)
00322   {    8,   32, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_NW} }, // 7 - PreHelipad
00323   {    8,   32, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_NW} }, // 8 - Helipad
00324   {    8,   16, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_NW} }, // 9 - Land
00325   {    8,   16, AMED_HELI_LOWER,                 {DIR_NW} }, // 10 - Land
00326   {    8,   24, AMED_HELI_RAISE,                 {DIR_N} }, // 11 - Take off (play sound)
00327   {   32,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_NW} }, // 12 Air to above hangar area
00328   {   32,   24, AMED_HELI_LOWER,                 {DIR_NW} }, // 13 Taxi to right outside depot
00329   {    8,   24, AMED_EXACTPOS,                   {DIR_NW} }, // 14 - on helipad1
00330   {   24,   28, AMED_HELI_RAISE,                 {DIR_N} }, // 15 Takeoff right outside depot
00331   {    8,   24, AMED_HELI_RAISE,                 {DIR_SW} }, // 16 - Take off (play sound)
00332   {    8,   24, AMED_SLOWTURN | AMED_EXACTPOS,   {DIR_E} }, // 17 - turn on helipad1 for takeoff
00333 };
00334 
00335 /* HeliDepot 2x2 (heliport) */
00336 static const AirportMovingData _airport_moving_data_helistation[33] = {
00337   {    8,    3, AMED_EXACTPOS,                   {DIR_SE} }, // 00 In Hangar2
00338   {    8,   22, 0,                               {DIR_N} }, // 01 outside hangar 2
00339   {  116,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 02 Fly to landing position in air
00340   {   14,   22, AMED_HELI_RAISE,                 {DIR_N} }, // 03 Helitakeoff outside hangar1(play sound)
00341   {   24,   22, 0,                               {DIR_N} }, // 04 taxiing
00342   {   40,   22, 0,                               {DIR_N} }, // 05 taxiing
00343   {   40,    8, AMED_EXACTPOS,                   {DIR_NE} }, // 06 Helipad 1
00344   {   56,    8, AMED_EXACTPOS,                   {DIR_NE} }, // 07 Helipad 2
00345   {   56,   24, AMED_EXACTPOS,                   {DIR_NE} }, // 08 Helipad 3
00346   {   40,    8, AMED_EXACTPOS,                   {DIR_N} }, // 09 pre-helitakeoff helipad 1
00347   {   56,    8, AMED_EXACTPOS,                   {DIR_N} }, // 10 pre-helitakeoff helipad 2
00348   {   56,   24, AMED_EXACTPOS,                   {DIR_N} }, // 11 pre-helitakeoff helipad 3
00349   {   32,    8, AMED_HELI_RAISE,                 {DIR_N} }, // 12 Takeoff Helipad1
00350   {   48,    8, AMED_HELI_RAISE,                 {DIR_N} }, // 13 Takeoff Helipad2
00351   {   48,   24, AMED_HELI_RAISE,                 {DIR_N} }, // 14 Takeoff Helipad3
00352   {   84,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 15 Bufferspace before helipad
00353   {   68,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 16 Bufferspace before helipad
00354   {   32,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 17 Get in position for Helipad1
00355   {   48,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 18 Get in position for Helipad2
00356   {   48,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_NE} }, // 19 Get in position for Helipad3
00357   {   40,    8, AMED_HELI_LOWER,                 {DIR_N} }, // 20 Land at Helipad1
00358   {   48,    8, AMED_HELI_LOWER,                 {DIR_N} }, // 21 Land at Helipad2
00359   {   48,   24, AMED_HELI_LOWER,                 {DIR_N} }, // 22 Land at Helipad3
00360   {    0,   22, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 23 Go to position for Hangarentrance in air
00361   {    0,   22, AMED_HELI_LOWER,                 {DIR_N} }, // 24 Land in front of hangar
00362   {  148,   -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 25 Fly around waiting for a landing spot (south-east)
00363   {  148,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 26 Fly around waiting for a landing spot (south-west)
00364   {  132,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 27 Fly around waiting for a landing spot (south-west)
00365   {  100,   24, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 28 Fly around waiting for a landing spot (north-east)
00366   {   84,    8, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 29 Fly around waiting for a landing spot (south-east)
00367   {   84,   -8, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 30 Fly around waiting for a landing spot (south-west)
00368   {  100,  -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 31 Fly around waiting for a landing spot (north-west)
00369   {  132,  -24, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 32 Fly around waiting for a landing spot (north-east)
00370 };
00371 
00372 /* Oilrig */
00373 static const AirportMovingData _airport_moving_data_oilrig[9] = {
00374   {   31,    9, AMED_EXACTPOS,                   {DIR_NE} }, // 0 - At oilrig terminal
00375   {   28,    9, AMED_HELI_RAISE,                 {DIR_N} }, // 1 - Take off (play sound)
00376   {   23,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 2 - In position above landing spot helicopter
00377   {   23,    9, AMED_HELI_LOWER,                 {DIR_N} }, // 3 - Land
00378   {   28,    9, 0,                               {DIR_N} }, // 4 - Goto terminal on ground
00379   {  -31,   69, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 5 - circle #1 (north-east)
00380   {  -31,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 6 - circle #2 (north-west)
00381   {   69,  -49, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 7 - circle #3 (south-west)
00382   {   69,    9, AMED_NOSPDCLAMP | AMED_SLOWTURN, {DIR_N} }, // 8 - circle #4 (south)
00383 };
00384 
00387 static const byte _airport_entries_dummy[] = {0, 1, 2, 3};
00388 static const AirportFTAbuildup _airport_fta_dummy[] = {
00389   { 0, 0, 0, 3},
00390   { 1, 0, 0, 0},
00391   { 2, 0, 0, 1},
00392   { 3, 0, 0, 2},
00393   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00394 };
00395 
00396 /* First element of terminals array tells us how many depots there are (to know size of array)
00397  * this may be changed later when airports are moved to external file  */
00398 static const TileIndexDiffC _airport_depots_country[] = {{3, 0}};
00399 static const byte _airport_terminal_country[] = {1, 2};
00400 static const byte _airport_entries_country[] = {16, 16, 16, 16};
00401 static const AirportFTAbuildup _airport_fta_country[] = {
00402   {  0, HANGAR, NOTHING_block, 1 },
00403   {  1, 255, AIRPORT_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM1, TERM1_block, 2 }, { 1, TERM2, 0, 4 }, { 1, HELITAKEOFF, 0, 19 }, { 1, 0, 0, 6 },
00404   {  2, TERM1, TERM1_block, 1 },
00405   {  3, TERM2, TERM2_block, 5 },
00406   {  4, 255, AIRPORT_BUSY_block, 0 }, { 4, TERM2, 0, 5 }, { 4, HANGAR, 0, 1 }, { 4, TAKEOFF, 0, 6 }, { 4, HELITAKEOFF, 0, 1 },
00407   {  5, 255, AIRPORT_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, 0, 0, 4 },
00408   {  6, 0, AIRPORT_BUSY_block, 7 },
00409   /* takeoff */
00410   {  7, TAKEOFF, AIRPORT_BUSY_block, 8 },
00411   {  8, STARTTAKEOFF, NOTHING_block, 9 },
00412   {  9, ENDTAKEOFF, NOTHING_block, 0 },
00413   /* landing */
00414   { 10, FLYING, NOTHING_block, 15 }, { 10, LANDING, 0, 11 }, { 10, HELILANDING, 0, 20 },
00415   { 11, LANDING, AIRPORT_BUSY_block, 12 },
00416   { 12, 0, AIRPORT_BUSY_block, 13 },
00417   { 13, ENDLANDING, AIRPORT_BUSY_block, 14 }, { 13, TERM2, 0, 5 }, { 13, 0, 0, 14 },
00418   { 14, 0, AIRPORT_BUSY_block, 1 },
00419   /* In air */
00420   { 15, 0, NOTHING_block, 16 },
00421   { 16, 0, NOTHING_block, 17 },
00422   { 17, 0, NOTHING_block, 18 },
00423   { 18, 0, NOTHING_block, 10 },
00424   { 19, HELITAKEOFF, NOTHING_block, 0 },
00425   { 20, HELILANDING, AIRPORT_BUSY_block, 21 },
00426   { 21, HELIENDLANDING, AIRPORT_BUSY_block, 1 },
00427   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00428 };
00429 
00430 static const TileIndexDiffC _airport_depots_commuter[] = { { 4, 0 } };
00431 static const byte _airport_terminal_commuter[] = { 1, 3 };
00432 static const byte _airport_helipad_commuter[] = { 1, 2 };
00433 static const byte _airport_entries_commuter[] = {21, 21, 21, 21};
00434 static const AirportFTAbuildup _airport_fta_commuter[] = {
00435   {  0, HANGAR, NOTHING_block, 1 }, { 0, HELITAKEOFF, HELIPAD2_block, 1 }, { 0, 0, 0, 1 },
00436   {  1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TAKEOFF, 0, 11 }, { 1, TERM1, TAXIWAY_BUSY_block, 10 }, { 1, TERM2, TAXIWAY_BUSY_block, 10 }, { 1, TERM3, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD1, TAXIWAY_BUSY_block, 10 }, { 1, HELIPAD2, TAXIWAY_BUSY_block, 10 }, { 1, HELITAKEOFF, TAXIWAY_BUSY_block, 10 }, { 1, 0, 0, 0 },
00437   {  2, 255, AIRPORT_ENTRANCE_block, 2 }, { 2, HANGAR, 0, 8 }, { 2, TERM1, 0, 8 }, { 2, TERM2, 0, 8 }, { 2, TERM3, 0, 8 }, { 2, HELIPAD1, 0, 8 }, { 2, HELIPAD2, 0, 8 }, { 2, HELITAKEOFF, 0, 8 }, { 2, 0, 0, 2 },
00438   {  3, TERM1, TERM1_block, 8 }, { 3, HANGAR, 0, 8 }, { 3, TAKEOFF, 0, 8 }, { 3, 0, 0, 3 },
00439   {  4, TERM2, TERM2_block, 9 }, { 4, HANGAR, 0, 9 }, { 4, TAKEOFF, 0, 9 }, { 4, 0, 0, 4 },
00440   {  5, TERM3, TERM3_block, 10 }, { 5, HANGAR, 0, 10 }, { 5, TAKEOFF, 0, 10 }, { 5, 0, 0, 5 },
00441   {  6, HELIPAD1, HELIPAD1_block, 6 }, { 6, HANGAR, TAXIWAY_BUSY_block, 9 }, { 6, HELITAKEOFF, 0, 35 },
00442   {  7, HELIPAD2, HELIPAD2_block, 7 }, { 7, HANGAR, TAXIWAY_BUSY_block, 10 }, { 7, HELITAKEOFF, 0, 36 },
00443   {  8, 255, TAXIWAY_BUSY_block, 8 }, { 8, TAKEOFF, TAXIWAY_BUSY_block, 9 }, { 8, HANGAR, TAXIWAY_BUSY_block, 9 }, { 8, TERM1, TERM1_block, 3 }, { 8, 0, TAXIWAY_BUSY_block, 9 },
00444   {  9, 255, TAXIWAY_BUSY_block, 9 }, { 9, TAKEOFF, TAXIWAY_BUSY_block, 10 }, { 9, HANGAR, TAXIWAY_BUSY_block, 10 }, { 9, TERM2, TERM2_block, 4 }, { 9, HELIPAD1, HELIPAD1_block, 6 }, { 9, HELITAKEOFF, HELIPAD1_block, 6 }, { 9, TERM1, TAXIWAY_BUSY_block, 8 }, { 9, 0, TAXIWAY_BUSY_block, 10 },
00445   { 10, 255, TAXIWAY_BUSY_block, 10 }, { 10, TERM3, TERM3_block, 5 }, { 10, HELIPAD1, 0, 9 }, { 10, HELIPAD2, HELIPAD2_block, 7 }, { 10, HELITAKEOFF, HELIPAD2_block, 7 }, { 10, TAKEOFF, TAXIWAY_BUSY_block, 1 }, { 10, HANGAR, TAXIWAY_BUSY_block, 1 }, { 10, 0, TAXIWAY_BUSY_block, 9 },
00446   { 11, 0, OUT_WAY_block, 12 },
00447   /* takeoff */
00448   { 12, TAKEOFF, RUNWAY_IN_OUT_block, 13 },
00449   { 13, 0, RUNWAY_IN_OUT_block, 14 },
00450   { 14, STARTTAKEOFF, RUNWAY_IN_OUT_block, 15 },
00451   { 15, ENDTAKEOFF, NOTHING_block, 0 },
00452   /* landing */
00453   { 16, FLYING, NOTHING_block, 21 }, { 16, LANDING, IN_WAY_block, 17 }, { 16, HELILANDING, 0, 25 },
00454   { 17, LANDING, RUNWAY_IN_OUT_block, 18 },
00455   { 18, 0, RUNWAY_IN_OUT_block, 19 },
00456   { 19, 0, RUNWAY_IN_OUT_block, 20 },
00457   { 20, ENDLANDING, IN_WAY_block, 2 },
00458   /* In Air */
00459   { 21, 0, NOTHING_block, 22 },
00460   { 22, 0, NOTHING_block, 23 },
00461   { 23, 0, NOTHING_block, 24 },
00462   { 24, 0, NOTHING_block, 16 },
00463   /* Helicopter -- stay in air in special place as a buffer to choose from helipads */
00464   { 25, HELILANDING, PRE_HELIPAD_block, 26 },
00465   { 26, HELIENDLANDING, PRE_HELIPAD_block, 26 }, { 26, HELIPAD1, 0, 27 }, { 26, HELIPAD2, 0, 28 }, { 26, HANGAR, 0, 33 },
00466   { 27, 0, NOTHING_block, 29 }, // helipad1 approach
00467   { 28, 0, NOTHING_block, 30 },
00468   /* landing */
00469   { 29, 255, NOTHING_block, 0 }, { 29, HELIPAD1, HELIPAD1_block, 6 },
00470   { 30, 255, NOTHING_block, 0 }, { 30, HELIPAD2, HELIPAD2_block, 7 },
00471   /* Helicopter -- takeoff */
00472   { 31, HELITAKEOFF, NOTHING_block, 0 },
00473   { 32, HELITAKEOFF, NOTHING_block, 0 },
00474   { 33, 0, TAXIWAY_BUSY_block, 34 }, // need to go to hangar when waiting in air
00475   { 34, 0, TAXIWAY_BUSY_block, 1 },
00476   { 35, 0, HELIPAD1_block, 31 },
00477   { 36, 0, HELIPAD2_block, 32 },
00478   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00479 };
00480 
00481 static const TileIndexDiffC _airport_depots_city[] = { { 5, 0 } };
00482 static const byte _airport_terminal_city[] = { 1, 3 };
00483 static const byte _airport_entries_city[] = {26, 29, 27, 28};
00484 static const AirportFTAbuildup _airport_fta_city[] = {
00485   {  0, HANGAR, NOTHING_block, 1 }, { 0, TAKEOFF, OUT_WAY_block, 1 }, { 0, 0, 0, 1 },
00486   {  1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM2, 0, 6 }, { 1, TERM3, 0, 6 }, { 1, 0, 0, 7 }, // for all else, go to 7
00487   {  2, TERM1, TERM1_block, 7 }, { 2, TAKEOFF, OUT_WAY_block, 7 }, { 2, 0, 0, 7 },
00488   {  3, TERM2, TERM2_block, 5 }, { 3, TAKEOFF, OUT_WAY_block, 5 }, { 3, 0, 0, 5 },
00489   {  4, TERM3, TERM3_block, 5 }, { 4, TAKEOFF, OUT_WAY_block, 5 }, { 4, 0, 0, 5 },
00490   {  5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 },
00491   {  6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, 0, 5 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 },
00492   {  7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, OUT_WAY_block, 8 }, { 7, HELITAKEOFF, 0, 22 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 },
00493   {  8, 0, OUT_WAY_block, 9 },
00494   {  9, 0, RUNWAY_IN_OUT_block, 10 },
00495   /* takeoff */
00496   { 10, TAKEOFF, RUNWAY_IN_OUT_block, 11 },
00497   { 11, STARTTAKEOFF, NOTHING_block, 12 },
00498   { 12, ENDTAKEOFF, NOTHING_block, 0 },
00499   /* landing */
00500   { 13, FLYING, NOTHING_block, 18 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 23 },
00501   { 14, LANDING, RUNWAY_IN_OUT_block, 15 },
00502   { 15, 0, RUNWAY_IN_OUT_block, 17 },
00503   { 16, 0, RUNWAY_IN_OUT_block, 17 }, // not used, left for compatibility
00504   { 17, ENDLANDING, IN_WAY_block, 7 },
00505   /* In Air */
00506   { 18, 0, NOTHING_block, 25 },
00507   { 19, 0, NOTHING_block, 20 },
00508   { 20, 0, NOTHING_block, 21 },
00509   { 21, 0, NOTHING_block, 13 },
00510   /* helicopter */
00511   { 22, HELITAKEOFF, NOTHING_block, 0 },
00512   { 23, HELILANDING, IN_WAY_block, 24 },
00513   { 24, HELIENDLANDING, IN_WAY_block, 17 },
00514   { 25, 0, NOTHING_block, 20},
00515   { 26, 0, NOTHING_block, 19},
00516   { 27, 0, NOTHING_block, 28},
00517   { 28, 0, NOTHING_block, 19},
00518   { 29, 0, NOTHING_block, 26},
00519   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00520 };
00521 
00522 static const TileIndexDiffC _airport_depots_metropolitan[] = { { 5, 0 } };
00523 static const byte _airport_terminal_metropolitan[] = { 1, 3 };
00524 static const byte _airport_entries_metropolitan[] = {20, 20, 20, 20};
00525 static const AirportFTAbuildup _airport_fta_metropolitan[] = {
00526   {  0, HANGAR, NOTHING_block, 1 },
00527   {  1, 255, TAXIWAY_BUSY_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, TERM2, 0, 6 }, { 1, TERM3, 0, 6 }, { 1, 0, 0, 7 }, // for all else, go to 7
00528   {  2, TERM1, TERM1_block, 7 },
00529   {  3, TERM2, TERM2_block, 5 },
00530   {  4, TERM3, TERM3_block, 5 },
00531   {  5, 255, TAXIWAY_BUSY_block, 0 }, { 5, TERM2, TERM2_block, 3 }, { 5, TERM3, TERM3_block, 4 }, { 5, 0, 0, 6 },
00532   {  6, 255, TAXIWAY_BUSY_block, 0 }, { 6, TERM2, 0, 5 }, { 6, TERM3, 0, 5 }, { 6, HANGAR, 0, 1 }, { 6, 0, 0, 7 },
00533   {  7, 255, TAXIWAY_BUSY_block, 0 }, { 7, TERM1, TERM1_block, 2 }, { 7, TAKEOFF, 0, 8 }, { 7, HELITAKEOFF, 0, 23 }, { 7, HANGAR, 0, 1 }, { 7, 0, 0, 6 },
00534   {  8, 0, OUT_WAY_block, 9 },
00535   {  9, 0, RUNWAY_OUT_block, 10 },
00536   /* takeoff */
00537   { 10, TAKEOFF, RUNWAY_OUT_block, 11 },
00538   { 11, STARTTAKEOFF, NOTHING_block, 12 },
00539   { 12, ENDTAKEOFF, NOTHING_block, 0 },
00540   /* landing */
00541   { 13, FLYING, NOTHING_block, 19 }, { 13, LANDING, 0, 14 }, { 13, HELILANDING, 0, 25 },
00542   { 14, LANDING, RUNWAY_IN_block, 15 },
00543   { 15, 0, RUNWAY_IN_block, 16 },
00544   { 16, 255, RUNWAY_IN_block, 0 }, { 16, ENDLANDING, IN_WAY_block, 17 },
00545   { 17, 255, RUNWAY_OUT_block, 0 }, { 17, ENDLANDING, IN_WAY_block, 18 },
00546   { 18, ENDLANDING, IN_WAY_block, 7 },
00547   /* In Air */
00548   { 19, 0, NOTHING_block, 20 },
00549   { 20, 0, NOTHING_block, 21 },
00550   { 21, 0, NOTHING_block, 22 },
00551   { 22, 0, NOTHING_block, 13 },
00552   /* helicopter */
00553   { 23, 0, NOTHING_block, 24 },
00554   { 24, HELITAKEOFF, NOTHING_block, 0 },
00555   { 25, HELILANDING, IN_WAY_block, 26 },
00556   { 26, HELIENDLANDING, IN_WAY_block, 18 },
00557   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00558 };
00559 
00560 static const TileIndexDiffC _airport_depots_international[] = { { 0, 3 }, { 6, 1 } };
00561 static const byte _airport_terminal_international[] = { 2, 3, 3 };
00562 static const byte _airport_helipad_international[] = { 1, 2 };
00563 static const byte _airport_entries_international[] = { 37, 37, 37, 37 };
00564 static const AirportFTAbuildup _airport_fta_international[] = {
00565   {  0, HANGAR, NOTHING_block, 2 }, { 0, 255, TERM_GROUP1_block, 0 }, { 0, 255, TERM_GROUP2_ENTER1_block, 1 }, { 0, HELITAKEOFF, HELIPAD1_block, 2 }, { 0, 0, 0, 2 },
00566   {  1, HANGAR, NOTHING_block, 3 }, { 1, 255, HANGAR2_AREA_block, 1 }, { 1, HELITAKEOFF, HELIPAD2_block, 3 }, { 1, 0, 0, 3 },
00567   {  2, 255, AIRPORT_ENTRANCE_block, 0 }, { 2, HANGAR, 0, 0 }, { 2, TERM4, 0, 12 }, { 2, TERM5, 0, 12 }, { 2, TERM6, 0, 12 }, { 2, HELIPAD1, 0, 12 }, { 2, HELIPAD2, 0, 12 }, { 2, HELITAKEOFF, 0, 12 }, { 2, 0, 0, 23 },
00568   {  3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, 0, 0, 18 },
00569   {  4, TERM1, TERM1_block, 23 }, { 4, HANGAR, AIRPORT_ENTRANCE_block, 23 }, { 4, 0, 0, 23 },
00570   {  5, TERM2, TERM2_block, 24 }, { 5, HANGAR, AIRPORT_ENTRANCE_block, 24 }, { 5, 0, 0, 24 },
00571   {  6, TERM3, TERM3_block, 25 }, { 6, HANGAR, AIRPORT_ENTRANCE_block, 25 }, { 6, 0, 0, 25 },
00572   {  7, TERM4, TERM4_block, 16 }, { 7, HANGAR, HANGAR2_AREA_block, 16 }, { 7, 0, 0, 16 },
00573   {  8, TERM5, TERM5_block, 17 }, { 8, HANGAR, HANGAR2_AREA_block, 17 }, { 8, 0, 0, 17 },
00574   {  9, TERM6, TERM6_block, 18 }, { 9, HANGAR, HANGAR2_AREA_block, 18 }, { 9, 0, 0, 18 },
00575   { 10, HELIPAD1, HELIPAD1_block, 10 }, { 10, HANGAR, HANGAR2_AREA_block, 16 }, { 10, HELITAKEOFF, 0, 47 },
00576   { 11, HELIPAD2, HELIPAD2_block, 11 }, { 11, HANGAR, HANGAR2_AREA_block, 17 }, { 11, HELITAKEOFF, 0, 48 },
00577   { 12, 0, TERM_GROUP2_ENTER1_block, 13 },
00578   { 13, 0, TERM_GROUP2_ENTER1_block, 14 },
00579   { 14, 0, TERM_GROUP2_ENTER2_block, 15 },
00580   { 15, 0, TERM_GROUP2_ENTER2_block, 16 },
00581   { 16, 255, TERM_GROUP2_block, 0 }, { 16, TERM4, TERM4_block, 7 }, { 16, HELIPAD1, HELIPAD1_block, 10 }, { 16, HELITAKEOFF, HELIPAD1_block, 10 }, { 16, 0, 0, 17 },
00582   { 17, 255, TERM_GROUP2_block, 0 }, { 17, TERM5, TERM5_block, 8 }, { 17, TERM4, 0, 16 }, { 17, HELIPAD1, 0, 16 }, { 17, HELIPAD2, HELIPAD2_block, 11 }, { 17, HELITAKEOFF, HELIPAD2_block, 11 }, { 17, 0, 0, 18 },
00583   { 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM6, TERM6_block, 9 }, { 18, TAKEOFF, 0, 19 }, { 18, HANGAR, HANGAR2_AREA_block, 3 }, { 18, 0, 0, 17 },
00584   { 19, 0, TERM_GROUP2_EXIT1_block, 20 },
00585   { 20, 0, TERM_GROUP2_EXIT1_block, 21 },
00586   { 21, 0, TERM_GROUP2_EXIT2_block, 22 },
00587   { 22, 0, TERM_GROUP2_EXIT2_block, 26 },
00588   { 23, 255, TERM_GROUP1_block, 0 }, { 23, TERM1, TERM1_block, 4 }, { 23, HANGAR, AIRPORT_ENTRANCE_block, 2 }, { 23, 0, 0, 24 },
00589   { 24, 255, TERM_GROUP1_block, 0 }, { 24, TERM2, TERM2_block, 5 }, { 24, TERM1, 0, 23 }, { 24, HANGAR, 0, 23 }, { 24, 0, 0, 25 },
00590   { 25, 255, TERM_GROUP1_block, 0 }, { 25, TERM3, TERM3_block, 6 }, { 25, TAKEOFF, 0, 26 }, { 25, 0, 0, 24 },
00591   { 26, 255, TAXIWAY_BUSY_block, 0 }, { 26, TAKEOFF, 0, 27 }, { 26, 0, 0, 25 },
00592   { 27, 0, OUT_WAY_block, 28 },
00593   /* takeoff */
00594   { 28, TAKEOFF, OUT_WAY_block, 29 },
00595   { 29, 0, RUNWAY_OUT_block, 30 },
00596   { 30, STARTTAKEOFF, NOTHING_block, 31 },
00597   { 31, ENDTAKEOFF, NOTHING_block, 0 },
00598   /* landing */
00599   { 32, FLYING, NOTHING_block, 37 }, { 32, LANDING, 0, 33 }, { 32, HELILANDING, 0, 41 },
00600   { 33, LANDING, RUNWAY_IN_block, 34 },
00601   { 34, 0, RUNWAY_IN_block, 35 },
00602   { 35, 0, RUNWAY_IN_block, 36 },
00603   { 36, ENDLANDING, IN_WAY_block, 36 }, { 36, 255, TERM_GROUP1_block, 0 }, { 36, 255, TERM_GROUP2_ENTER1_block, 1 }, { 36, TERM4, 0, 12 }, { 36, TERM5, 0, 12 }, { 36, TERM6, 0, 12 }, { 36, 0, 0, 2 },
00604   /* In Air */
00605   { 37, 0, NOTHING_block, 38 },
00606   { 38, 0, NOTHING_block, 39 },
00607   { 39, 0, NOTHING_block, 40 },
00608   { 40, 0, NOTHING_block, 32 },
00609   /* Helicopter -- stay in air in special place as a buffer to choose from helipads */
00610   { 41, HELILANDING, PRE_HELIPAD_block, 42 },
00611   { 42, HELIENDLANDING, PRE_HELIPAD_block, 42 }, { 42, HELIPAD1, 0, 43 }, { 42, HELIPAD2, 0, 44 }, { 42, HANGAR, 0, 49 },
00612   { 43, 0, NOTHING_block, 45 },
00613   { 44, 0, NOTHING_block, 46 },
00614   /* landing */
00615   { 45, 255, NOTHING_block, 0 }, { 45, HELIPAD1, HELIPAD1_block, 10 },
00616   { 46, 255, NOTHING_block, 0 }, { 46, HELIPAD2, HELIPAD2_block, 11 },
00617   /* Helicopter -- takeoff */
00618   { 47, HELITAKEOFF, NOTHING_block, 0 },
00619   { 48, HELITAKEOFF, NOTHING_block, 0 },
00620   { 49, 0, HANGAR2_AREA_block, 50 }, // need to go to hangar when waiting in air
00621   { 50, 0, HANGAR2_AREA_block, 3 },
00622   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00623 };
00624 
00625 /* intercontinental */
00626 static const TileIndexDiffC _airport_depots_intercontinental[] = { { 0, 5 }, { 8, 4 } };
00627 static const byte _airport_terminal_intercontinental[] = { 2, 4, 4 };
00628 static const byte _airport_helipad_intercontinental[] = { 1, 2 };
00629 static const byte _airport_entries_intercontinental[] = { 43, 43, 43, 43 };
00630 static const AirportFTAbuildup _airport_fta_intercontinental[] = {
00631   {  0, HANGAR, NOTHING_block, 2 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 0 }, { 0, 255, HANGAR1_AREA_block | TERM_GROUP1_block, 1 }, { 0, TAKEOFF, HANGAR1_AREA_block | TERM_GROUP1_block, 2 }, { 0, 0, 0, 2 },
00632   {  1, HANGAR, NOTHING_block, 3 }, { 1, 255, HANGAR2_AREA_block, 1 }, { 1, 255, HANGAR2_AREA_block, 0 }, { 1, 0, 0, 3 },
00633   {  2, 255, HANGAR1_AREA_block, 0 }, { 2, 255, TERM_GROUP1_block, 0 }, { 2, 255, TERM_GROUP1_block, 1 }, { 2, HANGAR, 0, 0 }, { 2, TAKEOFF, TERM_GROUP1_block, 27 }, { 2, TERM5, 0, 26 }, { 2, TERM6, 0, 26 }, { 2, TERM7, 0, 26 }, { 2, TERM8, 0, 26 }, { 2, HELIPAD1, 0, 26 }, { 2, HELIPAD2, 0, 26 }, { 2, HELITAKEOFF, 0, 74 }, { 2, 0, 0, 27 },
00634   {  3, 255, HANGAR2_AREA_block, 0 }, { 3, HANGAR, 0, 1 }, { 3, HELITAKEOFF, 0, 75 }, { 3, 0, 0, 20 },
00635   {  4, TERM1, TERM1_block, 26 }, { 4, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 26 }, { 4, 0, 0, 26 },
00636   {  5, TERM2, TERM2_block, 27 }, { 5, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 27 }, { 5, 0, 0, 27 },
00637   {  6, TERM3, TERM3_block, 28 }, { 6, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 28 }, { 6, 0, 0, 28 },
00638   {  7, TERM4, TERM4_block, 29 }, { 7, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 7, 0, 0, 29 },
00639   {  8, TERM5, TERM5_block, 18 }, { 8, HANGAR, HANGAR2_AREA_block, 18 }, { 8, 0, 0, 18 },
00640   {  9, TERM6, TERM6_block, 19 }, { 9, HANGAR, HANGAR2_AREA_block, 19 }, { 9, 0, 0, 19 },
00641   { 10, TERM7, TERM7_block, 20 }, { 10, HANGAR, HANGAR2_AREA_block, 20 }, { 10, 0, 0, 20 },
00642   { 11, TERM8, TERM8_block, 21 }, { 11, HANGAR, HANGAR2_AREA_block, 21 }, { 11, 0, 0, 21 },
00643   { 12, HELIPAD1, HELIPAD1_block, 12 }, { 12, HANGAR, 0, 70 }, { 12, HELITAKEOFF, 0, 72 },
00644   { 13, HELIPAD2, HELIPAD2_block, 13 }, { 13, HANGAR, 0, 71 }, { 13, HELITAKEOFF, 0, 73 },
00645   { 14, 0, TERM_GROUP2_ENTER1_block, 15 },
00646   { 15, 0, TERM_GROUP2_ENTER1_block, 16 },
00647   { 16, 0, TERM_GROUP2_ENTER2_block, 17 },
00648   { 17, 0, TERM_GROUP2_ENTER2_block, 18 },
00649   { 18, 255, TERM_GROUP2_block, 0 }, { 18, TERM5, TERM5_block, 8 }, { 18, TAKEOFF, 0, 19 }, { 18, HELITAKEOFF, HELIPAD1_block, 19 }, { 18, 0, TERM_GROUP2_EXIT1_block, 19 },
00650   { 19, 255, TERM_GROUP2_block, 0 }, { 19, TERM6, TERM6_block, 9 }, { 19, TERM5, 0, 18 }, { 19, TAKEOFF, 0, 57 }, { 19, HELITAKEOFF, HELIPAD1_block, 20 }, { 19, 0, TERM_GROUP2_EXIT1_block, 20 }, // add exit to runway out 2
00651   { 20, 255, TERM_GROUP2_block, 0 }, { 20, TERM7, TERM7_block, 10 }, { 20, TERM5, 0, 19 }, { 20, TERM6, 0, 19 }, { 20, HANGAR, HANGAR2_AREA_block, 3 }, { 20, TAKEOFF, 0, 19 }, { 20, 0, TERM_GROUP2_EXIT1_block, 21 },
00652   { 21, 255, TERM_GROUP2_block, 0 }, { 21, TERM8, TERM8_block, 11 }, { 21, HANGAR, HANGAR2_AREA_block, 20 }, { 21, TERM5, 0, 20 }, { 21, TERM6, 0, 20 }, { 21, TERM7, 0, 20 }, { 21, TAKEOFF, 0, 20 }, { 21, 0, TERM_GROUP2_EXIT1_block, 22 },
00653   { 22, 255, TERM_GROUP2_block, 0 }, { 22, HANGAR, 0, 21 }, { 22, TERM5, 0, 21 }, { 22, TERM6, 0, 21 }, { 22, TERM7, 0, 21 }, { 22, TERM8, 0, 21 }, { 22, TAKEOFF, 0, 21 }, { 22, 0, 0, 23 },
00654   { 23, 0, TERM_GROUP2_EXIT1_block, 70 },
00655   { 24, 0, TERM_GROUP2_EXIT2_block, 25 },
00656   { 25, 255, TERM_GROUP2_EXIT2_block, 0 }, { 25, HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 25, 0, 0, 29 },
00657   { 26, 255, TERM_GROUP1_block, 0 }, { 26, TERM1, TERM1_block, 4 }, { 26, HANGAR, HANGAR1_AREA_block, 27 }, { 26, TERM5, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM6, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM7, TERM_GROUP2_ENTER1_block, 14 }, { 26, TERM8, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD1, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELIPAD2, TERM_GROUP2_ENTER1_block, 14 }, { 26, HELITAKEOFF, TERM_GROUP2_ENTER1_block, 14 }, { 26, 0, 0, 27 },
00658   { 27, 255, TERM_GROUP1_block, 0 }, { 27, TERM2, TERM2_block, 5 }, { 27, HANGAR, HANGAR1_AREA_block, 2 }, { 27, TERM1, 0, 26 }, { 27, TERM5, 0, 26 }, { 27, TERM6, 0, 26 }, { 27, TERM7, 0, 26 }, { 27, TERM8, 0, 26 }, { 27, HELIPAD1, 0, 14 }, { 27, HELIPAD2, 0, 14 }, { 27, 0, 0, 28 },
00659   { 28, 255, TERM_GROUP1_block, 0 }, { 28, TERM3, TERM3_block, 6 }, { 28, HANGAR, HANGAR1_AREA_block, 27 }, { 28, TERM1, 0, 27 }, { 28, TERM2, 0, 27 }, { 28, TERM4, 0, 29 }, { 28, TERM5, 0, 14 }, { 28, TERM6, 0, 14 }, { 28, TERM7, 0, 14 }, { 28, TERM8, 0, 14 }, { 28, HELIPAD1, 0, 14 }, { 28, HELIPAD2, 0, 14 }, { 28, 0, 0, 29 },
00660   { 29, 255, TERM_GROUP1_block, 0 }, { 29, TERM4, TERM4_block, 7 }, { 29, HANGAR, HANGAR1_AREA_block, 27 }, { 29, TAKEOFF, 0, 30 }, { 29, 0, 0, 28 },
00661   { 30, 0, OUT_WAY_block2, 31 },
00662   { 31, 0, OUT_WAY_block, 32 },
00663   /* takeoff */
00664   { 32, TAKEOFF, RUNWAY_OUT_block, 33 },
00665   { 33, 0, RUNWAY_OUT_block, 34 },
00666   { 34, STARTTAKEOFF, NOTHING_block, 35 },
00667   { 35, ENDTAKEOFF, NOTHING_block, 0 },
00668   /* landing */
00669   { 36, 0, 0, 0 },
00670   { 37, LANDING, RUNWAY_IN_block, 38 },
00671   { 38, 0, RUNWAY_IN_block, 39 },
00672   { 39, 0, RUNWAY_IN_block, 40 },
00673   { 40, ENDLANDING, RUNWAY_IN_block, 41 },
00674   { 41, 0, IN_WAY_block, 42 },
00675   { 42, 255, IN_WAY_block, 0 }, { 42, 255, TERM_GROUP1_block, 0 }, { 42, 255, TERM_GROUP1_block, 1 }, { 42, HANGAR, 0, 2 }, { 42, 0, 0, 26 },
00676   /* In Air */
00677   { 43, 0, 0, 44 },
00678   { 44, FLYING, 0, 45 }, { 44, HELILANDING, 0, 47 }, { 44, LANDING, 0, 69 }, { 44, 0, 0, 45 },
00679   { 45, 0, 0, 46 },
00680   { 46, FLYING, 0, 43 }, { 46, LANDING, 0, 76 }, { 46, 0, 0, 43 },
00681   /* Helicopter -- stay in air in special place as a buffer to choose from helipads */
00682   { 47, HELILANDING, PRE_HELIPAD_block, 48 },
00683   { 48, HELIENDLANDING, PRE_HELIPAD_block, 48 }, { 48, HELIPAD1, 0, 49 }, { 48, HELIPAD2, 0, 50 }, { 48, HANGAR, 0, 55 },
00684   { 49, 0, NOTHING_block, 51 },
00685   { 50, 0, NOTHING_block, 52 },
00686   /* landing */
00687   { 51, 255, NOTHING_block, 0 }, { 51, HELIPAD1, HELIPAD1_block, 12 }, { 51, HANGAR, 0, 55 }, { 51, 0, 0, 12 },
00688   { 52, 255, NOTHING_block, 0 }, { 52, HELIPAD2, HELIPAD2_block, 13 }, { 52, HANGAR, 0, 55 }, { 52, 0, 0, 13 },
00689   /* Helicopter -- takeoff */
00690   { 53, HELITAKEOFF, NOTHING_block, 0 },
00691   { 54, HELITAKEOFF, NOTHING_block, 0 },
00692   { 55, 0, HANGAR2_AREA_block, 56 }, // need to go to hangar when waiting in air
00693   { 56, 0, HANGAR2_AREA_block, 3 },
00694   /* runway 2 out support */
00695   { 57, 255, OUT_WAY2_block, 0 }, { 57, TAKEOFF, 0, 58 }, { 57, 0, 0, 58 },
00696   { 58, 0, OUT_WAY2_block, 59 },
00697   { 59, TAKEOFF, RUNWAY_OUT2_block, 60 }, // takeoff
00698   { 60, 0, RUNWAY_OUT2_block, 61 },
00699   { 61, STARTTAKEOFF, NOTHING_block, 62 },
00700   { 62, ENDTAKEOFF, NOTHING_block, 0 },
00701   /* runway 2 in support */
00702   { 63, LANDING, RUNWAY_IN2_block, 64 },
00703   { 64, 0, RUNWAY_IN2_block, 65 },
00704   { 65, 0, RUNWAY_IN2_block, 66 },
00705   { 66, ENDLANDING, RUNWAY_IN2_block, 0 }, { 66, 255, 0, 1 }, { 66, 255, 0, 0 }, { 66, 0, 0, 67 },
00706   { 67, 0, IN_WAY2_block, 68 },
00707   { 68, 255, IN_WAY2_block, 0 }, { 68, 255, TERM_GROUP2_block, 1 }, { 68, 255, TERM_GROUP1_block, 0 }, { 68, HANGAR, HANGAR2_AREA_block, 22 }, { 68, 0, 0, 22 },
00708   { 69, 255, RUNWAY_IN2_block, 0 }, { 69, 0, RUNWAY_IN2_block, 63 },
00709   { 70, 255, TERM_GROUP2_EXIT1_block, 0 }, { 70, HELIPAD1, HELIPAD1_block, 12 }, { 70, HELITAKEOFF, HELIPAD1_block, 12 }, { 70, 0, 0, 71 },
00710   { 71, 255, TERM_GROUP2_EXIT1_block, 0 }, { 71, HELIPAD2, HELIPAD2_block, 13 }, { 71, HELITAKEOFF, HELIPAD1_block, 12 }, { 71, 0, 0, 24 },
00711   { 72, 0, HELIPAD1_block, 53 },
00712   { 73, 0, HELIPAD2_block, 54 },
00713   { 74, HELITAKEOFF, NOTHING_block, 0 },
00714   { 75, HELITAKEOFF, NOTHING_block, 0 },
00715   { 76, 255, RUNWAY_IN_block, 0 }, { 76, 0, RUNWAY_IN_block, 37 },
00716   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00717 };
00718 
00719 
00720 /* heliports, oilrigs don't have depots */
00721 static const byte _airport_helipad_heliport_oilrig[] = { 1, 1 };
00722 static const byte _airport_entries_heliport_oilrig[] = { 7, 7, 7, 7 };
00723 static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = {
00724   { 0, HELIPAD1, HELIPAD1_block, 1 },
00725   { 1, HELITAKEOFF, NOTHING_block, 0 }, // takeoff
00726   { 2, 255, AIRPORT_BUSY_block, 0 }, { 2, HELILANDING, 0, 3 }, { 2, HELITAKEOFF, 0, 1 },
00727   { 3, HELILANDING, AIRPORT_BUSY_block, 4 },
00728   { 4, HELIENDLANDING, AIRPORT_BUSY_block, 4 }, { 4, HELIPAD1, HELIPAD1_block, 0 }, { 4, HELITAKEOFF, 0, 2 },
00729   /* In Air */
00730   { 5, 0, NOTHING_block, 6 },
00731   { 6, 0, NOTHING_block, 7 },
00732   { 7, 0, NOTHING_block, 8 },
00733   { 8, FLYING, NOTHING_block, 5 }, { 8, HELILANDING, HELIPAD1_block, 2 }, // landing
00734   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00735 };
00736 
00737 /* helidepots */
00738 static const TileIndexDiffC _airport_depots_helidepot[] = { { 1, 0 } };
00739 static const byte _airport_helipad_helidepot[] = { 1, 1 };
00740 static const byte _airport_entries_helidepot[] = { 4, 4, 4, 4 };
00741 static const AirportFTAbuildup _airport_fta_helidepot[] = {
00742   {  0, HANGAR, NOTHING_block, 1 },
00743   {  1, 255, HANGAR2_AREA_block, 0 }, { 1, HANGAR, 0, 0 }, { 1, HELIPAD1, HELIPAD1_block, 14 }, { 1, HELITAKEOFF, 0, 15 }, { 1, 0, 0, 0 },
00744   {  2, FLYING, NOTHING_block, 3 }, { 2, HELILANDING, PRE_HELIPAD_block, 7 }, { 2, HANGAR, 0, 12 }, { 2, HELITAKEOFF, NOTHING_block, 16 },
00745   /* In Air */
00746   {  3, 0, NOTHING_block, 4 },
00747   {  4, 0, NOTHING_block, 5 },
00748   {  5, 0, NOTHING_block, 6 },
00749   {  6, 0, NOTHING_block, 2 },
00750   /* Helicopter -- stay in air in special place as a buffer to choose from helipads */
00751   {  7, HELILANDING, PRE_HELIPAD_block, 8 },
00752   {  8, HELIENDLANDING, PRE_HELIPAD_block, 8 }, { 8, HELIPAD1, 0, 9 }, { 8, HANGAR, 0, 12 }, { 8, 0, 0, 2 },
00753   {  9, 0, NOTHING_block, 10 },
00754   /* landing */
00755   { 10, 255, NOTHING_block, 10 }, { 10, HELIPAD1, HELIPAD1_block, 14 }, { 10, HANGAR, 0, 1 }, { 10, 0, 0, 14 },
00756   /* Helicopter -- takeoff */
00757   { 11, HELITAKEOFF, NOTHING_block, 0 },
00758   { 12, 0, HANGAR2_AREA_block, 13 }, // need to go to hangar when waiting in air
00759   { 13, 0, HANGAR2_AREA_block, 1 },
00760   { 14, HELIPAD1, HELIPAD1_block, 14 }, { 14, HANGAR, 0, 1 }, { 14, HELITAKEOFF, 0, 17 },
00761   { 15, HELITAKEOFF, NOTHING_block, 0 }, // takeoff outside depot
00762   { 16, HELITAKEOFF, 0, 14 },
00763   { 17, 0, NOTHING_block, 11 },
00764   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00765 };
00766 
00767 /* helistation */
00768 static const TileIndexDiffC _airport_depots_helistation[] = { { 0, 0 } };
00769 static const byte _airport_helipad_helistation[] = { 1, 3 };
00770 static const byte _airport_entries_helistation[] = { 25, 25, 25, 25 };
00771 static const AirportFTAbuildup _airport_fta_helistation[] = {
00772   {  0, HANGAR, NOTHING_block, 8 },    { 0, HELIPAD1, 0, 1 }, { 0, HELIPAD2, 0, 1 }, { 0, HELIPAD3, 0, 1 }, { 0, HELITAKEOFF, 0, 1 }, { 0, 0, 0, 0 },
00773   {  1, 255, HANGAR2_AREA_block, 0 },  { 1, HANGAR, 0, 0 }, { 1, HELITAKEOFF, 0, 3 }, { 1, 0, 0, 4 },
00774   /* landing */
00775   {  2, FLYING, NOTHING_block, 28 },   { 2, HELILANDING, 0, 15 }, { 2, 0, 0, 28 },
00776   /* helicopter side */
00777   {  3, HELITAKEOFF, NOTHING_block, 0 }, // helitakeoff outside hangar2
00778   {  4, 255, TAXIWAY_BUSY_block, 0 },  { 4, HANGAR, HANGAR2_AREA_block, 1 }, { 4, HELITAKEOFF, 0, 1 }, { 4, 0, 0, 5 },
00779   {  5, 255, TAXIWAY_BUSY_block, 0 },  { 5, HELIPAD1, HELIPAD1_block, 6 }, { 5, HELIPAD2, HELIPAD2_block, 7 }, { 5, HELIPAD3, HELIPAD3_block, 8 }, { 5, 0, 0, 4 },
00780   {  6, HELIPAD1, HELIPAD1_block, 5 }, { 6, HANGAR, HANGAR2_AREA_block, 5 }, { 6, HELITAKEOFF, 0, 9 }, { 6, 0, 0, 6 },
00781   {  7, HELIPAD2, HELIPAD2_block, 5 }, { 7, HANGAR, HANGAR2_AREA_block, 5 }, { 7, HELITAKEOFF, 0, 10 }, { 7, 0, 0, 7 },
00782   {  8, HELIPAD3, HELIPAD3_block, 5 }, { 8, HANGAR, HANGAR2_AREA_block, 5 }, { 8, HELITAKEOFF, 0, 11 }, { 8, 0, 0, 8 },
00783   {  9, 0, HELIPAD1_block, 12 },
00784   { 10, 0, HELIPAD2_block, 13 },
00785   { 11, 0, HELIPAD3_block, 14 },
00786   { 12, HELITAKEOFF, NOTHING_block, 0 },
00787   { 13, HELITAKEOFF, NOTHING_block, 0 },
00788   { 14, HELITAKEOFF, NOTHING_block, 0 },
00789   /* heli - in flight moves */
00790   { 15, HELILANDING, PRE_HELIPAD_block, 16 },
00791   { 16, HELIENDLANDING, PRE_HELIPAD_block, 16 }, { 16, HELIPAD1, 0, 17 }, { 16, HELIPAD2, 0, 18 }, { 16, HELIPAD3, 0, 19 }, { 16, HANGAR, 0, 23 },
00792   { 17, 0, NOTHING_block, 20 },
00793   { 18, 0, NOTHING_block, 21 },
00794   { 19, 0, NOTHING_block, 22 },
00795   /* heli landing */
00796   { 20, 255, NOTHING_block, 0 }, { 20, HELIPAD1, HELIPAD1_block, 6 }, { 20, HANGAR, 0, 23 }, { 20, 0, 0, 6 },
00797   { 21, 255, NOTHING_block, 0 }, { 21, HELIPAD2, HELIPAD2_block, 7 }, { 21, HANGAR, 0, 23 }, { 21, 0, 0, 7 },
00798   { 22, 255, NOTHING_block, 0 }, { 22, HELIPAD3, HELIPAD3_block, 8 }, { 22, HANGAR, 0, 23 }, { 22, 0, 0, 8 },
00799   { 23, 0, HANGAR2_AREA_block, 24 }, // need to go to helihangar when waiting in air
00800   { 24, 0, HANGAR2_AREA_block, 1 },
00801   { 25, 0, NOTHING_block, 26 },
00802   { 26, 0, NOTHING_block, 27 },
00803   { 27, 0, NOTHING_block, 2 },
00804   { 28, 0, NOTHING_block, 29 },
00805   { 29, 0, NOTHING_block, 30 },
00806   { 30, 0, NOTHING_block, 31 },
00807   { 31, 0, NOTHING_block, 32 },
00808   { 32, 0, NOTHING_block, 25 },
00809   { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE
00810 };
00811 
00812 #endif /* AIRPORT_MOVEMENT_H */

Generated on Thu Oct 1 11:03:12 2009 for OpenTTD by  doxygen 1.5.6