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; |