summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--projects/openttd_vs80.vcproj8
-rw-r--r--projects/openttd_vs90.vcproj8
-rw-r--r--source.list2
-rw-r--r--src/airport.cpp26
-rw-r--r--src/airport.h32
-rw-r--r--src/airport_gui.cpp1
-rw-r--r--src/newgrf_airport.cpp39
-rw-r--r--src/newgrf_airport.h49
-rw-r--r--src/station_base.h1
-rw-r--r--src/table/airport_defaults.h2
10 files changed, 111 insertions, 57 deletions
diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj
index d89b43bfa..d7a5ffc52 100644
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -1148,6 +1148,10 @@
>
</File>
<File
+ RelativePath=".\..\src\newgrf_airport.h"
+ >
+ </File>
+ <File
RelativePath=".\..\src\newgrf_airporttiles.h"
>
</File>
@@ -3176,6 +3180,10 @@
>
</File>
<File
+ RelativePath=".\..\src\newgrf_airport.cpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\newgrf_airporttiles.cpp"
>
</File>
diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj
index 5f90636d6..9021d6294 100644
--- a/projects/openttd_vs90.vcproj
+++ b/projects/openttd_vs90.vcproj
@@ -1145,6 +1145,10 @@
>
</File>
<File
+ RelativePath=".\..\src\newgrf_airport.h"
+ >
+ </File>
+ <File
RelativePath=".\..\src\newgrf_airporttiles.h"
>
</File>
@@ -3173,6 +3177,10 @@
>
</File>
<File
+ RelativePath=".\..\src\newgrf_airport.cpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\newgrf_airporttiles.cpp"
>
</File>
diff --git a/source.list b/source.list
index 381e9e540..adae228ba 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 660b34ee8..14b860ec3 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 ffd453d0d..8f640704a 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 e3a9b4755..0fbfa4b54 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 000000000..33fb3ed5d
--- /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 <http://www.gnu.org/licenses/>.
+ */
+
+/** @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 000000000..c11372620
--- /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 <http://www.gnu.org/licenses/>.
+ */
+
+/** @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 222bb5893..e3aa8b726 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 c1be1da0b..3bfd73cf3 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),