changeset 15856:33f7ff76add8 draft

(svn r20538) -Codechange: introduce a few macros to initialize the airport classes
author yexo <yexo@openttd.org>
date Wed, 18 Aug 2010 01:19:03 +0000
parents 8071bb199a2c
children 9a9ec79c5d25
files src/airport.cpp src/table/airport_movement.h
diffstat 2 files changed, 26 insertions(+), 108 deletions(-) [+]
line wrap: on
line diff
--- 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"
 
--- a/src/table/airport_movement.h
+++ b/src/table/airport_movement.h
@@ -103,7 +103,7 @@
 };
 
 /* 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 @@
 
 
 /* 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 @@
 	{ 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} };