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