Changeset - r14618:a194334b4a3a
[Not reviewed]
master
0 8 2
yexo - 14 years ago 2010-02-22 16:09:26
yexo@openttd.org
(svn r19205) -Codechange: move AirportSpec to newgrf_airport.h/cpp
10 files changed with 111 insertions and 57 deletions:
0 comments (0 inline, 0 general)
projects/openttd_vs80.vcproj
Show inline comments
 
@@ -1145,12 +1145,16 @@
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_airport.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_airporttiles.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_callbacks.h"
 
				>
 
@@ -3173,12 +3177,16 @@
 
			>
 
			<File
 
				RelativePath=".\..\src\newgrf.cpp"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_airport.cpp"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_airporttiles.cpp"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_canal.cpp"
 
				>
projects/openttd_vs90.vcproj
Show inline comments
 
@@ -1142,12 +1142,16 @@
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_airport.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_airporttiles.h"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_callbacks.h"
 
				>
 
@@ -3170,12 +3174,16 @@
 
			>
 
			<File
 
				RelativePath=".\..\src\newgrf.cpp"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_airport.cpp"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_airporttiles.cpp"
 
				>
 
			</File>
 
			<File
 
				RelativePath=".\..\src\newgrf_canal.cpp"
 
				>
source.list
Show inline comments
 
@@ -193,12 +193,13 @@ network/network_gamelist.h
 
network/network_gui.h
 
network/network_internal.h
 
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
 
newgrf_cargo.h
 
newgrf_commons.h
 
newgrf_config.h
 
@@ -739,12 +740,13 @@ spriteloader/png.cpp
 
spriteloader/png.hpp
 
#end
 
spriteloader/spriteloader.hpp
 

	
 
# NewGRF
 
newgrf.cpp
 
newgrf_airport.cpp
 
newgrf_airporttiles.cpp
 
newgrf_canal.cpp
 
newgrf_cargo.cpp
 
newgrf_commons.cpp
 
newgrf_config.cpp
 
newgrf_engine.cpp
src/airport.cpp
Show inline comments
 
@@ -9,36 +9,21 @@
 

	
 
/** @file airport.cpp Functions related to airports. */
 

	
 
#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
 
 * OR
 
 * - false: give a summarized report which only shows current and next position */
 
//#define DEBUG_AIRPORT false
 
@@ -266,19 +251,12 @@ AirportFTAClass::~AirportFTAClass()
 
			current = next;
 
		};
 
	}
 
	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 */
 
static uint16 AirportGetNofElements(const AirportFTAbuildup *apFA)
 
{
 
	uint16 nofelements = 0;
src/airport.h
Show inline comments
 
@@ -10,14 +10,12 @@
 
/** @file airport.h Various declarations for airports */
 

	
 
#ifndef AIRPORT_H
 
#define AIRPORT_H
 

	
 
#include "direction_type.h"
 
#include "map_type.h"
 
#include "date_type.h"
 

	
 
/** Some airport-related constants */
 
enum {
 
	MAX_TERMINALS =  10,                    ///< maximum number of terminals per airport
 
	MAX_HELIPADS  =   4,                    ///< maximum number of helipads per airport
 
	MAX_ELEMENTS  = 255,                    ///< maximum number of aircraft positions at airport
 
@@ -39,42 +37,12 @@ enum {
 
	AT_HELISTATION   =   8,
 
	NUM_AIRPORTS     =   9,
 
	AT_OILRIG        =  15,
 
	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,
 
	AMED_SLOWTURN   = 1 << 2,
 
	AMED_LAND       = 1 << 3,
 
	AMED_EXACTPOS   = 1 << 4,
src/airport_gui.cpp
Show inline comments
 
@@ -20,12 +20,13 @@
 
#include "viewport_func.h"
 
#include "gfx_func.h"
 
#include "company_func.h"
 
#include "tilehighlight_func.h"
 
#include "company_base.h"
 
#include "station_type.h"
 
#include "newgrf_airport.h"
 

	
 
#include "table/sprites.h"
 
#include "table/strings.h"
 

	
 
static byte _selected_airport_type;
 

	
src/newgrf_airport.cpp
Show inline comments
 
new file 100644
 
/* $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;
 
}
src/newgrf_airport.h
Show inline comments
 
new file 100644
 
/* $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 */
src/station_base.h
Show inline comments
 
@@ -11,12 +11,13 @@
 

	
 
#ifndef STATION_BASE_H
 
#define STATION_BASE_H
 

	
 
#include "base_station_base.h"
 
#include "airport.h"
 
#include "newgrf_airport.h"
 
#include "cargopacket.h"
 
#include "industry_type.h"
 

	
 
typedef Pool<BaseStation, StationID, 32, 64000> StationPool;
 
extern StationPool _station_pool;
 

	
src/table/airport_defaults.h
Show inline comments
 
@@ -385,13 +385,13 @@ static AirportTileTable *_tile_table_hel
 
	AS_GENERIC(_tile_table_##ap_name, NULL, 0, size_x, size_y, noise, catchment, min_year, max_year)
 

	
 
/** AirportSpec definition for airports with at least one depot. */
 
#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),
 
	AS(metropolitan, 6, 6, 1980, MAX_YEAR, 6, 8),
 
	AS(international, 7, 7, 1990, MAX_YEAR, 8, 17),
 
	AS(commuter, 5, 4, 1983, MAX_YEAR, 4, 4),
0 comments (0 inline, 0 general)