diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj index d89b43bfa3..d7a5ffc523 100644 --- a/projects/openttd_vs80.vcproj +++ b/projects/openttd_vs80.vcproj @@ -1147,6 +1147,10 @@ RelativePath=".\..\src\newgrf.h" > + + @@ -3175,6 +3179,10 @@ RelativePath=".\..\src\newgrf.cpp" > + + diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj index 5f90636d64..9021d62940 100644 --- a/projects/openttd_vs90.vcproj +++ b/projects/openttd_vs90.vcproj @@ -1144,6 +1144,10 @@ RelativePath=".\..\src\newgrf.h" > + + @@ -3172,6 +3176,10 @@ RelativePath=".\..\src\newgrf.cpp" > + + diff --git a/source.list b/source.list index 381e9e540a..adae228ba7 100644 --- a/source.list +++ b/source.list @@ -196,6 +196,7 @@ network/network_server.h network/network_type.h network/network_udp.h newgrf.h +newgrf_airport.h newgrf_airporttiles.h newgrf_callbacks.h newgrf_canal.h @@ -742,6 +743,7 @@ spriteloader/spriteloader.hpp # NewGRF newgrf.cpp +newgrf_airport.cpp newgrf_airporttiles.cpp newgrf_canal.cpp newgrf_cargo.cpp diff --git a/src/airport.cpp b/src/airport.cpp index 660b34ee84..14b860ec3e 100644 --- a/src/airport.cpp +++ b/src/airport.cpp @@ -12,30 +12,15 @@ #include "stdafx.h" #include "debug.h" #include "airport.h" +#include "map_type.h" #include "table/airport_movement.h" #include "core/alloc_func.hpp" #include "date_func.h" #include "settings_type.h" +#include "newgrf_airport.h" #include "table/airporttile_ids.h" #include "table/airport_defaults.h" -AirportSpec AirportSpec::dummy = {NULL, NULL, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR}; -AirportSpec AirportSpec::oilrig = {NULL, NULL, 0, 1, 1, 0, 4, MIN_YEAR, MIN_YEAR}; - - -/** - * Retrieve airport spec for the given airport - * @param type index of airport - * @return A pointer to the corresponding AirportSpec - */ -/* static */ const AirportSpec *AirportSpec::Get(byte type) -{ - if (type == AT_OILRIG) return &oilrig; - assert(type < NUM_AIRPORTS); - extern const AirportSpec _origin_airport_specs[]; - return &_origin_airport_specs[type]; -} - /* Uncomment this to print out a full report of the airport-structure * You should either use * - true: full-report, print out every state and choice with string-names @@ -269,13 +254,6 @@ AirportFTAClass::~AirportFTAClass() free(layout); } -bool AirportSpec::IsAvailable() const -{ - if (_cur_year < this->min_year) return false; - if (_settings_game.station.never_expire_airports) return true; - return _cur_year <= this->max_year; -} - /** Get the number of elements of a source Airport state automata * Since it is actually just a big array of AirportFTA types, we only * know one element from the other by differing 'position' identifiers */ diff --git a/src/airport.h b/src/airport.h index ffd453d0d0..8f640704ab 100644 --- a/src/airport.h +++ b/src/airport.h @@ -13,8 +13,6 @@ #define AIRPORT_H #include "direction_type.h" -#include "map_type.h" -#include "date_type.h" /** Some airport-related constants */ enum { @@ -42,36 +40,6 @@ enum { 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 const AirportSpec *Get(byte type); - - bool IsAvailable() const; - - static AirportSpec dummy; - static AirportSpec oilrig; -}; - enum { AMED_NOSPDCLAMP = 1 << 0, AMED_TAKEOFF = 1 << 1, diff --git a/src/airport_gui.cpp b/src/airport_gui.cpp index e3a9b47558..0fbfa4b543 100644 --- a/src/airport_gui.cpp +++ b/src/airport_gui.cpp @@ -23,6 +23,7 @@ #include "tilehighlight_func.h" #include "company_base.h" #include "station_type.h" +#include "newgrf_airport.h" #include "table/sprites.h" #include "table/strings.h" diff --git a/src/newgrf_airport.cpp b/src/newgrf_airport.cpp new file mode 100644 index 0000000000..33fb3ed5df --- /dev/null +++ b/src/newgrf_airport.cpp @@ -0,0 +1,39 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file newgrf_airport.h NewGRF handling of airports. */ + +#include "stdafx.h" +#include "airport.h" +#include "newgrf_airport.h" +#include "date_func.h" +#include "settings_type.h" + +AirportSpec AirportSpec::dummy = {NULL, NULL, 0, 0, 0, 0, 0, MIN_YEAR, MIN_YEAR}; +AirportSpec AirportSpec::oilrig = {NULL, NULL, 0, 1, 1, 0, 4, MIN_YEAR, MIN_YEAR}; + +/** + * Retrieve airport spec for the given airport + * @param type index of airport + * @return A pointer to the corresponding AirportSpec + */ +/* static */ const AirportSpec *AirportSpec::Get(byte type) +{ + if (type == AT_OILRIG) return &oilrig; + assert(type < NUM_AIRPORTS); + extern const AirportSpec _origin_airport_specs[]; + return &_origin_airport_specs[type]; +} + +bool AirportSpec::IsAvailable() const +{ + if (_cur_year < this->min_year) return false; + if (_settings_game.station.never_expire_airports) return true; + return _cur_year <= this->max_year; +} diff --git a/src/newgrf_airport.h b/src/newgrf_airport.h new file mode 100644 index 0000000000..c113726201 --- /dev/null +++ b/src/newgrf_airport.h @@ -0,0 +1,49 @@ +/* $Id$ */ + +/* + * This file is part of OpenTTD. + * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. + * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . + */ + +/** @file newgrf_airport.h NewGRF handling of airports. */ + +#ifndef NEWGRF_AIRPORT_H +#define NEWGRF_AIRPORT_H + +#include "date_type.h" +#include "map_type.h" + +/* 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 const AirportSpec *Get(byte type); + + bool IsAvailable() const; + + static AirportSpec dummy; + static AirportSpec oilrig; +}; + + +#endif /* NEWGRF_AIRPORT_H */ diff --git a/src/station_base.h b/src/station_base.h index 222bb58931..e3aa8b7268 100644 --- a/src/station_base.h +++ b/src/station_base.h @@ -14,6 +14,7 @@ #include "base_station_base.h" #include "airport.h" +#include "newgrf_airport.h" #include "cargopacket.h" #include "industry_type.h" diff --git a/src/table/airport_defaults.h b/src/table/airport_defaults.h index c1be1da0b5..3bfd73cf39 100644 --- a/src/table/airport_defaults.h +++ b/src/table/airport_defaults.h @@ -388,7 +388,7 @@ static AirportTileTable *_tile_table_helistation[] = { #define AS(ap_name, size_x, size_y, min_year, max_year, catchment, noise) \ 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) -static const AirportSpec _origin_airport_specs[] = { +extern const AirportSpec _origin_airport_specs[] = { AS(country, 4, 3, 0, 1959, 4, 3), AS(city, 6, 6, 1955, MAX_YEAR, 5, 5), AS_ND(heliport, 1, 1, 1963, MAX_YEAR, 4, 1),