diff options
author | yexo <yexo@openttd.org> | 2010-03-05 23:21:35 +0000 |
---|---|---|
committer | yexo <yexo@openttd.org> | 2010-03-05 23:21:35 +0000 |
commit | a71462bb94e0b1551cdf74734d205eb807915bf7 (patch) | |
tree | 628217c62ed5a163f964920ab534a87f20692a09 /src/newgrf_airport.h | |
parent | d03d990f33d9224295e90a1111394206a7cbfd42 (diff) | |
download | openttd-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.h | 33 |
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 */ |