summaryrefslogtreecommitdiff
path: root/src/newgrf_airport.h
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2010-03-05 23:21:35 +0000
committeryexo <yexo@openttd.org>2010-03-05 23:21:35 +0000
commita71462bb94e0b1551cdf74734d205eb807915bf7 (patch)
tree628217c62ed5a163f964920ab534a87f20692a09 /src/newgrf_airport.h
parentd03d990f33d9224295e90a1111394206a7cbfd42 (diff)
downloadopenttd-a71462bb94e0b1551cdf74734d205eb807915bf7.tar.xz
(svn r19325) -Codechange: introduce airport classes and split the default airports in 4 classes
Diffstat (limited to 'src/newgrf_airport.h')
-rw-r--r--src/newgrf_airport.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/newgrf_airport.h b/src/newgrf_airport.h
index bdbaafd64..52bdd2e99 100644
--- a/src/newgrf_airport.h
+++ b/src/newgrf_airport.h
@@ -14,6 +14,7 @@
#include "date_type.h"
#include "map_type.h"
+#include "strings_type.h"
/* Copy from station_map.h */
typedef byte StationGfx;
@@ -23,6 +24,19 @@ struct AirportTileTable {
StationGfx gfx;
};
+/** List of default airport classes. */
+enum AirportClassID {
+ APC_BEGIN = 0, ///< Lowest valid airport class id
+ APC_SMALL = 0, ///< id for small airports class
+ APC_LARGE, ///< id for large airports class
+ APC_HUB, ///< id for hub airports class
+ APC_HELIPORT, ///< id for heliports
+ APC_MAX = 16, ///< maximum number of airport classes
+};
+
+/** Allow incrementing of AirportClassID variables */
+DECLARE_POSTFIX_INCREMENT(AirportClassID);
+
/** TTDP airport types. Used to map our types to TTDPatch's */
enum TTDPAirportType {
ATP_TTDP_SMALL, ///< Same as AT_SMALL
@@ -45,6 +59,7 @@ struct AirportSpec {
Year min_year; ///< first year the airport is available
Year max_year; ///< last year the airport is available
TTDPAirportType ttd_airport_type; ///< ttdpatch airport type (Small/Large/Helipad/Oilrig)
+ AirportClassID aclass; ///< the class to which this airport type belongs
static const AirportSpec *Get(byte type);
static AirportSpec *GetWithoutOverride(byte type);
@@ -60,5 +75,23 @@ private:
static AirportSpec specs[NUM_AIRPORTS];
};
+/** Information related to airport classes. */
+struct AirportClass {
+ uint32 id; ///< ID of this class, e.g. 'SMAL', 'LARG', 'HUB_', 'HELI', etc.
+ StringID name; ///< name of this class
+ uint airports; ///< number of airports in this class
+ AirportSpec **spec; ///< array of airport specifications
+};
+
+void ResetAirportClasses();
+AirportClassID AllocateAirportClass(uint32 cls);
+void SetAirportClassName(AirportClassID id, StringID name);
+StringID GetAirportClassName(AirportClassID id);
+
+uint GetNumAirportClasses();
+uint GetNumAirportsInClass(AirportClassID id);
+
+void BindAirportSpecs();
+const AirportSpec *GetAirportSpecFromClass(AirportClassID aclass, uint airport);
#endif /* NEWGRF_AIRPORT_H */