diff src/airport.h @ 14256:82f1453a12d5 draft

(svn r18807) -Codechange: introduce AirportSpec and move several non-statemachine-related variables to there
author yexo <yexo@openttd.org>
date Fri, 15 Jan 2010 12:08:08 +0000
parents bc7926153e19
children a899d4e5ee1a
line wrap: on
line diff
--- a/src/airport.h
+++ b/src/airport.h
@@ -40,6 +40,40 @@
 	AT_DUMMY         = 255
 };
 
+/* Copy from station_map.h */
+typedef byte StationGfx;
+
+struct AirportTileTable {
+	TileIndexDiffC ti;
+	StationGfx gfx;
+};
+
+/**
+ * Defines the data structure for an airport.
+ */
+struct AirportSpec {
+	const AirportTileTable * const *table; ///< list of the tiles composing the airport
+	const TileIndexDiffC *depot_table;     ///< gives the position of the depots on the airports
+	byte nof_depots;                       ///< the number of depots in this airport
+	byte size_x;                           ///< size of airport in x direction
+	byte size_y;                           ///< size of airport in y direction
+	byte noise_level;                      ///< noise that this airport generates
+	byte catchment;                        ///< catchment area of this airport
+	Year min_year;                         ///< first year the airport is available
+	Year max_year;                         ///< last year the airport is available
+
+	static AirportSpec *Get(byte type)
+	{
+		assert(type < NUM_AIRPORTS);
+		extern AirportSpec _origin_airport_specs[NUM_AIRPORTS];
+		return &_origin_airport_specs[type];
+	}
+
+	bool IsAvailable() const;
+
+	static AirportSpec dummy;
+};
+
 
 enum {
 	AMED_NOSPDCLAMP = 1 << 0,
@@ -153,15 +187,7 @@
 		const byte *entry_points,
 		Flags flags,
 		const AirportFTAbuildup *apFA,
-		const TileIndexDiffC *depots,
-		byte nof_depots,
-		uint size_x,
-		uint size_y,
-		uint8 noise_level,
-		byte delta_z,
-		byte catchment,
-		Year first_available,
-		Year last_available
+		byte delta_z
 	);
 
 	~AirportFTAClass();
@@ -172,25 +198,14 @@
 		return &moving_data[position];
 	}
 
-	/** Is this airport available at this date? */
-	bool IsAvailable() const;
-
 	const AirportMovingData *moving_data;
 	struct AirportFTA *layout;            ///< state machine for airport
 	const byte *terminals;
 	const byte *helipads;
-	const TileIndexDiffC *airport_depots; ///< gives the position of the depots on the airports
 	Flags flags;
-	byte nof_depots;                      ///< number of depots this airport has
 	byte nofelements;                     ///< number of positions the airport consists of
 	const byte *entry_points;             ///< when an airplane arrives at this airport, enter it at position entry_point, index depends on direction
-	byte size_x;
-	byte size_y;
-	uint8 noise_level;                    ///< noise that this airport generates
 	byte delta_z;                         ///< Z adjustment for helicopter pads
-	byte catchment;
-	Year first_available;                 ///< the year this airport becomes available
-	Year last_available;                  ///< the year this airport expires
 };
 
 DECLARE_ENUM_AS_BIT_SET(AirportFTAClass::Flags)