airport.h
changeset 4059 b1e1c1193f0a
parent 3876 468642825a10
child 4171 5c6e60c392c3
equal deleted inserted replaced
4058:7d1e904e79b5 4059:b1e1c1193f0a
     1 /* $Id$ */
     1 /* $Id$ */
     2 
     2 
     3 #ifndef AIRPORT_H
     3 #ifndef AIRPORT_H
     4 #define AIRPORT_H
     4 #define AIRPORT_H
     5 
     5 
     6 enum {MAX_TERMINALS = 6};
     6 enum {MAX_TERMINALS = 10};
     7 enum {MAX_HELIPADS  = 2};
     7 enum {MAX_HELIPADS  = 4};
     8 enum {MAX_ELEMENTS  = 255};
     8 enum {MAX_ELEMENTS  = 255};
     9 enum {MAX_HEADINGS  = 18};
     9 enum {MAX_HEADINGS  = 22};
    10 
    10 
    11 // Airport types
    11 // Airport types
    12 enum {
    12 enum {
    13 	AT_SMALL         = 0,
    13 	AT_SMALL         = 0,
    14 	AT_LARGE         = 1,
    14 	AT_LARGE         = 1,
    15 	AT_HELIPORT      = 2,
    15 	AT_HELIPORT      = 2,
    16 	AT_METROPOLITAN  = 3,
    16 	AT_METROPOLITAN  = 3,
    17 	AT_INTERNATIONAL = 4,
    17 	AT_INTERNATIONAL = 4,
    18 	AT_OILRIG        = 15,
    18 	AT_COMMUTER      = 5,
       
    19 	AT_HELIDEPOT     = 6,
       
    20 	AT_INTERCON      = 7,
       
    21 	AT_HELISTATION   = 8,
       
    22 	AT_OILRIG        = 15
    19 };
    23 };
    20 
    24 
    21 // do not change unless you change v->subtype too. This aligns perfectly with its current setting
    25 // do not change unless you change v->subtype too. This aligns perfectly with its current setting
    22 enum {
    26 enum {
    23 	AIRCRAFT_ONLY    = 0,
    27 	AIRCRAFT_ONLY    = 0,
    36 	AMED_HELI_LOWER = 1<<7,
    40 	AMED_HELI_LOWER = 1<<7,
    37 };
    41 };
    38 
    42 
    39 /* Movement States on Airports (headings target) */
    43 /* Movement States on Airports (headings target) */
    40 enum {
    44 enum {
    41 	TO_ALL,
    45 	TO_ALL         = 0,
    42 	HANGAR,
    46 	HANGAR         = 1,
    43 	TERM1,
    47 	TERM1          = 2,
    44 	TERM2,
    48 	TERM2          = 3,
    45 	TERM3,
    49 	TERM3          = 4,
    46 	TERM4,
    50 	TERM4          = 5,
    47 	TERM5,
    51 	TERM5          = 6,
    48 	TERM6,
    52 	TERM6          = 7,
    49 	HELIPAD1,
    53 	HELIPAD1       = 8,
    50 	HELIPAD2,
    54 	HELIPAD2       = 9,
    51 	TAKEOFF,
    55 	TAKEOFF        = 10,
    52 	STARTTAKEOFF,
    56 	STARTTAKEOFF   = 11,
    53 	ENDTAKEOFF,
    57 	ENDTAKEOFF     = 12,
    54 	HELITAKEOFF,
    58 	HELITAKEOFF    = 13,
    55 	FLYING,
    59 	FLYING         = 14,
    56 	LANDING,
    60 	LANDING        = 15,
    57 	ENDLANDING,
    61 	ENDLANDING     = 16,
    58 	HELILANDING,
    62 	HELILANDING    = 17,
    59 	HELIENDLANDING,
    63 	HELIENDLANDING = 18,
       
    64 	TERM7          = 19,
       
    65 	TERM8          = 20,
       
    66 	HELIPAD3       = 21,
       
    67 	HELIPAD4       = 22
    60 };
    68 };
       
    69 
       
    70 // this maps the terminal to its corresponding state and block flag
       
    71 // currently set for 10 terms, 4 helipads
       
    72 static const byte _airport_terminal_state[] = {2, 3, 4, 5, 6, 7, 19, 20, 0, 0, 8, 9, 21, 22};
       
    73 static const byte _airport_terminal_flag[] =  {0, 1, 2, 3, 4, 5, 22, 23, 0, 0, 6, 7, 24, 25};
    61 
    74 
    62 /* Movement Blocks on Airports */
    75 /* Movement Blocks on Airports */
    63 // blocks (eg_airport_flags)
    76 // blocks (eg_airport_flags)
    64 enum {
    77 enum {
    65 	TERM1_block              = 1 << 0,
    78 	TERM1_block              = 1 << 0,
    84 	TERM_GROUP2_ENTER1_block = 1 << 17,
    97 	TERM_GROUP2_ENTER1_block = 1 << 17,
    85 	TERM_GROUP2_ENTER2_block = 1 << 18,
    98 	TERM_GROUP2_ENTER2_block = 1 << 18,
    86 	TERM_GROUP2_EXIT1_block  = 1 << 19,
    99 	TERM_GROUP2_EXIT1_block  = 1 << 19,
    87 	TERM_GROUP2_EXIT2_block  = 1 << 20,
   100 	TERM_GROUP2_EXIT2_block  = 1 << 20,
    88 	PRE_HELIPAD_block        = 1 << 21,
   101 	PRE_HELIPAD_block        = 1 << 21,
    89 	NOTHING_block            = 1 << 30,
   102 
       
   103 // blocks for new airports
       
   104 	TERM7_block              = 1 << 22,
       
   105 	TERM8_block              = 1 << 23,
       
   106 	TERM9_block              = 1 << 24,
       
   107 	HELIPAD3_block           = 1 << 24,
       
   108 	TERM10_block             = 1 << 25,
       
   109 	HELIPAD4_block           = 1 << 25,
       
   110 	HANGAR1_AREA_block       = 1 << 26,
       
   111 	OUT_WAY2_block           = 1 << 27,
       
   112 	IN_WAY2_block            = 1 << 28,
       
   113 	RUNWAY_IN2_block         = 1 << 29,
       
   114 	RUNWAY_OUT2_block        = 1 << 10,   // note re-uses TAXIWAY_BUSY
       
   115 	HELIPAD_GROUP_block      = 1 << 13,   // note re-uses AIRPORT_ENTRANCE
       
   116 	OUT_WAY_block2           = 1 << 31,
       
   117 // end of new blocks
       
   118 
       
   119 	NOTHING_block            = 1 << 30
    90 };
   120 };
    91 
   121 
    92 typedef struct AirportMovingData {
   122 typedef struct AirportMovingData {
    93 	int x,y;
   123 	int x,y;
    94 	byte flag;
   124 	byte flag;