OpenTTD Source 20241224-master-gf74b0cf984
aircraft.h File Reference

Base for aircraft. More...

#include "station_map.h"
#include "vehicle_base.h"

Go to the source code of this file.

Data Structures

struct  AircraftCache
 Variables that are cached to improve performance and such. More...
 
struct  Aircraft
 Aircraft, helicopters, rotors and their shadows belong to this class. More...
 

Enumerations

enum  AircraftSubType { AIR_HELICOPTER = 0 , AIR_AIRCRAFT = 2 , AIR_SHADOW = 4 , AIR_ROTOR = 6 }
 An aircraft can be one of those types. More...
 
enum  AirVehicleFlags { VAF_DEST_TOO_FAR = 0 , VAF_IN_MAX_HEIGHT_CORRECTION = 1 , VAF_IN_MIN_HEIGHT_CORRECTION = 2 , VAF_HELI_DIRECT_DESCENT = 3 }
 Flags for air vehicles; shared with disaster vehicles. More...
 

Functions

void HandleAircraftEnterHangar (Aircraft *v)
 Handle Aircraft specific tasks when an Aircraft enters a hangar.
 
void GetAircraftSpriteSize (EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type)
 Get the size of the sprite of an aircraft sprite heading west (used for lists).
 
void UpdateAirplanesOnNewStation (const Station *st)
 Updates the status of the Aircraft heading or in the station.
 
void UpdateAircraftCache (Aircraft *v, bool update_range=false)
 Update cached values of an aircraft.
 
void AircraftLeaveHangar (Aircraft *v, Direction exit_dir)
 Aircraft is about to leave the hangar.
 
void AircraftNextAirportPos_and_Order (Aircraft *v)
 set the right pos when heading to other airports after takeoff
 
void SetAircraftPosition (Aircraft *v, int x, int y, int z)
 Set aircraft position.
 
void GetAircraftFlightLevelBounds (const Vehicle *v, int *min, int *max)
 Get the 'flight level' bounds, in pixels from 'z_pos' 0 for a particular vehicle for normal flight situation.
 
template<class T >
int GetAircraftFlightLevel (T *v, bool takeoff=false)
 
void GetRotorImage (const Aircraft *v, EngineImageType image_type, VehicleSpriteSeq *result)
 
StationGetTargetAirportIfValid (const Aircraft *v)
 Returns aircraft's target station if v->target_airport is a valid station with airport.
 
void HandleMissingAircraftOrders (Aircraft *v)
 

Variables

static constexpr int AIRCRAFT_MIN_FLYING_ALTITUDE = 120
 Base values for flight levels above ground level for 'normal' flight and holding patterns.
 
static constexpr int AIRCRAFT_MAX_FLYING_ALTITUDE = 360
 Maximum flying altitude above tile.
 
static constexpr int PLANE_HOLD_MAX_FLYING_ALTITUDE = 150
 holding flying altitude above tile of planes.
 
static constexpr int HELICOPTER_HOLD_MAX_FLYING_ALTITUDE = 184
 holding flying altitude above tile of helicopters.
 
static const int ROTOR_Z_OFFSET = 5
 Z Offset between helicopter- and rotorsprite.
 

Detailed Description

Base for aircraft.

Definition in file aircraft.h.

Enumeration Type Documentation

◆ AircraftSubType

An aircraft can be one of those types.

Enumerator
AIR_HELICOPTER 

an helicopter

AIR_AIRCRAFT 

an airplane

AIR_SHADOW 

shadow of the aircraft

AIR_ROTOR 

rotor of an helicopter

Definition at line 28 of file aircraft.h.

◆ AirVehicleFlags

Flags for air vehicles; shared with disaster vehicles.

Enumerator
VAF_DEST_TOO_FAR 

Next destination is too far away.

VAF_IN_MAX_HEIGHT_CORRECTION 

The vehicle is currently lowering its altitude because it hit the upper bound.

VAF_IN_MIN_HEIGHT_CORRECTION 

The vehicle is currently raising its altitude because it hit the lower bound.

VAF_HELI_DIRECT_DESCENT 

The helicopter is descending directly at its destination (helipad or in front of hangar)

Definition at line 36 of file aircraft.h.

Function Documentation

◆ AircraftLeaveHangar()

void AircraftLeaveHangar ( Aircraft v,
Direction  exit_dir 
)

Aircraft is about to leave the hangar.

Parameters
vAircraft leaving.
exit_dirThe direction the vehicle leaves the hangar.
Note
This function is called in AfterLoadGame for old savegames, so don't rely on any data to be valid, especially don't rely on the fact that the vehicle is actually on the ground inside a depot.

Definition at line 1467 of file aircraft_cmd.cpp.

References Vehicle::cur_speed, Vehicle::direction, InvalidateWindowData(), Vehicle::LeaveUnbunchingDepot(), Vehicle::Next(), SpecializedVehicle< T, Type >::Next(), Vehicle::progress, SetAircraftPosition(), SetWindowClassesDirty(), Vehicle::subspeed, Vehicle::tile, VehicleServiceInDepot(), Vehicle::vehstatus, WC_AIRCRAFT_LIST, WC_VEHICLE_DEPOT, Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

Referenced by AircraftEventHandler_InHangar(), and UpdateOldAircraft().

◆ AircraftNextAirportPos_and_Order()

◆ GetAircraftFlightLevel()

template<class T >
int GetAircraftFlightLevel ( T *  v,
bool  takeoff = false 
)

Definition at line 771 of file aircraft_cmd.cpp.

◆ GetAircraftFlightLevelBounds()

void GetAircraftFlightLevelBounds ( const Vehicle v,
int *  min_level,
int *  max_level 
)

Get the 'flight level' bounds, in pixels from 'z_pos' 0 for a particular vehicle for normal flight situation.

