diff --git a/src/airport.cpp b/src/airport.cpp --- a/src/airport.cpp +++ b/src/airport.cpp @@ -23,115 +23,31 @@ #include "table/airporttile_ids.h" -static AirportFTAClass _airportfta_dummy( - _airport_moving_data_dummy, - NULL, - 0, - _airport_entries_dummy, - AirportFTAClass::ALL, - _airport_fta_dummy, - 0 - ); - -static AirportFTAClass _airportfta_country( - _airport_moving_data_country, - _airport_terminal_country, - 0, - _airport_entries_country, - AirportFTAClass::ALL | AirportFTAClass::SHORT_STRIP, - _airport_fta_country, - 0 - ); +#define AIRPORT_GENERIC(name, terminals, num_helipads, flags, delta_z) \ + static AirportFTAClass _airportfta_ ## name(_airport_moving_data_ ## name, terminals, \ + num_helipads, _airport_entries_ ## name, flags, _airport_fta_ ## name, delta_z); -static AirportFTAClass _airportfta_city( - _airport_moving_data_town, - _airport_terminal_city, - 0, - _airport_entries_city, - AirportFTAClass::ALL, - _airport_fta_city, - 0 - ); +#define AIRPORT(name, num_helipads, short_strip) \ + AIRPORT_GENERIC(name, _airport_terminal_ ## name, num_helipads, AirportFTAClass::ALL | (short_strip ? AirportFTAClass::SHORT_STRIP : (AirportFTAClass::Flags)0), 0) -static AirportFTAClass _airportfta_oilrig( - _airport_moving_data_oilrig, - NULL, - 1, - _airport_entries_heliport_oilrig, - AirportFTAClass::HELICOPTERS, - _airport_fta_heliport_oilrig, - 54 - ); - -static AirportFTAClass _airportfta_heliport( - _airport_moving_data_heliport, - NULL, - 1, - _airport_entries_heliport_oilrig, - AirportFTAClass::HELICOPTERS, - _airport_fta_heliport_oilrig, - 60 - ); +#define HELIPORT(name, num_helipads, delta_z) \ + AIRPORT_GENERIC(name, NULL, num_helipads, AirportFTAClass::HELICOPTERS, delta_z) -static AirportFTAClass _airportfta_metropolitan( - _airport_moving_data_metropolitan, - _airport_terminal_metropolitan, - 0, - _airport_entries_metropolitan, - AirportFTAClass::ALL, - _airport_fta_metropolitan, - 0 - ); - -static AirportFTAClass _airportfta_international( - _airport_moving_data_international, - _airport_terminal_international, - 2, - _airport_entries_international, - AirportFTAClass::ALL, - _airport_fta_international, - 0 - ); - -static AirportFTAClass _airportfta_commuter( - _airport_moving_data_commuter, - _airport_terminal_commuter, - 2, - _airport_entries_commuter, - AirportFTAClass::ALL | AirportFTAClass::SHORT_STRIP, - _airport_fta_commuter, - 0 - ); +AIRPORT(country, 0, true) +AIRPORT(city, 0, false) +HELIPORT(heliport, 1, 60) +AIRPORT(metropolitan, 0, false) +AIRPORT(international, 2, false) +AIRPORT(commuter, 2, true) +HELIPORT(helidepot, 1, 0) +AIRPORT(intercontinental, 2, false) +HELIPORT(helistation, 3, 0) +HELIPORT(oilrig, 1, 54) +AIRPORT_GENERIC(dummy, NULL, 0, AirportFTAClass::ALL, 0) -static AirportFTAClass _airportfta_helidepot( - _airport_moving_data_helidepot, - NULL, - 1, - _airport_entries_helidepot, - AirportFTAClass::HELICOPTERS, - _airport_fta_helidepot, - 0 - ); - -static AirportFTAClass _airportfta_intercontinental( - _airport_moving_data_intercontinental, - _airport_terminal_intercontinental, - 2, - _airport_entries_intercontinental, - AirportFTAClass::ALL, - _airport_fta_intercontinental, - 0 - ); - -static AirportFTAClass _airportfta_helistation( - _airport_moving_data_helistation, - NULL, - 3, - _airport_entries_helistation, - AirportFTAClass::HELICOPTERS, - _airport_fta_helistation, - 0 - ); +#undef HELIPORT +#undef AIRPORT +#undef AIRPORT_GENERIC #include "table/airport_defaults.h" diff --git a/src/table/airport_movement.h b/src/table/airport_movement.h --- a/src/table/airport_movement.h +++ b/src/table/airport_movement.h @@ -103,7 +103,7 @@ static const AirportMovingData _airport_ }; /* City Airport (large) 6x6 */ -static const AirportMovingData _airport_moving_data_town[] = { +static const AirportMovingData _airport_moving_data_city[] = { AMD( 85, 3, AMED_EXACTPOS, DIR_SE), // 00 In Hangar AMD( 85, 22, 0, DIR_N ), // 01 Taxi to right outside depot AMD( 26, 41, AMED_EXACTPOS, DIR_SW), // 02 Terminal 1 @@ -728,8 +728,8 @@ static const AirportFTAbuildup _airport_ /* heliports, oilrigs don't have depots */ -static const byte _airport_entries_heliport_oilrig[] = { 7, 7, 7, 7 }; -static const AirportFTAbuildup _airport_fta_heliport_oilrig[] = { +static const byte _airport_entries_heliport[] = { 7, 7, 7, 7 }; +static const AirportFTAbuildup _airport_fta_heliport[] = { { 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 }, @@ -742,6 +742,8 @@ static const AirportFTAbuildup _airport_ { 8, FLYING, NOTHING_block, 5 }, { 8, HELILANDING, HELIPAD1_block, 2 }, // landing { MAX_ELEMENTS, 0, 0, 0 } // end marker. DO NOT REMOVE }; +#define _airport_entries_oilrig _airport_entries_heliport +#define _airport_fta_oilrig _airport_fta_heliport /* helidepots */ static const HangarTileTable _airport_depots_helidepot[] = { {{1, 0}, 0} };