Changeset - r6025:0e6888758571
[Not reviewed]
master
0 3 0
tron - 18 years ago 2007-02-15 20:35:45
tron@openttd.org
(svn r8748) -Fix

-Codechange: Do not hardcode the airports with a short airstrip anymore, but make it a flag in AirportFTAClass
3 files changed with 24 insertions and 17 deletions:
0 comments (0 inline, 0 general)
src/aircraft_cmd.cpp
Show inline comments
 
@@ -74,22 +74,23 @@ static StationID FindNearestHangar(const
 
	TileIndex vtile = TileVirtXY(v->x_pos, v->y_pos);
 

	
 
	FOR_ALL_STATIONS(st) {
 
		if (st->owner == v->owner && st->facilities & FACIL_AIRPORT &&
 
				GetAirport(st->airport_type)->nof_depots > 0) {
 
			uint distance;
 
		if (st->owner != v->owner || !(st->facilities & FACIL_AIRPORT)) continue;
 

	
 
			// don't crash the plane if we know it can't land at the airport
 
			if ((AircraftVehInfo(v->engine_type)->subtype & AIR_FAST) &&
 
					(st->airport_type == AT_SMALL || st->airport_type == AT_COMMUTER) &&
 
					!_cheats.no_jetcrash.value)
 
				continue;
 
		const AirportFTAClass *afc = GetAirport(st->airport_type);
 
		if (afc->nof_depots == 0 || (
 
					/* don't crash the plane if we know it can't land at the airport */
 
					afc->flags & AirportFTAClass::SHORT_STRIP &&
 
					AircraftVehInfo(v->engine_type)->subtype & AIR_FAST &&
 
					!_cheats.no_jetcrash.value
 
				)) {
 
			continue;
 
		}
 

	
 
			// v->tile can't be used here, when aircraft is flying v->tile is set to 0
 
			distance = DistanceSquare(vtile, st->airport_tile);
 
			if (distance < best || index == INVALID_STATION) {
 
				best = distance;
 
				index = st->index;
 
			}
 
		// v->tile can't be used here, when aircraft is flying v->tile is set to 0
 
		uint distance = DistanceSquare(vtile, st->airport_tile);
 
		if (distance < best || index == INVALID_STATION) {
 
			best = distance;
 
			index = st->index;
 
		}
 
	}
 
	return index;
 
@@ -1368,7 +1369,9 @@ static void MaybeCrashAirplane(Vehicle *
 

	
 
	//FIXME -- MaybeCrashAirplane -> increase crashing chances of very modern airplanes on smaller than AT_METROPOLITAN airports
 
	prob = 0x10000 / 1500;
 
	if (((st->airport_type == AT_SMALL) || (st->airport_type == AT_COMMUTER)) && (AircraftVehInfo(v->engine_type)->subtype & AIR_FAST) && !_cheats.no_jetcrash.value) {
 
	if (GetAirport(st->airport_type)->flags & AirportFTAClass::SHORT_STRIP &&
 
			AircraftVehInfo(v->engine_type)->subtype & AIR_FAST &&
 
			!_cheats.no_jetcrash.value) {
 
		prob = 0x10000 / 20;
 
	}
 

	
src/airport.cpp
Show inline comments
 
@@ -37,7 +37,7 @@ void InitializeAirports(void)
 
		_airport_terminal_country,
 
		NULL,
 
		16,
 
		AirportFTAClass::ALL,
 
		AirportFTAClass::ALL | AirportFTAClass::SHORT_STRIP,
 
		_airport_fta_country,
 
		_airport_depots_country,
 
		lengthof(_airport_depots_country),
 
@@ -128,7 +128,7 @@ void InitializeAirports(void)
 
		_airport_terminal_commuter,
 
		_airport_helipad_commuter,
 
		22,
 
		AirportFTAClass::ALL,
 
		AirportFTAClass::ALL | AirportFTAClass::SHORT_STRIP,
 
		_airport_fta_commuter,
 
		_airport_depots_commuter,
 
		lengthof(_airport_depots_commuter),
src/airport.h
Show inline comments
 
@@ -125,6 +125,7 @@ typedef struct AirportFTAClass {
 
			PLANES      = 0x1,
 
			HELICOPTERS = 0x2,
 
			ALL         = PLANES | HELICOPTERS,
 
			SHORT_STRIP = 0x4
 
		};
 

	
 
		AirportFTAClass(
 
@@ -163,6 +164,9 @@ typedef struct AirportFTAClass {
 
	byte delta_z;                         // Z adjustment for helicopter pads
 
} AirportFTAClass;
 

	
 
DECLARE_ENUM_AS_BIT_SET(AirportFTAClass::Flags)
 

	
 

	
 
// internal structure used in openttd - Finite sTate mAchine --> FTA
 
typedef struct AirportFTA {
 
	struct AirportFTA *next; // possible extra movement choices from this position
0 comments (0 inline, 0 general)