00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef AIRPORT_DEFAULTS_H
00013 #define AIRPORT_DEFAULTS_H
00014
00023 #define MK(x, y, m) {{x, y}, m}
00024
00028 #define MKEND {{-0x80, 0}, 0}
00029
00031 static AirportTileTable _tile_table_country_0[] = {
00032 MK(0, 0, APT_SMALL_BUILDING_1),
00033 MK(1, 0, APT_SMALL_BUILDING_2),
00034 MK(2, 0, APT_SMALL_BUILDING_3),
00035 MK(3, 0, APT_SMALL_DEPOT_SE),
00036 MK(0, 1, APT_GRASS_FENCE_NE_FLAG),
00037 MK(1, 1, APT_GRASS_1),
00038 MK(2, 1, APT_GRASS_2),
00039 MK(3, 1, APT_GRASS_FENCE_SW),
00040 MK(0, 2, APT_RUNWAY_SMALL_FAR_END),
00041 MK(1, 2, APT_RUNWAY_SMALL_MIDDLE),
00042 MK(2, 2, APT_RUNWAY_SMALL_MIDDLE),
00043 MK(3, 2, APT_RUNWAY_SMALL_NEAR_END),
00044 MKEND
00045 };
00046
00047 static AirportTileTable *_tile_table_country[] = {
00048 _tile_table_country_0,
00049 };
00050
00052 static AirportTileTable _tile_table_commuter_0[] = {
00053 MK(0, 0, APT_TOWER),
00054 MK(1, 0, APT_BUILDING_3),
00055 MK(2, 0, APT_HELIPAD_2_FENCE_NW),
00056 MK(3, 0, APT_HELIPAD_2_FENCE_NW),
00057 MK(4, 0, APT_DEPOT_SE),
00058 MK(0, 1, APT_APRON_FENCE_NE),
00059 MK(1, 1, APT_APRON),
00060 MK(2, 1, APT_APRON),
00061 MK(3, 1, APT_APRON),
00062 MK(4, 1, APT_APRON_FENCE_SW),
00063 MK(0, 2, APT_APRON_FENCE_NE),
00064 MK(1, 2, APT_STAND),
00065 MK(2, 2, APT_STAND),
00066 MK(3, 2, APT_STAND),
00067 MK(4, 2, APT_APRON_FENCE_SW),
00068 MK(0, 3, APT_RUNWAY_END_FENCE_SE),
00069 MK(1, 3, APT_RUNWAY_2),
00070 MK(2, 3, APT_RUNWAY_2),
00071 MK(3, 3, APT_RUNWAY_2),
00072 MK(4, 3, APT_RUNWAY_END_FENCE_SE),
00073 MKEND
00074 };
00075
00076 static AirportTileTable *_tile_table_commuter[] = {
00077 _tile_table_commuter_0,
00078 };
00079
00081 static AirportTileTable _tile_table_city_0[] = {
00082 MK(0, 0, APT_BUILDING_1),
00083 MK(1, 0, APT_APRON_FENCE_NW),
00084 MK(2, 0, APT_STAND_1),
00085 MK(3, 0, APT_APRON_FENCE_NW),
00086 MK(4, 0, APT_APRON_FENCE_NW),
00087 MK(5, 0, APT_DEPOT_SE),
00088 MK(0, 1, APT_BUILDING_2),
00089 MK(1, 1, APT_PIER),
00090 MK(2, 1, APT_ROUND_TERMINAL),
00091 MK(3, 1, APT_STAND_PIER_NE),
00092 MK(4, 1, APT_APRON),
00093 MK(5, 1, APT_APRON_FENCE_SW),
00094 MK(0, 2, APT_BUILDING_3),
00095 MK(1, 2, APT_STAND),
00096 MK(2, 2, APT_PIER_NW_NE),
00097 MK(3, 2, APT_APRON_S),
00098 MK(4, 2, APT_APRON_HOR),
00099 MK(5, 2, APT_APRON_N_FENCE_SW),
00100 MK(0, 3, APT_RADIO_TOWER_FENCE_NE),
00101 MK(1, 3, APT_APRON_W),
00102 MK(2, 3, APT_APRON_VER_CROSSING_S),
00103 MK(3, 3, APT_APRON_HOR_CROSSING_E),
00104 MK(4, 3, APT_ARPON_N),
00105 MK(5, 3, APT_TOWER_FENCE_SW),
00106 MK(0, 4, APT_EMPTY_FENCE_NE),
00107 MK(1, 4, APT_APRON_S),
00108 MK(2, 4, APT_APRON_HOR_CROSSING_W),
00109 MK(3, 4, APT_APRON_VER_CROSSING_N),
00110 MK(4, 4, APT_APRON_E),
00111 MK(5, 4, APT_RADAR_GRASS_FENCE_SW),
00112 MK(0, 5, APT_RUNWAY_END_FENCE_SE),
00113 MK(1, 5, APT_RUNWAY_1),
00114 MK(2, 5, APT_RUNWAY_2),
00115 MK(3, 5, APT_RUNWAY_3),
00116 MK(4, 5, APT_RUNWAY_4),
00117 MK(5, 5, APT_RUNWAY_END_FENCE_SE),
00118 MKEND
00119 };
00120
00121 static AirportTileTable *_tile_table_city[] = {
00122 _tile_table_city_0,
00123 };
00124
00126 static AirportTileTable _tile_table_metropolitan_0[] = {
00127 MK(0, 0, APT_BUILDING_1),
00128 MK(1, 0, APT_APRON_FENCE_NW),
00129 MK(2, 0, APT_STAND_1),
00130 MK(3, 0, APT_APRON_FENCE_NW),
00131 MK(4, 0, APT_APRON_FENCE_NW),
00132 MK(5, 0, APT_DEPOT_SE),
00133 MK(0, 1, APT_BUILDING_2),
00134 MK(1, 1, APT_PIER),
00135 MK(2, 1, APT_ROUND_TERMINAL),
00136 MK(3, 1, APT_STAND_PIER_NE),
00137 MK(4, 1, APT_APRON),
00138 MK(5, 1, APT_APRON_FENCE_SW),
00139 MK(0, 2, APT_BUILDING_3),
00140 MK(1, 2, APT_STAND),
00141 MK(2, 2, APT_PIER_NW_NE),
00142 MK(3, 2, APT_APRON_S),
00143 MK(4, 2, APT_APRON_HOR),
00144 MK(5, 2, APT_APRON_N_FENCE_SW),
00145 MK(0, 3, APT_RADAR_FENCE_NE),
00146 MK(1, 3, APT_APRON),
00147 MK(2, 3, APT_APRON),
00148 MK(3, 3, APT_APRON),
00149 MK(4, 3, APT_APRON),
00150 MK(5, 3, APT_TOWER_FENCE_SW),
00151 MK(0, 4, APT_RUNWAY_END),
00152 MK(1, 4, APT_RUNWAY_5),
00153 MK(2, 4, APT_RUNWAY_5),
00154 MK(3, 4, APT_RUNWAY_5),
00155 MK(4, 4, APT_RUNWAY_5),
00156 MK(5, 4, APT_RUNWAY_END),
00157 MK(0, 5, APT_RUNWAY_END_FENCE_SE),
00158 MK(1, 5, APT_RUNWAY_2),
00159 MK(2, 5, APT_RUNWAY_2),
00160 MK(3, 5, APT_RUNWAY_2),
00161 MK(4, 5, APT_RUNWAY_2),
00162 MK(5, 5, APT_RUNWAY_END_FENCE_SE),
00163 MKEND
00164 };
00165
00166 static AirportTileTable *_tile_table_metropolitan[] = {
00167 _tile_table_metropolitan_0,
00168 };
00169
00171 static AirportTileTable _tile_table_international_0[] = {
00172 MK(0, 0, APT_RUNWAY_END_FENCE_NW),
00173 MK(1, 0, APT_RUNWAY_FENCE_NW),
00174 MK(2, 0, APT_RUNWAY_FENCE_NW),
00175 MK(3, 0, APT_RUNWAY_FENCE_NW),
00176 MK(4, 0, APT_RUNWAY_FENCE_NW),
00177 MK(5, 0, APT_RUNWAY_FENCE_NW),
00178 MK(6, 0, APT_RUNWAY_END_FENCE_NW),
00179 MK(0, 1, APT_RADIO_TOWER_FENCE_NE),
00180 MK(1, 1, APT_APRON),
00181 MK(2, 1, APT_APRON),
00182 MK(3, 1, APT_APRON),
00183 MK(4, 1, APT_APRON),
00184 MK(5, 1, APT_APRON),
00185 MK(6, 1, APT_DEPOT_SE),
00186 MK(0, 2, APT_BUILDING_3),
00187 MK(1, 2, APT_APRON),
00188 MK(2, 2, APT_STAND),
00189 MK(3, 2, APT_BUILDING_2),
00190 MK(4, 2, APT_STAND),
00191 MK(5, 2, APT_APRON),
00192 MK(6, 2, APT_APRON_FENCE_SW),
00193 MK(0, 3, APT_DEPOT_SE),
00194 MK(1, 3, APT_APRON),
00195 MK(2, 3, APT_STAND),
00196 MK(3, 3, APT_BUILDING_2),
00197 MK(4, 3, APT_STAND),
00198 MK(5, 3, APT_APRON),
00199 MK(6, 3, APT_HELIPAD_1),
00200 MK(0, 4, APT_APRON_FENCE_NE),
00201 MK(1, 4, APT_APRON),
00202 MK(2, 4, APT_STAND),
00203 MK(3, 4, APT_TOWER),
00204 MK(4, 4, APT_STAND),
00205 MK(5, 4, APT_APRON),
00206 MK(6, 4, APT_HELIPAD_1),
00207 MK(0, 5, APT_APRON_FENCE_NE),
00208 MK(1, 5, APT_APRON),
00209 MK(2, 5, APT_APRON),
00210 MK(3, 5, APT_APRON),
00211 MK(4, 5, APT_APRON),
00212 MK(5, 5, APT_APRON),
00213 MK(6, 5, APT_RADAR_FENCE_SW),
00214 MK(0, 6, APT_RUNWAY_END_FENCE_SE),
00215 MK(1, 6, APT_RUNWAY_2),
00216 MK(2, 6, APT_RUNWAY_2),
00217 MK(3, 6, APT_RUNWAY_2),
00218 MK(4, 6, APT_RUNWAY_2),
00219 MK(5, 6, APT_RUNWAY_2),
00220 MK(6, 6, APT_RUNWAY_END_FENCE_SE),
00221 MKEND
00222 };
00223
00224 static AirportTileTable *_tile_table_international[] = {
00225 _tile_table_international_0,
00226 };
00227
00229 static AirportTileTable _tile_table_intercontinental_0[] = {
00230 MK(0, 0, APT_RADAR_FENCE_NE),
00231 MK(1, 0, APT_RUNWAY_END_FENCE_NE_NW),
00232 MK(2, 0, APT_RUNWAY_FENCE_NW),
00233 MK(3, 0, APT_RUNWAY_FENCE_NW),
00234 MK(4, 0, APT_RUNWAY_FENCE_NW),
00235 MK(5, 0, APT_RUNWAY_FENCE_NW),
00236 MK(6, 0, APT_RUNWAY_FENCE_NW),
00237 MK(7, 0, APT_RUNWAY_FENCE_NW),
00238 MK(8, 0, APT_RUNWAY_END_FENCE_NW_SW),
00239 MK(0, 1, APT_RUNWAY_END_FENCE_NE_NW),
00240 MK(1, 1, APT_RUNWAY_2),
00241 MK(2, 1, APT_RUNWAY_2),
00242 MK(3, 1, APT_RUNWAY_2),
00243 MK(4, 1, APT_RUNWAY_2),
00244 MK(5, 1, APT_RUNWAY_2),
00245 MK(6, 1, APT_RUNWAY_2),
00246 MK(7, 1, APT_RUNWAY_END_FENCE_SE_SW),
00247 MK(8, 1, APT_APRON_FENCE_NE_SW),
00248 MK(0, 2, APT_APRON_FENCE_NE_SW),
00249 MK(1, 2, APT_EMPTY),
00250 MK(2, 2, APT_APRON_FENCE_NE),
00251 MK(3, 2, APT_APRON),
00252 MK(4, 2, APT_APRON),
00253 MK(5, 2, APT_APRON),
00254 MK(6, 2, APT_APRON),
00255 MK(7, 2, APT_RADIO_TOWER_FENCE_NE),
00256 MK(8, 2, APT_APRON_FENCE_NE_SW),
00257 MK(0, 3, APT_APRON_FENCE_NE),
00258 MK(1, 3, APT_APRON_HALF_EAST),
00259 MK(2, 3, APT_APRON_FENCE_NE),
00260 MK(3, 3, APT_TOWER),
00261 MK(4, 3, APT_HELIPAD_2),
00262 MK(5, 3, APT_HELIPAD_2),
00263 MK(6, 3, APT_APRON),
00264 MK(7, 3, APT_APRON_FENCE_NW),
00265 MK(8, 3, APT_APRON_FENCE_SW),
00266 MK(0, 4, APT_APRON_FENCE_NE),
00267 MK(1, 4, APT_APRON),
00268 MK(2, 4, APT_APRON),
00269 MK(3, 4, APT_STAND),
00270 MK(4, 4, APT_BUILDING_1),
00271 MK(5, 4, APT_STAND),
00272 MK(6, 4, APT_APRON),
00273 MK(7, 4, APT_LOW_BUILDING),
00274 MK(8, 4, APT_DEPOT_SE),
00275 MK(0, 5, APT_DEPOT_SE),
00276 MK(1, 5, APT_LOW_BUILDING),
00277 MK(2, 5, APT_APRON),
00278 MK(3, 5, APT_STAND),
00279 MK(4, 5, APT_BUILDING_2),
00280 MK(5, 5, APT_STAND),
00281 MK(6, 5, APT_APRON),
00282 MK(7, 5, APT_APRON),
00283 MK(8, 5, APT_APRON_FENCE_SW),
00284 MK(0, 6, APT_APRON_FENCE_NE),
00285 MK(1, 6, APT_APRON),
00286 MK(2, 6, APT_APRON),
00287 MK(3, 6, APT_STAND),
00288 MK(4, 6, APT_BUILDING_3),
00289 MK(5, 6, APT_STAND),
00290 MK(6, 6, APT_APRON),
00291 MK(7, 6, APT_APRON),
00292 MK(8, 6, APT_APRON_FENCE_SW),
00293 MK(0, 7, APT_APRON_FENCE_NE),
00294 MK(1, 7, APT_APRON_FENCE_SE),
00295 MK(2, 7, APT_APRON),
00296 MK(3, 7, APT_STAND),
00297 MK(4, 7, APT_ROUND_TERMINAL),
00298 MK(5, 7, APT_STAND),
00299 MK(6, 7, APT_APRON_FENCE_SW),
00300 MK(7, 7, APT_APRON_HALF_WEST),
00301 MK(8, 7, APT_APRON_FENCE_SW),
00302 MK(0, 8, APT_APRON_FENCE_NE),
00303 MK(1, 8, APT_GRASS_FENCE_NE_FLAG_2),
00304 MK(2, 8, APT_APRON_FENCE_NE),
00305 MK(3, 8, APT_APRON),
00306 MK(4, 8, APT_APRON),
00307 MK(5, 8, APT_APRON),
00308 MK(6, 8, APT_APRON_FENCE_SW),
00309 MK(7, 8, APT_EMPTY),
00310 MK(8, 8, APT_APRON_FENCE_NE_SW),
00311 MK(0, 9, APT_APRON_FENCE_NE),
00312 MK(1, 9, APT_RUNWAY_END_FENCE_NE_NW),
00313 MK(2, 9, APT_RUNWAY_FENCE_NW),
00314 MK(3, 9, APT_RUNWAY_FENCE_NW),
00315 MK(4, 9, APT_RUNWAY_FENCE_NW),
00316 MK(5, 9, APT_RUNWAY_FENCE_NW),
00317 MK(6, 9, APT_RUNWAY_FENCE_NW),
00318 MK(7, 9, APT_RUNWAY_FENCE_NW),
00319 MK(8, 9, APT_RUNWAY_END_FENCE_SE_SW),
00320 MK(0, 10, APT_RUNWAY_END_FENCE_NE_SE),
00321 MK(1, 10, APT_RUNWAY_2),
00322 MK(2, 10, APT_RUNWAY_2),
00323 MK(3, 10, APT_RUNWAY_2),
00324 MK(4, 10, APT_RUNWAY_2),
00325 MK(5, 10, APT_RUNWAY_2),
00326 MK(6, 10, APT_RUNWAY_2),
00327 MK(7, 10, APT_RUNWAY_END_FENCE_SE_SW),
00328 MK(8, 10, APT_EMPTY),
00329 MKEND
00330 };
00331
00332 static AirportTileTable *_tile_table_intercontinental[] = {
00333 _tile_table_intercontinental_0,
00334 };
00335
00337 static AirportTileTable _tile_table_heliport_0[] = {
00338 MK(0, 0, APT_HELIPORT),
00339 MKEND
00340 };
00341
00342 static AirportTileTable *_tile_table_heliport[] = {
00343 _tile_table_heliport_0,
00344 };
00345
00347 static AirportTileTable _tile_table_helidepot_0[] = {
00348 MK(0, 0, APT_LOW_BUILDING_FENCE_N),
00349 MK(1, 0, APT_DEPOT_SE),
00350 MK(0, 1, APT_HELIPAD_2_FENCE_NE_SE),
00351 MK(1, 1, APT_APRON_FENCE_SE_SW),
00352 MKEND
00353 };
00354
00355 static AirportTileTable *_tile_table_helidepot[] = {
00356 _tile_table_helidepot_0,
00357 };
00358
00360 static AirportTileTable _tile_table_helistation_0[] = {
00361 MK(0, 0, APT_DEPOT_SE),
00362 MK(1, 0, APT_LOW_BUILDING_FENCE_NW),
00363 MK(2, 0, APT_HELIPAD_3_FENCE_NW),
00364 MK(3, 0, APT_HELIPAD_3_FENCE_NW_SW),
00365 MK(0, 1, APT_APRON_FENCE_NE_SE),
00366 MK(1, 1, APT_APRON_FENCE_SE),
00367 MK(2, 1, APT_APRON_FENCE_SE),
00368 MK(3, 1, APT_HELIPAD_3_FENCE_SE_SW),
00369 MKEND
00370 };
00371
00372 static AirportTileTable *_tile_table_helistation[] = {
00373 _tile_table_helistation_0,
00374 };
00375
00376 static Direction _default_airports_rotation[] = {
00377 DIR_N,
00378 };
00379
00380 #undef MK
00381 #undef MKEND
00382
00384 #define AS_GENERIC(fsm, att, rot, att_len, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, ttdpatch_type, class_id, name, preview, enabled) \
00385 {fsm, att, rot, att_len, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, name, ttdpatch_type, class_id, preview, enabled, GRFFileProps(AT_INVALID)}
00386
00388 #define AS_ND(ap_name, size_x, size_y, min_year, max_year, catchment, noise, ttdpatch_type, class_id, name, preview) \
00389 AS_GENERIC(&_airportfta_##ap_name, _tile_table_##ap_name, _default_airports_rotation, lengthof(_tile_table_##ap_name), NULL, 0, \
00390 size_x, size_y, noise, catchment, min_year, max_year, ttdpatch_type, class_id, name, preview, true)
00391
00393 #define AS(ap_name, size_x, size_y, min_year, max_year, catchment, noise, ttdpatch_type, class_id, name, preview) \
00394 AS_GENERIC(&_airportfta_##ap_name, _tile_table_##ap_name, _default_airports_rotation, lengthof(_tile_table_##ap_name), _airport_depots_##ap_name, lengthof(_airport_depots_##ap_name), \
00395 size_x, size_y, noise, catchment, min_year, max_year, ttdpatch_type, class_id, name, preview, true)
00396
00397
00398 extern const AirportSpec _origin_airport_specs[] = {
00399 AS(country, 4, 3, 0, 1959, 4, 3, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_SMALL, SPR_AIRPORT_PREVIEW_SMALL),
00400 AS(city, 6, 6, 1955, MAX_YEAR, 5, 5, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_CITY, SPR_AIRPORT_PREVIEW_LARGE),
00401 AS_ND(heliport, 1, 1, 1963, MAX_YEAR, 4, 1, ATP_TTDP_HELIPORT, APC_HELIPORT, STR_AIRPORT_HELIPORT, SPR_AIRPORT_PREVIEW_HELIPORT),
00402 AS(metropolitan, 6, 6, 1980, MAX_YEAR, 6, 8, ATP_TTDP_LARGE, APC_LARGE, STR_AIRPORT_METRO, SPR_AIRPORT_PREVIEW_METROPOLITAN),
00403 AS(international, 7, 7, 1990, MAX_YEAR, 8, 17, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERNATIONAL, SPR_AIRPORT_PREVIEW_INTERNATIONAL),
00404 AS(commuter, 5, 4, 1983, MAX_YEAR, 4, 4, ATP_TTDP_SMALL, APC_SMALL, STR_AIRPORT_COMMUTER, SPR_AIRPORT_PREVIEW_COMMUTER),
00405 AS(helidepot, 2, 2, 1976, MAX_YEAR, 4, 2, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELIDEPOT, SPR_AIRPORT_PREVIEW_HELIDEPOT),
00406 AS(intercontinental, 9, 11, 2002, MAX_YEAR, 10, 25, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERCONTINENTAL, SPR_AIRPORT_PREVIEW_INTERCONTINENTAL),
00407 AS(helistation, 4, 2, 1980, MAX_YEAR, 4, 3, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELISTATION, SPR_AIRPORT_PREVIEW_HELISTATION),
00408 AS_GENERIC(&_airportfta_oilrig, NULL, _default_airports_rotation, 0, NULL, 0, 1, 1, 0, 4, 0, 0, ATP_TTDP_OILRIG, APC_HELIPORT, STR_NULL, 0, false),
00409 };
00410
00411 assert_compile(NEW_AIRPORT_OFFSET == lengthof(_origin_airport_specs));
00412
00413 AirportSpec AirportSpec::dummy = AS_GENERIC(&_airportfta_dummy, NULL, _default_airports_rotation, 0, NULL, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR, ATP_TTDP_LARGE, APC_BEGIN, STR_NULL, 0, false);
00414
00415 #undef AS
00416 #undef AS_ND
00417 #undef AS_GENERIC
00418
00419 #endif