When the maximum is reached the vehicle should consider descending. When the minimum is reached the vehicle should consider ascending.

Parameters
vThe vehicle to get the flight levels for.
[out]min_levelThe minimum bounds for flight level.
[out]max_levelThe maximum bounds for flight level.

Definition at line 728 of file aircraft_cmd.cpp.

References AIR_HELICOPTER, AIRCRAFT_MAX_FLYING_ALTITUDE, AIRCRAFT_MIN_FLYING_ALTITUDE, VehicleCache::cached_max_speed, DIR_E, DIR_N, DIR_NE, DIR_SE, Vehicle::direction, SpecializedVehicle< Aircraft, VEH_AIRCRAFT >::From(), GetTileHeightBelowAircraft(), HELICOPTER_HOLD_MAX_FLYING_ALTITUDE, PLANE_HOLD_MAX_FLYING_ALTITUDE, Vehicle::subtype, BaseVehicle::type, Vehicle::vcache, and VEH_AIRCRAFT.

Referenced by AfterLoadGame(), AircraftController(), DisasterVehicle::DisasterVehicle(), ReleaseDisasterVehicle(), and UpdateOldAircraft().

◆ GetAircraftSpriteSize()

void GetAircraftSpriteSize ( EngineID  engine,
uint &  width,
uint &  height,
int &  xoffs,
int &  yoffs,
EngineImageType  image_type 
)

Get the size of the sprite of an aircraft sprite heading west (used for lists).

Parameters
engineThe engine to get the sprite from.
[out]widthThe width of the sprite.
[out]heightThe height of the sprite.
[out]xoffsNumber of pixels to shift the sprite to the right.
[out]yoffsNumber of pixels to shift the sprite downwards.
image_typeContext the sprite is used in.

Definition at line 249 of file aircraft_cmd.cpp.

References VehicleSpriteSeq::GetBounds(), Rect::Height(), UnScaleGUI(), and Rect::Width().

Referenced by EnginePreviewWindow::UpdateWidgetSize().

◆ GetRotorImage()

void GetRotorImage ( const Aircraft v,
EngineImageType  image_type,
VehicleSpriteSeq result 
)

Definition at line 189 of file aircraft_cmd.cpp.

◆ GetTargetAirportIfValid()

Station * GetTargetAirportIfValid ( const Aircraft v)

Returns aircraft's target station if v->target_airport is a valid station with airport.

Parameters
vvehicle to get target airport for
Returns
pointer to target station, nullptr if invalid

Definition at line 2146 of file aircraft_cmd.cpp.

References Station::airport, SpecializedStation< Station, false >::GetIfValid(), INVALID_TILE, Aircraft::targetairport, OrthogonalTileArea::tile, BaseVehicle::type, and VEH_AIRCRAFT.

Referenced by AfterLoadGame(), AircraftNextAirportPos_and_Order(), CrashAirplane(), Aircraft::FindClosestDepot(), FindNearestHangar(), HandleCrashedAircraft(), MapAircraftMovementState(), and Vehicle::PreDestructor().

◆ HandleAircraftEnterHangar()

void HandleAircraftEnterHangar ( Aircraft v)

Handle Aircraft specific tasks when an Aircraft enters a hangar.

Parameters
*vVehicle that enters the hangar

Definition at line 573 of file aircraft_cmd.cpp.

References Vehicle::cur_speed, SpecializedVehicle< T, Type >::Next(), Vehicle::progress, SetAircraftPosition(), Vehicle::subspeed, Vehicle::vehstatus, VS_HIDDEN, Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

Referenced by VehicleEnterDepot().

◆ HandleMissingAircraftOrders()

void HandleMissingAircraftOrders ( Aircraft v)

Definition at line 1270 of file aircraft_cmd.cpp.

◆ SetAircraftPosition()

◆ UpdateAircraftCache()

◆ UpdateAirplanesOnNewStation()

Variable Documentation

◆ AIRCRAFT_MAX_FLYING_ALTITUDE

constexpr int AIRCRAFT_MAX_FLYING_ALTITUDE = 360
staticconstexpr

Maximum flying altitude above tile.

Definition at line 21 of file aircraft.h.

Referenced by GetAircraftFlightLevelBounds().

◆ AIRCRAFT_MIN_FLYING_ALTITUDE

constexpr int AIRCRAFT_MIN_FLYING_ALTITUDE = 120
staticconstexpr

Base values for flight levels above ground level for 'normal' flight and holding patterns.

Due to speed and direction, the actual flight level may be higher. Minimum flying altitude above tile.

Definition at line 20 of file aircraft.h.

Referenced by GetAircraftFlightLevelBounds().

◆ HELICOPTER_HOLD_MAX_FLYING_ALTITUDE

constexpr int HELICOPTER_HOLD_MAX_FLYING_ALTITUDE = 184
staticconstexpr

holding flying altitude above tile of helicopters.

Definition at line 23 of file aircraft.h.

Referenced by GetAircraftFlightLevelBounds(), and GetAircraftHoldMaxAltitude().

◆ PLANE_HOLD_MAX_FLYING_ALTITUDE

constexpr int PLANE_HOLD_MAX_FLYING_ALTITUDE = 150
staticconstexpr

holding flying altitude above tile of planes.

Definition at line 22 of file aircraft.h.

Referenced by GetAircraftFlightLevelBounds(), and GetAircraftHoldMaxAltitude().

◆ ROTOR_Z_OFFSET

const int ROTOR_Z_OFFSET = 5
static

Z Offset between helicopter- and rotorsprite.

Definition at line 48 of file aircraft.h.

Referenced by CmdBuildAircraft(), DisasterVehicle::DisasterVehicle(), SetAircraftPosition(), and DisasterVehicle::UpdatePosition().