tron@2186: /* $Id$ */ tron@2186: truelight@0: #ifndef AIRPORT_MOVEMENT_H truelight@0: #define AIRPORT_MOVEMENT_H truelight@0: truelight@0: #include "stdafx.h" truelight@0: truelight@0: typedef struct AirportMovingData { truelight@0: int x,y; truelight@0: byte flag; truelight@0: byte direction; truelight@0: } AirportMovingData; truelight@0: truelight@0: // state machine input struct (from external file, etc.) truelight@0: // Finite sTate mAchine --> FTA truelight@0: typedef struct AirportFTAbuildup { truelight@0: byte position; // the position that an airplane is at truelight@0: byte heading; // the current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.) truelight@0: uint32 block; // the block this position is on on the airport (st->airport_flags) truelight@0: byte next_in_chain; // next position from this position truelight@0: } AirportFTAbuildup; truelight@0: truelight@0: enum { darkvater@179: AMED_NOSPDCLAMP = 1<<0, darkvater@179: AMED_TAKEOFF = 1<<1, darkvater@179: AMED_SLOWTURN = 1<<2, darkvater@179: AMED_LAND = 1<<3, darkvater@179: AMED_EXACTPOS = 1<<4, darkvater@179: AMED_BRAKE = 1<<5, darkvater@179: AMED_HELI_RAISE = 1<<6, darkvater@179: AMED_HELI_LOWER = 1<<7, truelight@0: }; truelight@0: truelight@0: enum {MAX_ELEMENTS = 255}; truelight@0: enum {MAX_HEADINGS = 18}; truelight@0: truelight@0: /////////////////////////////////////////////////////////////////////// truelight@0: ///////***********Movement States on Airports********************////// truelight@0: // headings target truelight@0: enum { truelight@0: TO_ALL = 0, truelight@0: HANGAR = 1, truelight@0: TERM1 = 2, truelight@0: TERM2 = 3, truelight@0: TERM3 = 4, truelight@0: TERM4 = 5, truelight@0: TERM5 = 6, truelight@0: TERM6 = 7, truelight@0: HELIPAD1 = 8, truelight@0: HELIPAD2 = 9, truelight@0: TAKEOFF = 10, truelight@0: STARTTAKEOFF = 11, truelight@0: ENDTAKEOFF = 12, truelight@0: HELITAKEOFF = 13, truelight@0: FLYING = 14, truelight@0: LANDING = 15, truelight@0: ENDLANDING = 16, truelight@0: HELILANDING = 17, truelight@0: HELIENDLANDING = 18 truelight@0: }; truelight@0: truelight@0: /////////////////////////////////////////////////////////////////////// truelight@0: ///////**********Movement Blocks on Airports*********************////// truelight@0: // blocks (eg_airport_flags) truelight@0: enum { darkvater@179: TERM1_block = 1 << 0, darkvater@179: TERM2_block = 1 << 1, darkvater@179: TERM3_block = 1 << 2, darkvater@179: TERM4_block = 1 << 3, darkvater@179: TERM5_block = 1 << 4, darkvater@179: TERM6_block = 1 << 5, darkvater@179: HELIPAD1_block = 1 << 6, darkvater@179: HELIPAD2_block = 1 << 7, darkvater@179: RUNWAY_IN_OUT_block = 1 << 8, darkvater@179: RUNWAY_IN_block = 1 << 8, darkvater@179: AIRPORT_BUSY_block = 1 << 8, darkvater@179: RUNWAY_OUT_block = 1 << 9, darkvater@179: TAXIWAY_BUSY_block = 1 << 10, darkvater@179: OUT_WAY_block = 1 << 11, darkvater@179: IN_WAY_block = 1 << 12, darkvater@179: AIRPORT_ENTRANCE_block = 1 << 13, darkvater@179: TERM_GROUP1_block = 1 << 14, darkvater@179: TERM_GROUP2_block = 1 << 15, darkvater@179: HANGAR2_AREA_block = 1 << 16, darkvater@179: TERM_GROUP2_ENTER1_block = 1 << 17, darkvater@179: TERM_GROUP2_ENTER2_block = 1 << 18, darkvater@179: TERM_GROUP2_EXIT1_block = 1 << 19, darkvater@179: TERM_GROUP2_EXIT2_block = 1 << 20, darkvater@179: PRE_HELIPAD_block = 1 << 21, darkvater@179: NOTHING_block = 1 << 30 truelight@0: }; truelight@0: truelight@0: /////////////////////////////////////////////////////////////////////// truelight@0: /////*********Movement Positions on Airports********************/////// truelight@0: // Country Airfield (small) 4x3 truelight@0: static const AirportMovingData _airport_moving_data_country[22] = { darkvater@179: { 53, 3,AMED_EXACTPOS,3}, // 00 In Hangar darkvater@179: { 53, 27,0,0}, // 01 Taxi to right outside depot darkvater@179: { 32, 23,AMED_EXACTPOS,7}, // 02 Terminal 1 darkvater@179: { 10, 23,AMED_EXACTPOS,7}, // 03 Terminal 2 darkvater@179: { 43, 37,0,0}, // 04 Going towards terminal 2 darkvater@179: { 24, 37,0,0}, // 05 Going towards terminal 2 darkvater@179: { 53, 37,0,0}, // 06 Going for takeoff darkvater@179: { 61, 40,AMED_EXACTPOS,1}, // 07 Taxi to start of runway (takeoff) darkvater@179: { 3, 40,AMED_NOSPDCLAMP,0}, // 08 Accelerate to end of runway darkvater@179: {-79, 40,AMED_NOSPDCLAMP | AMED_TAKEOFF,0}, // 09 Take off darkvater@179: {177, 40,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 10 Fly to landing position in air darkvater@179: { 56, 40,AMED_NOSPDCLAMP | AMED_LAND,0}, // 11 Going down for land darkvater@179: { 3, 40,AMED_NOSPDCLAMP | AMED_BRAKE,0}, // 12 Just landed, brake until end of runway darkvater@179: { 7, 40,0,0}, // 13 Just landed, turn around and taxi 1 square darkvater@179: { 53, 40,0,0}, // 14 Taxi from runway to crossing darkvater@179: {-31,193,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 15 Fly around waiting for a landing spot (north-east) darkvater@179: { 1, 1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 16 Fly around waiting for a landing spot (north-west) darkvater@179: {257, 1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 17 Fly around waiting for a landing spot (south-west) darkvater@179: {273, 49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 18 Fly around waiting for a landing spot (south) darkvater@179: { 44, 37,AMED_HELI_RAISE,0}, // 19 Helicopter takeoff darkvater@179: { 44, 40,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 20 In position above landing spot helicopter darkvater@179: { 44, 40,AMED_HELI_LOWER,0} // 21 Helicopter landing truelight@0: }; truelight@0: truelight@0: // City Airport (large) 6x6 truelight@0: static const AirportMovingData _airport_moving_data_town[25] = { darkvater@179: { 85, 3,AMED_EXACTPOS,3}, // 00 In Hangar darkvater@179: { 85, 27,0,0}, // 01 Taxi to right outside depot darkvater@179: { 26, 41,AMED_EXACTPOS,5}, // 02 Terminal 1 darkvater@179: { 56, 20,AMED_EXACTPOS,3}, // 03 Terminal 2 darkvater@179: { 38, 8,AMED_EXACTPOS,5}, // 04 Terminal 3 darkvater@179: { 65, 6,0,0}, // 05 Taxi to right in infront of terminal 2/3 darkvater@179: { 80, 27,0,0}, // 06 Taxiway terminals 2-3 darkvater@179: { 44, 63,0,0}, // 07 Taxi to Airport center darkvater@179: { 58, 71,0,0}, // 08 Towards takeoff darkvater@179: { 72, 85,0,0}, // 09 Taxi to runway (takeoff) darkvater@179: { 89, 85,AMED_EXACTPOS,1}, // 10 Taxi to start of runway (takeoff) darkvater@179: { 3, 85,AMED_NOSPDCLAMP,0}, // 11 Accelerate to end of runway darkvater@179: {-79, 85,AMED_NOSPDCLAMP | AMED_TAKEOFF,0}, // 12 Take off darkvater@179: {177, 85,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 13 Fly to landing position in air darkvater@179: { 89, 85,AMED_NOSPDCLAMP | AMED_LAND,0}, // 14 Going down for land darkvater@179: { 3, 85,AMED_NOSPDCLAMP | AMED_BRAKE,0}, // 15 Just landed, brake until end of runway darkvater@179: { 20, 87,0,0}, // 16 Just landed, turn around and taxi 1 square darkvater@179: { 36, 71,0,0}, // 17 Taxi from runway to crossing darkvater@179: {-31,193,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 18 Fly around waiting for a landing spot (north-east) darkvater@179: { 1, 1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 19 Fly around waiting for a landing spot (north-west) darkvater@179: {257, 1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 20 Fly around waiting for a landing spot (south-west) darkvater@179: {273, 49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 21 Fly around waiting for a landing spot (south) darkvater@179: { 44, 63,AMED_HELI_RAISE,0}, // 22 Helicopter takeoff darkvater@179: { 28, 74,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 23 In position above landing spot helicopter darkvater@179: { 28, 74,AMED_HELI_LOWER,0} // 24 Helicopter landing truelight@0: }; truelight@0: truelight@0: // Metropolitan Airport (metropolitan) - 2 runways truelight@0: static const AirportMovingData _airport_moving_data_metropolitan[27] = { darkvater@179: { 85, 3,AMED_EXACTPOS,3}, // 00 In Hangar darkvater@179: { 85, 27,0,0}, // 01 Taxi to right outside depot darkvater@179: { 26, 41,AMED_EXACTPOS,5}, // 02 Terminal 1 darkvater@179: { 56, 20,AMED_EXACTPOS,3}, // 03 Terminal 2 darkvater@179: { 38, 8,AMED_EXACTPOS,5}, // 04 Terminal 3 darkvater@179: { 65, 6,0,0}, // 05 Taxi to right in infront of terminal 2/3 darkvater@179: { 70, 33,0,0}, // 06 Taxiway terminals 2-3 darkvater@179: { 44, 58,0,0}, // 07 Taxi to Airport center darkvater@179: { 72, 58,0,0}, // 08 Towards takeoff darkvater@179: { 72, 69,0,0}, // 09 Taxi to runway (takeoff) darkvater@179: { 89, 69,AMED_EXACTPOS,1}, // 10 Taxi to start of runway (takeoff) darkvater@179: { 3, 69,AMED_NOSPDCLAMP,0}, // 11 Accelerate to end of runway darkvater@179: {-79, 69,AMED_NOSPDCLAMP | AMED_TAKEOFF,0}, // 12 Take off darkvater@179: {177, 85,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 13 Fly to landing position in air darkvater@179: { 89, 85,AMED_NOSPDCLAMP | AMED_LAND,0}, // 14 Going down for land darkvater@179: { 3, 85,AMED_NOSPDCLAMP | AMED_BRAKE,0}, // 15 Just landed, brake until end of runway darkvater@179: { 21, 85,0,0}, // 16 Just landed, turn around and taxi 1 square darkvater@179: { 21, 69,0,0}, // 17 On Runway-out taxiing to In-Way darkvater@179: { 21, 54,AMED_EXACTPOS,5}, // 18 Taxi from runway to crossing darkvater@179: {-31,193,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 19 Fly around waiting for a landing spot (north-east) darkvater@179: { 1, 1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 20 Fly around waiting for a landing spot (north-west) darkvater@179: {257, 1,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 21 Fly around waiting for a landing spot (south-west) darkvater@179: {273, 49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 22 Fly around waiting for a landing spot (south) darkvater@179: { 44, 58,0,0}, // 23 Helicopter takeoff spot on ground (to clear airport sooner) darkvater@179: { 44, 63,AMED_HELI_RAISE,0}, // 24 Helicopter takeoff darkvater@179: { 15, 54,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 25 Get in position above landing spot helicopter darkvater@179: { 15, 54,AMED_HELI_LOWER,0} // 26 Helicopter landing truelight@0: }; truelight@0: truelight@0: // International Airport (international) - 2 runways, 6 terminals, dedicated helipod truelight@0: static const AirportMovingData _airport_moving_data_international[51] = { darkvater@179: { 7, 55,AMED_EXACTPOS,3}, // 00 In Hangar 1 darkvater@179: {100, 21,AMED_EXACTPOS,3}, // 01 In Hangar 2 darkvater@179: { 7, 70,0,0}, // 02 Taxi to right outside depot darkvater@179: {100, 36,0,0}, // 03 Taxi to right outside depot darkvater@179: { 38, 70,AMED_EXACTPOS,5}, // 04 Terminal 1 darkvater@179: { 38, 54,AMED_EXACTPOS,5}, // 05 Terminal 2 darkvater@179: { 38, 38,AMED_EXACTPOS,5}, // 06 Terminal 3 darkvater@179: { 70, 70,AMED_EXACTPOS,1}, // 07 Terminal 4 darkvater@179: { 70, 54,AMED_EXACTPOS,1}, // 08 Terminal 5 darkvater@179: { 70, 38,AMED_EXACTPOS,1}, // 09 Terminal 6 darkvater@179: {104, 71,AMED_EXACTPOS,1}, // 10 Helipad 1 darkvater@179: {104, 55,AMED_EXACTPOS,1}, // 11 Helipad 2 darkvater@179: { 22, 87,0,0}, // 12 Towards Terminals 4/5/6, Helipad 1/2 darkvater@179: { 60, 87,0,0}, // 13 Towards Terminals 4/5/6, Helipad 1/2 darkvater@179: { 66, 87,0,0}, // 14 Towards Terminals 4/5/6, Helipad 1/2 darkvater@179: { 86, 87,AMED_EXACTPOS,7}, // 15 Towards Terminals 4/5/6, Helipad 1/2 darkvater@179: { 86, 70,0,0}, // 16 In Front of Terminal 4 / Helipad 1 darkvater@179: { 86, 54,0,0}, // 17 In Front of Terminal 5 / Helipad 2 darkvater@179: { 86, 38,0,0}, // 18 In Front of Terminal 6 darkvater@179: { 86, 22,0,0}, // 19 Towards Terminals Takeoff (Taxiway) darkvater@179: { 66, 22,0,0}, // 20 Towards Terminals Takeoff (Taxiway) darkvater@179: { 60, 22,0,0}, // 21 Towards Terminals Takeoff (Taxiway) darkvater@179: { 38, 22,0,0}, // 22 Towards Terminals Takeoff (Taxiway) darkvater@179: { 22, 70,0,0}, // 23 In Front of Terminal 1 darkvater@179: { 22, 58,0,0}, // 24 In Front of Terminal 2 darkvater@179: { 22, 38,0,0}, // 25 In Front of Terminal 3 darkvater@179: { 22, 22,AMED_EXACTPOS,7}, // 26 Going for Takeoff darkvater@179: { 22, 6,0,0}, // 27 On Runway-out, prepare for takeoff darkvater@179: { 3, 6,AMED_EXACTPOS,5}, // 28 Accelerate to end of runway darkvater@179: { 60, 6,AMED_NOSPDCLAMP,0}, // 29 Release control of runway, for smoother movement darkvater@179: {105, 6,AMED_NOSPDCLAMP,0}, // 30 End of runway darkvater@179: {190, 6,AMED_NOSPDCLAMP | AMED_TAKEOFF,0}, // 31 Take off darkvater@179: {193,104,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 32 Fly to landing position in air darkvater@179: {105,104,AMED_NOSPDCLAMP | AMED_LAND,0}, // 33 Going down for land darkvater@179: { 3,104,AMED_NOSPDCLAMP | AMED_BRAKE,0}, // 34 Just landed, brake until end of runway darkvater@179: { 12,104,0,0}, // 35 Just landed, turn around and taxi 1 square darkvater@179: { 7, 84,0,0}, // 36 Taxi from runway to crossing darkvater@179: {-31,209,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 37 Fly around waiting for a landing spot (north-east) darkvater@179: { 1, 6,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 38 Fly around waiting for a landing spot (north-west) darkvater@179: {273, 6,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 39 Fly around waiting for a landing spot (south-west) darkvater@179: {305, 81,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 40 Fly around waiting for a landing spot (south) truelight@0: // Helicopter darkvater@179: {128, 80,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 41 Bufferspace before helipad darkvater@179: {128, 80,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 42 Bufferspace before helipad darkvater@179: { 96, 71,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 43 Get in position for Helipad1 darkvater@179: { 96, 55,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 44 Get in position for Helipad2 darkvater@179: { 96, 71,AMED_HELI_LOWER,0}, // 45 Land at Helipad1 darkvater@179: { 96, 55,AMED_HELI_LOWER,0}, // 46 Land at Helipad2 darkvater@179: {104, 71,AMED_HELI_RAISE,0}, // 47 Takeoff Helipad1 darkvater@179: {104, 55,AMED_HELI_RAISE,0}, // 48 Takeoff Helipad2 darkvater@179: {104, 32,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 49 Go to position for Hangarentrance in air darkvater@179: {104, 32,AMED_HELI_LOWER,0} // 50 Land in HANGAR2_AREA to go to hangar truelight@0: }; truelight@0: truelight@0: // Heliport (heliport) truelight@0: static const AirportMovingData _airport_moving_data_heliport[9] = { darkvater@179: { 5, 9,AMED_EXACTPOS,1}, // 0 - At heliport terminal darkvater@179: { 2, 9,AMED_HELI_RAISE,0}, // 1 - Take off (play sound) darkvater@179: { -3, 9,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 2 - In position above landing spot helicopter darkvater@179: { -3, 9,AMED_HELI_LOWER,0}, // 3 - Land darkvater@179: { 2, 9,0,0}, // 4 - Goto terminal on ground darkvater@179: {-31, 59,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 5 - Circle #1 (north-east) darkvater@179: {-31,-49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 6 - Circle #2 (north-west) darkvater@179: { 49,-49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 7 - Circle #3 (south-west) darkvater@179: { 70, 9,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 8 - Circle #4 (south) truelight@0: }; truelight@0: truelight@0: // Oilrig truelight@0: static const AirportMovingData _airport_moving_data_oilrig[9] = { darkvater@179: { 31, 9,AMED_EXACTPOS,1}, // 0 - At oilrig terminal darkvater@179: { 28, 9,AMED_HELI_RAISE,0}, // 1 - Take off (play sound) darkvater@179: { 23, 9,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 2 - In position above landing spot helicopter darkvater@179: { 23, 9,AMED_HELI_LOWER,0}, // 3 - Land darkvater@179: { 28, 9,0,0}, // 4 - Goto terminal on ground darkvater@179: {-31, 69,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 5 - circle #1 (north-east) darkvater@179: {-31,-49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 6 - circle #2 (north-west) darkvater@179: { 69,-49,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 7 - circle #3 (south-west) darkvater@179: { 70, 9,AMED_NOSPDCLAMP | AMED_SLOWTURN,0}, // 8 - circle #4 (south) truelight@0: }; truelight@0: truelight@0: /////////////////////////////////////////////////////////////////////// truelight@0: /////**********Movement Machine on Airports*********************/////// truelight@0: // first element of depots array tells us how many depots there are (to know size of array) truelight@0: // this may be changed later when airports are moved to external file tron@909: static const TileIndexDiffC _airport_depots_country[] = {{3, 0}}; celestar@950: static const byte _airport_terminal_country[] = {1, 2}; truelight@0: static const AirportFTAbuildup _airport_fta_country[] = { darkvater@179: { 0,HANGAR,NOTHING_block,1}, darkvater@179: { 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}, darkvater@179: { 2,TERM1,TERM1_block,1}, darkvater@179: { 3,TERM2,TERM2_block,5}, darkvater@179: { 4,255,AIRPORT_BUSY_block,0}, {4,TERM2,0,5}, {4,HANGAR,0,1}, {4,TAKEOFF,0,6}, {4,HELITAKEOFF,0,1}, darkvater@179: { 5,255,AIRPORT_BUSY_block,0}, {5,TERM2,TERM2_block,3}, {5,0,0,4}, darkvater@179: { 6,0,AIRPORT_BUSY_block,7}, truelight@0: // takeoff darkvater@179: { 7,TAKEOFF,AIRPORT_BUSY_block,8}, darkvater@179: { 8,STARTTAKEOFF,NOTHING_block,9}, darkvater@179: { 9,ENDTAKEOFF,NOTHING_block,0}, truelight@0: // landing truelight@0: {10,FLYING,NOTHING_block,15}, {10,LANDING,0,11}, {10,HELILANDING,0,20}, truelight@0: {11,LANDING,AIRPORT_BUSY_block,12}, truelight@0: {12,0,AIRPORT_BUSY_block,13}, truelight@0: {13,ENDLANDING,AIRPORT_BUSY_block,14}, {13,TERM2,0,5}, {13,0,0,14}, truelight@0: {14,0,AIRPORT_BUSY_block,1}, truelight@0: // In air truelight@0: {15,0,NOTHING_block,16}, truelight@0: {16,0,NOTHING_block,17}, truelight@0: {17,0,NOTHING_block,18}, truelight@0: {18,0,NOTHING_block,10}, truelight@0: {19,HELITAKEOFF,NOTHING_block,0}, truelight@0: {20,HELILANDING,AIRPORT_BUSY_block,21}, truelight@0: {21,HELIENDLANDING,AIRPORT_BUSY_block,1}, truelight@0: {MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE truelight@0: }; truelight@0: tron@909: static const TileIndexDiffC _airport_depots_city[] = {{5, 0}}; celestar@950: static const byte _airport_terminal_city[] = {1, 3}; truelight@0: static const AirportFTAbuildup _airport_fta_city[] = { darkvater@179: { 0,HANGAR,NOTHING_block,1}, {0,TAKEOFF,OUT_WAY_block,1}, {0,0,0,1}, darkvater@179: { 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 darkvater@179: { 2,TERM1,TERM1_block,7}, {2,TAKEOFF,OUT_WAY_block,7}, {2,0,0,7}, darkvater@179: { 3,TERM2,TERM2_block,5}, {3,TAKEOFF,OUT_WAY_block,5}, {3,0,0,5}, darkvater@179: { 4,TERM3,TERM3_block,5}, {4,TAKEOFF,OUT_WAY_block,5}, {4,0,0,5}, darkvater@179: { 5,255,TAXIWAY_BUSY_block,0}, {5,TERM2,TERM2_block,3}, {5,TERM3,TERM3_block,4}, {5,0,0,6}, darkvater@179: { 6,255,TAXIWAY_BUSY_block,0}, {6,TERM2,0,5}, {6,TERM3,0,5}, {6,HANGAR,0,1}, {6,0,0,7}, darkvater@179: { 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}, darkvater@179: { 8,0,OUT_WAY_block,9}, darkvater@179: { 9,0,RUNWAY_IN_OUT_block,10}, truelight@0: // takeoff truelight@0: {10,TAKEOFF,RUNWAY_IN_OUT_block,11}, truelight@0: {11,STARTTAKEOFF,NOTHING_block,12}, truelight@0: {12,ENDTAKEOFF,NOTHING_block,0}, truelight@0: // landing truelight@0: {13,FLYING,NOTHING_block,18}, {13,LANDING,0,14}, {13,HELILANDING,0,23}, truelight@0: {14,LANDING,RUNWAY_IN_OUT_block,15}, truelight@0: {15,0,RUNWAY_IN_OUT_block,16}, truelight@0: {16,0,RUNWAY_IN_OUT_block,17}, truelight@0: {17,ENDLANDING,IN_WAY_block,7}, truelight@0: // In Air truelight@0: {18,0,NOTHING_block,19}, truelight@0: {19,0,NOTHING_block,20}, truelight@0: {20,0,NOTHING_block,21}, truelight@0: {21,0,NOTHING_block,13}, truelight@0: // helicopter truelight@0: {22,HELITAKEOFF,NOTHING_block,0}, truelight@0: {23,HELILANDING,IN_WAY_block,24}, truelight@0: {24,HELIENDLANDING,IN_WAY_block,17}, truelight@0: {MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE truelight@0: }; truelight@0: tron@909: static const TileIndexDiffC _airport_depots_metropolitan[] = {{5, 0}}; celestar@950: static const byte _airport_terminal_metropolitan[] = {1, 3}; truelight@0: static const AirportFTAbuildup _airport_fta_metropolitan[] = { darkvater@179: { 0,HANGAR,NOTHING_block,1}, darkvater@179: { 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 darkvater@179: { 2,TERM1,TERM1_block,7}, darkvater@179: { 3,TERM2,TERM2_block,5}, darkvater@179: { 4,TERM3,TERM3_block,5}, darkvater@179: { 5,255,TAXIWAY_BUSY_block,0}, {5,TERM2,TERM2_block,3}, {5,TERM3,TERM3_block,4}, {5,0,0,6}, darkvater@179: { 6,255,TAXIWAY_BUSY_block,0}, {6,TERM2,0,5}, {6,TERM3,0,5}, {6,HANGAR,0,1}, {6,0,0,7}, darkvater@179: { 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}, darkvater@179: { 8,0,OUT_WAY_block,9}, darkvater@179: { 9,0,RUNWAY_OUT_block,10}, truelight@0: // takeoff truelight@0: {10,TAKEOFF,RUNWAY_OUT_block,11}, truelight@0: {11,STARTTAKEOFF,NOTHING_block,12}, truelight@0: {12,ENDTAKEOFF,NOTHING_block,0}, truelight@0: // landing truelight@0: {13,FLYING,NOTHING_block,19}, {13,LANDING,0,14}, {13,HELILANDING,0,25}, truelight@0: {14,LANDING,RUNWAY_IN_block,15}, truelight@0: {15,0,RUNWAY_IN_block,16}, truelight@0: {16,255,RUNWAY_IN_block,0}, {16,ENDLANDING,IN_WAY_block,17}, truelight@0: {17,255,RUNWAY_OUT_block,0}, {17,ENDLANDING,IN_WAY_block,18}, truelight@0: {18,ENDLANDING,IN_WAY_block,7}, truelight@0: // In Air truelight@0: {19,0,NOTHING_block,20}, truelight@0: {20,0,NOTHING_block,21}, truelight@0: {21,0,NOTHING_block,22}, truelight@0: {22,0,NOTHING_block,13}, truelight@0: // helicopter truelight@0: {23,0,NOTHING_block,24}, truelight@0: {24,HELITAKEOFF,NOTHING_block,0}, truelight@0: {25,HELILANDING,IN_WAY_block,26}, truelight@0: {26,HELIENDLANDING,IN_WAY_block,18}, truelight@0: {MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE truelight@0: }; truelight@0: tron@909: static const TileIndexDiffC _airport_depots_international[] = {{0, 3}, {6, 1}}; celestar@950: static const byte _airport_terminal_international[] = {2, 3, 3}; celestar@950: static const byte _airport_helipad_international[] = {1, 2}; truelight@0: static const AirportFTAbuildup _airport_fta_international[] = { darkvater@179: { 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}, darkvater@179: { 1,HANGAR,NOTHING_block,3}, {1,255,HANGAR2_AREA_block,1}, {1,HELITAKEOFF,HELIPAD2_block,3}, {1,0,0,3}, darkvater@179: { 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}, darkvater@179: { 3,255,HANGAR2_AREA_block,0}, {3,HANGAR,0,1}, {3,0,0,18}, darkvater@179: { 4,TERM1,TERM1_block,23}, {4,HANGAR,AIRPORT_ENTRANCE_block,23}, {4,0,0,23}, darkvater@179: { 5,TERM2,TERM2_block,24}, {5,HANGAR,AIRPORT_ENTRANCE_block,24}, {5,0,0,24}, darkvater@179: { 6,TERM3,TERM3_block,25}, {6,HANGAR,AIRPORT_ENTRANCE_block,25}, {6,0,0,25}, darkvater@179: { 7,TERM4,TERM4_block,16}, {7,HANGAR,HANGAR2_AREA_block,16}, {7,0,0,16}, darkvater@179: { 8,TERM5,TERM5_block,17}, {8,HANGAR,HANGAR2_AREA_block,17}, {8,0,0,17}, darkvater@179: { 9,TERM6,TERM6_block,18}, {9,HANGAR,HANGAR2_AREA_block,18}, {9,0,0,18}, truelight@0: {10,HELIPAD1,HELIPAD1_block,10}, {10,HANGAR,HANGAR2_AREA_block,16}, {10,HELITAKEOFF,0,47}, truelight@0: {11,HELIPAD2,HELIPAD2_block,11}, {11,HANGAR,HANGAR2_AREA_block,17}, {11,HELITAKEOFF,0,48}, truelight@0: {12,0,TERM_GROUP2_ENTER1_block,13}, truelight@0: {13,0,TERM_GROUP2_ENTER1_block,14}, truelight@0: {14,0,TERM_GROUP2_ENTER2_block,15}, truelight@0: {15,0,TERM_GROUP2_ENTER2_block,16}, truelight@0: {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}, truelight@0: {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}, truelight@0: {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}, truelight@0: {19,0,TERM_GROUP2_EXIT1_block,20}, truelight@0: {20,0,TERM_GROUP2_EXIT1_block,21}, truelight@0: {21,0,TERM_GROUP2_EXIT2_block,22}, truelight@0: {22,0,TERM_GROUP2_EXIT2_block,26}, truelight@0: {23,255,TERM_GROUP1_block,0}, {23,TERM1,TERM1_block,4}, {23,HANGAR,AIRPORT_ENTRANCE_block,2}, {23,0,0,24}, truelight@0: {24,255,TERM_GROUP1_block,0}, {24,TERM2,TERM2_block,5}, {24,TERM1,0,23}, {24,HANGAR,0,23}, {24,0,0,25}, truelight@0: {25,255,TERM_GROUP1_block,0}, {25,TERM3,TERM3_block,6}, {25,TAKEOFF,0,26}, {25,0,0,24}, truelight@0: {26,255,TAXIWAY_BUSY_block,0}, {26,TAKEOFF,0,27}, {26,0,0,25}, truelight@0: {27,0,OUT_WAY_block,28}, truelight@0: // takeoff truelight@0: {28,TAKEOFF,OUT_WAY_block,29}, truelight@0: {29,0,RUNWAY_OUT_block,30}, truelight@0: {30,STARTTAKEOFF,NOTHING_block,31}, truelight@0: {31,ENDTAKEOFF,NOTHING_block,0}, truelight@0: // landing truelight@0: {32,FLYING,NOTHING_block,37}, {32,LANDING,0,33}, {32,HELILANDING,0,41}, truelight@0: {33,LANDING,RUNWAY_IN_block,34}, truelight@0: {34,0,RUNWAY_IN_block,35}, truelight@0: {35,0,RUNWAY_IN_block,36}, truelight@0: {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}, truelight@0: // In Air truelight@0: {37,0,NOTHING_block,38}, truelight@0: {38,0,NOTHING_block,39}, truelight@0: {39,0,NOTHING_block,40}, truelight@0: {40,0,NOTHING_block,32}, truelight@0: // Helicopter -- stay in air in special place as a buffer to choose from helipads truelight@0: {41,HELILANDING,PRE_HELIPAD_block,42}, truelight@0: {42,HELIENDLANDING,PRE_HELIPAD_block,42}, {42,HELIPAD1,0,43}, {42,HELIPAD2,0,44}, {42,HANGAR,0,49}, truelight@0: {43,0,NOTHING_block,45}, truelight@0: {44,0,NOTHING_block,46}, truelight@0: // landing truelight@0: {45,255,NOTHING_block,0}, {45,HELIPAD1,HELIPAD1_block,10}, truelight@0: {46,255,NOTHING_block,0}, {46,HELIPAD2,HELIPAD2_block,11}, truelight@0: // Helicopter -- takeoff truelight@0: {47,HELITAKEOFF,NOTHING_block,0}, truelight@0: {48,HELITAKEOFF,NOTHING_block,0}, truelight@0: {49,0,HANGAR2_AREA_block,50}, // need to go to hangar when waiting in air truelight@0: {50,0,HANGAR2_AREA_block,3}, truelight@0: {MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE truelight@0: }; truelight@0: tron@699: // heliports, oilrigs don't have depots celestar@950: static const byte _airport_helipad_heliport_oilrig[] = {1, 1}; truelight@0: static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = { truelight@0: {0,HELIPAD1,HELIPAD1_block,1}, truelight@0: {1,HELITAKEOFF,NOTHING_block,0}, // takeoff truelight@0: {2,255,AIRPORT_BUSY_block,0}, {2,HELILANDING,0,3}, {2,HELITAKEOFF,0,1}, truelight@0: {3,HELILANDING,AIRPORT_BUSY_block,4}, truelight@0: {4,HELIENDLANDING,AIRPORT_BUSY_block,4}, {4,HELIPAD1,HELIPAD1_block,0}, {4,HELITAKEOFF,0,2}, truelight@0: // In Air truelight@0: {5,0,NOTHING_block,6}, truelight@0: {6,0,NOTHING_block,7}, truelight@0: {7,0,NOTHING_block,8}, truelight@0: {8,FLYING,NOTHING_block,5}, {8,HELILANDING,HELIPAD1_block,2}, // landing truelight@0: {MAX_ELEMENTS,0,0,0} // end marker. DO NOT REMOVE truelight@0: }; truelight@0: celestar@950: static const AirportMovingData * const _airport_moving_datas[] = { truelight@0: _airport_moving_data_country, // Country Airfield (small) 4x3 truelight@0: _airport_moving_data_town, // City Airport (large) 6x6 truelight@0: _airport_moving_data_heliport, // Heliport truelight@0: _airport_moving_data_metropolitan, // Metropolitain Airport (large) - 2 runways truelight@0: _airport_moving_data_international, // International Airport (xlarge) - 2 runways celestar@950: NULL, celestar@950: NULL, celestar@950: NULL, celestar@950: NULL, celestar@950: NULL, celestar@950: NULL, celestar@950: NULL, celestar@950: NULL, celestar@950: NULL, celestar@950: NULL, truelight@0: _airport_moving_data_oilrig // Oilrig truelight@0: }; truelight@0: truelight@0: #endif /* AIRPORT_MOVEMENT_H */