mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-04 05:15:21 +00:00
(svn r19327) -Codechange: make the oilrig a part of the original airports array so some special cases can be removed
This commit is contained in:
parent
c42e2a9bfc
commit
585b036c90
@ -22,7 +22,7 @@
|
||||
|
||||
/* static */ bool AIAirport::IsAirportInformationAvailable(AirportType type)
|
||||
{
|
||||
return type >= 0 && type < (AirportType)NUM_AIRPORTS;
|
||||
return type >= 0 && type < (AirportType)NUM_AIRPORTS && AirportSpec::Get(type)->enabled;
|
||||
}
|
||||
|
||||
/* static */ Money AIAirport::GetPrice(AirportType type)
|
||||
|
@ -35,8 +35,8 @@ enum {
|
||||
AT_HELIDEPOT = 6,
|
||||
AT_INTERCON = 7,
|
||||
AT_HELISTATION = 8,
|
||||
NUM_AIRPORTS = 9,
|
||||
AT_OILRIG = 9,
|
||||
NUM_AIRPORTS = 10,
|
||||
AT_DUMMY = 255
|
||||
};
|
||||
|
||||
|
@ -20,8 +20,7 @@
|
||||
|
||||
static AirportClass _airport_classes[APC_MAX];
|
||||
|
||||
AirportSpec AirportSpec::dummy = {NULL, NULL, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR, STR_NULL, ATP_TTDP_LARGE, APC_BEGIN};
|
||||
AirportSpec AirportSpec::oilrig = {NULL, NULL, 0, 1, 1, 0, 4, MIN_YEAR, MIN_YEAR, STR_NULL, ATP_TTDP_OILRIG, APC_BEGIN};
|
||||
AirportSpec AirportSpec::dummy = {NULL, NULL, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR, STR_NULL, ATP_TTDP_LARGE, APC_BEGIN, false};
|
||||
|
||||
AirportSpec AirportSpec::specs[NUM_AIRPORTS];
|
||||
|
||||
@ -33,7 +32,6 @@ AirportSpec AirportSpec::specs[NUM_AIRPORTS];
|
||||
*/
|
||||
/* static */ const AirportSpec *AirportSpec::Get(byte type)
|
||||
{
|
||||
if (type == AT_OILRIG) return &oilrig;
|
||||
assert(type < lengthof(AirportSpec::specs));
|
||||
return &AirportSpec::specs[type];
|
||||
}
|
||||
@ -46,13 +44,13 @@ AirportSpec AirportSpec::specs[NUM_AIRPORTS];
|
||||
*/
|
||||
/* static */ AirportSpec *AirportSpec::GetWithoutOverride(byte type)
|
||||
{
|
||||
if (type == AT_OILRIG) return &oilrig;
|
||||
assert(type < lengthof(AirportSpec::specs));
|
||||
return &AirportSpec::specs[type];
|
||||
}
|
||||
|
||||
bool AirportSpec::IsAvailable() const
|
||||
{
|
||||
if (!this->enabled) return false;
|
||||
if (_cur_year < this->min_year) return false;
|
||||
if (_settings_game.station.never_expire_airports) return true;
|
||||
return _cur_year <= this->max_year;
|
||||
@ -156,7 +154,7 @@ void BindAirportSpecs()
|
||||
{
|
||||
for (int i = 0; i < NUM_AIRPORTS; i++) {
|
||||
AirportSpec *as = AirportSpec::GetWithoutOverride(i);
|
||||
BindAirportSpecToClass(as);
|
||||
if (as->enabled) BindAirportSpecToClass(as);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -61,6 +61,8 @@ struct AirportSpec {
|
||||
StringID name; ///< name of this airport
|
||||
TTDPAirportType ttd_airport_type; ///< ttdpatch airport type (Small/Large/Helipad/Oilrig)
|
||||
AirportClassID aclass; ///< the class to which this airport type belongs
|
||||
/* Newgrf data */
|
||||
bool enabled; ///< entity still avaible (by default true).newgrf can disable it, though
|
||||
|
||||
static const AirportSpec *Get(byte type);
|
||||
static AirportSpec *GetWithoutOverride(byte type);
|
||||
|
@ -377,16 +377,16 @@ static AirportTileTable *_tile_table_helistation[] = {
|
||||
#undef MKEND
|
||||
|
||||
/** General AirportSpec definition. */
|
||||
#define AS_GENERIC(att, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, ttdpatch_type, class_id, name) \
|
||||
{att, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, name, ttdpatch_type, class_id}
|
||||
#define AS_GENERIC(att, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, ttdpatch_type, class_id, name, enabled) \
|
||||
{att, depot_tbl, num_depots, size_x, size_y, noise, catchment, min_year, max_year, name, ttdpatch_type, class_id, enabled}
|
||||
|
||||
/** AirportSpec definition for airports without any depot. */
|
||||
#define AS_ND(ap_name, size_x, size_y, min_year, max_year, catchment, noise, ttdpatch_type, class_id, name) \
|
||||
AS_GENERIC(_tile_table_##ap_name, NULL, 0, size_x, size_y, noise, catchment, min_year, max_year, ttdpatch_type, class_id, name)
|
||||
AS_GENERIC(_tile_table_##ap_name, NULL, 0, size_x, size_y, noise, catchment, min_year, max_year, ttdpatch_type, class_id, name, true)
|
||||
|
||||
/** AirportSpec definition for airports with at least one depot. */
|
||||
#define AS(ap_name, size_x, size_y, min_year, max_year, catchment, noise, ttdpatch_type, class_id, name) \
|
||||
AS_GENERIC(_tile_table_##ap_name, _airport_depots_##ap_name, lengthof(_airport_depots_##ap_name), size_x, size_y, noise, catchment, min_year, max_year, ttdpatch_type, class_id, name)
|
||||
AS_GENERIC(_tile_table_##ap_name, _airport_depots_##ap_name, lengthof(_airport_depots_##ap_name), size_x, size_y, noise, catchment, min_year, max_year, ttdpatch_type, class_id, name, true)
|
||||
|
||||
/* The helidepot and helistation have ATP_TTDP_SMALL because they are at ground level */
|
||||
extern const AirportSpec _origin_airport_specs[] = {
|
||||
@ -399,6 +399,7 @@ extern const AirportSpec _origin_airport_specs[] = {
|
||||
AS(helidepot, 2, 2, 1976, MAX_YEAR, 4, 2, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELIDEPOT),
|
||||
AS(intercontinental, 9, 11, 2002, MAX_YEAR, 10, 25, ATP_TTDP_LARGE, APC_HUB, STR_AIRPORT_INTERCONTINENTAL),
|
||||
AS(helistation, 4, 2, 1980, MAX_YEAR, 4, 3, ATP_TTDP_SMALL, APC_HELIPORT, STR_AIRPORT_HELISTATION),
|
||||
AS_GENERIC(NULL, NULL, 0, 1, 1, 0, 4, 0, 0, ATP_TTDP_OILRIG, APC_HELIPORT, STR_NULL, false),
|
||||
};
|
||||
|
||||
assert_compile(NUM_AIRPORTS == lengthof(_origin_airport_specs));
|
||||
|
Loading…
Reference in New Issue
Block a user