mirror of https://github.com/OpenTTD/OpenTTD
(svn r4642) - Codechange: reorganise airport.h and airport_movement.h to avoid having 8 copies of the airport FTAs, and make the enums used available elsewhere.
parent
80a75e3573
commit
d1fa0742a5
|
@ -772,8 +772,7 @@ static bool AircraftController(Vehicle *v)
|
||||||
}
|
}
|
||||||
|
|
||||||
// get airport moving data
|
// get airport moving data
|
||||||
assert(v->u.air.pos < GetAirport(st->airport_type)->nofelements);
|
amd = GetAirportMovingData(st->airport_type, v->u.air.pos);
|
||||||
amd = &_airport_moving_datas[st->airport_type][v->u.air.pos];
|
|
||||||
|
|
||||||
// Helicopter raise
|
// Helicopter raise
|
||||||
if (amd->flag & AMED_HELI_RAISE) {
|
if (amd->flag & AMED_HELI_RAISE) {
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "airport.h"
|
#include "airport.h"
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
|
#include "airport_movement.h"
|
||||||
|
|
||||||
static AirportFTAClass* CountryAirport;
|
static AirportFTAClass* CountryAirport;
|
||||||
static AirportFTAClass* CityAirport;
|
static AirportFTAClass* CityAirport;
|
||||||
|
@ -371,6 +372,13 @@ const AirportFTAClass* GetAirport(const byte airport_type)
|
||||||
return Airport;
|
return Airport;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const AirportMovingData *GetAirportMovingData(byte airport_type, byte position)
|
||||||
|
{
|
||||||
|
assert(airport_type < lengthof(_airport_moving_datas));
|
||||||
|
assert(position < GetAirport(airport_type)->nofelements);
|
||||||
|
return &_airport_moving_datas[airport_type][position];
|
||||||
|
}
|
||||||
|
|
||||||
uint32 GetValidAirports(void)
|
uint32 GetValidAirports(void)
|
||||||
{
|
{
|
||||||
uint32 bytemask = _avail_aircraft; /// sets the first 3 bytes, 0 - 2, @see AdjustAvailAircraft()
|
uint32 bytemask = _avail_aircraft; /// sets the first 3 bytes, 0 - 2, @see AdjustAvailAircraft()
|
||||||
|
|
75
airport.h
75
airport.h
|
@ -3,10 +3,10 @@
|
||||||
#ifndef AIRPORT_H
|
#ifndef AIRPORT_H
|
||||||
#define AIRPORT_H
|
#define AIRPORT_H
|
||||||
|
|
||||||
#include "airport_movement.h"
|
|
||||||
|
|
||||||
enum {MAX_TERMINALS = 6};
|
enum {MAX_TERMINALS = 6};
|
||||||
enum {MAX_HELIPADS = 2};
|
enum {MAX_HELIPADS = 2};
|
||||||
|
enum {MAX_ELEMENTS = 255};
|
||||||
|
enum {MAX_HEADINGS = 18};
|
||||||
|
|
||||||
// Airport types
|
// Airport types
|
||||||
enum {
|
enum {
|
||||||
|
@ -25,6 +25,76 @@ enum {
|
||||||
HELICOPTERS_ONLY = 2,
|
HELICOPTERS_ONLY = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
AMED_NOSPDCLAMP = 1<<0,
|
||||||
|
AMED_TAKEOFF = 1<<1,
|
||||||
|
AMED_SLOWTURN = 1<<2,
|
||||||
|
AMED_LAND = 1<<3,
|
||||||
|
AMED_EXACTPOS = 1<<4,
|
||||||
|
AMED_BRAKE = 1<<5,
|
||||||
|
AMED_HELI_RAISE = 1<<6,
|
||||||
|
AMED_HELI_LOWER = 1<<7,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Movement States on Airports (headings target) */
|
||||||
|
enum {
|
||||||
|
TO_ALL,
|
||||||
|
HANGAR,
|
||||||
|
TERM1,
|
||||||
|
TERM2,
|
||||||
|
TERM3,
|
||||||
|
TERM4,
|
||||||
|
TERM5,
|
||||||
|
TERM6,
|
||||||
|
HELIPAD1,
|
||||||
|
HELIPAD2,
|
||||||
|
TAKEOFF,
|
||||||
|
STARTTAKEOFF,
|
||||||
|
ENDTAKEOFF,
|
||||||
|
HELITAKEOFF,
|
||||||
|
FLYING,
|
||||||
|
LANDING,
|
||||||
|
ENDLANDING,
|
||||||
|
HELILANDING,
|
||||||
|
HELIENDLANDING,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Movement Blocks on Airports */
|
||||||
|
// blocks (eg_airport_flags)
|
||||||
|
enum {
|
||||||
|
TERM1_block = 1 << 0,
|
||||||
|
TERM2_block = 1 << 1,
|
||||||
|
TERM3_block = 1 << 2,
|
||||||
|
TERM4_block = 1 << 3,
|
||||||
|
TERM5_block = 1 << 4,
|
||||||
|
TERM6_block = 1 << 5,
|
||||||
|
HELIPAD1_block = 1 << 6,
|
||||||
|
HELIPAD2_block = 1 << 7,
|
||||||
|
RUNWAY_IN_OUT_block = 1 << 8,
|
||||||
|
RUNWAY_IN_block = 1 << 8,
|
||||||
|
AIRPORT_BUSY_block = 1 << 8,
|
||||||
|
RUNWAY_OUT_block = 1 << 9,
|
||||||
|
TAXIWAY_BUSY_block = 1 << 10,
|
||||||
|
OUT_WAY_block = 1 << 11,
|
||||||
|
IN_WAY_block = 1 << 12,
|
||||||
|
AIRPORT_ENTRANCE_block = 1 << 13,
|
||||||
|
TERM_GROUP1_block = 1 << 14,
|
||||||
|
TERM_GROUP2_block = 1 << 15,
|
||||||
|
HANGAR2_AREA_block = 1 << 16,
|
||||||
|
TERM_GROUP2_ENTER1_block = 1 << 17,
|
||||||
|
TERM_GROUP2_ENTER2_block = 1 << 18,
|
||||||
|
TERM_GROUP2_EXIT1_block = 1 << 19,
|
||||||
|
TERM_GROUP2_EXIT2_block = 1 << 20,
|
||||||
|
PRE_HELIPAD_block = 1 << 21,
|
||||||
|
NOTHING_block = 1 << 30,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct AirportMovingData {
|
||||||
|
int x,y;
|
||||||
|
byte flag;
|
||||||
|
byte direction;
|
||||||
|
} AirportMovingData;
|
||||||
|
|
||||||
// Finite sTate mAchine --> FTA
|
// Finite sTate mAchine --> FTA
|
||||||
typedef struct AirportFTAClass {
|
typedef struct AirportFTAClass {
|
||||||
byte nofelements; // number of positions the airport consists of
|
byte nofelements; // number of positions the airport consists of
|
||||||
|
@ -49,6 +119,7 @@ typedef struct AirportFTA {
|
||||||
void InitializeAirports(void);
|
void InitializeAirports(void);
|
||||||
void UnInitializeAirports(void);
|
void UnInitializeAirports(void);
|
||||||
const AirportFTAClass* GetAirport(const byte airport_type);
|
const AirportFTAClass* GetAirport(const byte airport_type);
|
||||||
|
const AirportMovingData *GetAirportMovingData(byte airport_type, byte position);
|
||||||
|
|
||||||
/** Get buildable airport bitmask.
|
/** Get buildable airport bitmask.
|
||||||
* @return get all buildable airports at this given time, bitmasked.
|
* @return get all buildable airports at this given time, bitmasked.
|
||||||
|
|
|
@ -3,13 +3,6 @@
|
||||||
#ifndef AIRPORT_MOVEMENT_H
|
#ifndef AIRPORT_MOVEMENT_H
|
||||||
#define AIRPORT_MOVEMENT_H
|
#define AIRPORT_MOVEMENT_H
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
|
|
||||||
typedef struct AirportMovingData {
|
|
||||||
int x,y;
|
|
||||||
byte flag;
|
|
||||||
byte direction;
|
|
||||||
} AirportMovingData;
|
|
||||||
|
|
||||||
// state machine input struct (from external file, etc.)
|
// state machine input struct (from external file, etc.)
|
||||||
// Finite sTate mAchine --> FTA
|
// Finite sTate mAchine --> FTA
|
||||||
|
@ -20,75 +13,6 @@ typedef struct AirportFTAbuildup {
|
||||||
byte next_in_chain; // next position from this position
|
byte next_in_chain; // next position from this position
|
||||||
} AirportFTAbuildup;
|
} AirportFTAbuildup;
|
||||||
|
|
||||||
enum {
|
|
||||||
AMED_NOSPDCLAMP = 1<<0,
|
|
||||||
AMED_TAKEOFF = 1<<1,
|
|
||||||
AMED_SLOWTURN = 1<<2,
|
|
||||||
AMED_LAND = 1<<3,
|
|
||||||
AMED_EXACTPOS = 1<<4,
|
|
||||||
AMED_BRAKE = 1<<5,
|
|
||||||
AMED_HELI_RAISE = 1<<6,
|
|
||||||
AMED_HELI_LOWER = 1<<7,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {MAX_ELEMENTS = 255};
|
|
||||||
enum {MAX_HEADINGS = 18};
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
|
||||||
///////***********Movement States on Airports********************//////
|
|
||||||
// headings target
|
|
||||||
enum {
|
|
||||||
TO_ALL = 0,
|
|
||||||
HANGAR = 1,
|
|
||||||
TERM1 = 2,
|
|
||||||
TERM2 = 3,
|
|
||||||
TERM3 = 4,
|
|
||||||
TERM4 = 5,
|
|
||||||
TERM5 = 6,
|
|
||||||
TERM6 = 7,
|
|
||||||
HELIPAD1 = 8,
|
|
||||||
HELIPAD2 = 9,
|
|
||||||
TAKEOFF = 10,
|
|
||||||
STARTTAKEOFF = 11,
|
|
||||||
ENDTAKEOFF = 12,
|
|
||||||
HELITAKEOFF = 13,
|
|
||||||
FLYING = 14,
|
|
||||||
LANDING = 15,
|
|
||||||
ENDLANDING = 16,
|
|
||||||
HELILANDING = 17,
|
|
||||||
HELIENDLANDING = 18
|
|
||||||
};
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
|
||||||
///////**********Movement Blocks on Airports*********************//////
|
|
||||||
// blocks (eg_airport_flags)
|
|
||||||
enum {
|
|
||||||
TERM1_block = 1 << 0,
|
|
||||||
TERM2_block = 1 << 1,
|
|
||||||
TERM3_block = 1 << 2,
|
|
||||||
TERM4_block = 1 << 3,
|
|
||||||
TERM5_block = 1 << 4,
|
|
||||||
TERM6_block = 1 << 5,
|
|
||||||
HELIPAD1_block = 1 << 6,
|
|
||||||
HELIPAD2_block = 1 << 7,
|
|
||||||
RUNWAY_IN_OUT_block = 1 << 8,
|
|
||||||
RUNWAY_IN_block = 1 << 8,
|
|
||||||
AIRPORT_BUSY_block = 1 << 8,
|
|
||||||
RUNWAY_OUT_block = 1 << 9,
|
|
||||||
TAXIWAY_BUSY_block = 1 << 10,
|
|
||||||
OUT_WAY_block = 1 << 11,
|
|
||||||
IN_WAY_block = 1 << 12,
|
|
||||||
AIRPORT_ENTRANCE_block = 1 << 13,
|
|
||||||
TERM_GROUP1_block = 1 << 14,
|
|
||||||
TERM_GROUP2_block = 1 << 15,
|
|
||||||
HANGAR2_AREA_block = 1 << 16,
|
|
||||||
TERM_GROUP2_ENTER1_block = 1 << 17,
|
|
||||||
TERM_GROUP2_ENTER2_block = 1 << 18,
|
|
||||||
TERM_GROUP2_EXIT1_block = 1 << 19,
|
|
||||||
TERM_GROUP2_EXIT2_block = 1 << 20,
|
|
||||||
PRE_HELIPAD_block = 1 << 21,
|
|
||||||
NOTHING_block = 1 << 30
|
|
||||||
};
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////
|
||||||
/////*********Movement Positions on Airports********************///////
|
/////*********Movement Positions on Airports********************///////
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
#include "town.h"
|
#include "town.h"
|
||||||
#include "industry.h"
|
#include "industry.h"
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
#include "airport_movement.h"
|
#include "airport.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
#include "table/sprites.h"
|
#include "table/sprites.h"
|
||||||
|
|
Loading…
Reference in New Issue