(svn r19205) -Codechange: move AirportSpec to newgrf_airport.h/cpp

This commit is contained in:
yexo 2010-02-22 16:09:26 +00:00
parent 5ebc0a16c8
commit dd7c2b2f9d
10 changed files with 111 additions and 57 deletions

View File

@ -1147,6 +1147,10 @@
RelativePath=".\..\src\newgrf.h"
>
</File>
<File
RelativePath=".\..\src\newgrf_airport.h"
>
</File>
<File
RelativePath=".\..\src\newgrf_airporttiles.h"
>
@ -3175,6 +3179,10 @@
RelativePath=".\..\src\newgrf.cpp"
>
</File>
<File
RelativePath=".\..\src\newgrf_airport.cpp"
>
</File>
<File
RelativePath=".\..\src\newgrf_airporttiles.cpp"
>

View File

@ -1144,6 +1144,10 @@
RelativePath=".\..\src\newgrf.h"
>
</File>
<File
RelativePath=".\..\src\newgrf_airport.h"
>
</File>
<File
RelativePath=".\..\src\newgrf_airporttiles.h"
>
@ -3172,6 +3176,10 @@
RelativePath=".\..\src\newgrf.cpp"
>
</File>
<File
RelativePath=".\..\src\newgrf_airport.cpp"
>
</File>
<File
RelativePath=".\..\src\newgrf_airporttiles.cpp"
>

View File

@ -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

View File

@ -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 */

View File

@ -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,

View File

@ -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"

39
src/newgrf_airport.cpp Normal file
View File

@ -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;
}

49
src/newgrf_airport.h Normal file
View File

@ -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 */

View File

@ -14,6 +14,7 @@
#include "base_station_base.h"
#include "airport.h"
#include "newgrf_airport.h"
#include "cargopacket.h"
#include "industry_type.h"

View File

@ -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),