UFO: Alien Invasion
Loading...
Searching...
No Matches
cp_aircraft.h File Reference

Header file for aircraft stuff. More...

#include "../../DateTime.h"
#include "cp_capacity.h"
#include "cp_radar.h"
Include dependency graph for cp_aircraft.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  mapline_t
 A path on the map described by 2D points. More...
struct  aircraftSlot_t
 slot of aircraft More...
struct  aircraft_t
 An aircraft with all it's data. More...

Macros

#define MAX_AIRCRAFT   64
#define LINE_MAXSEG   64
#define LINE_MAXPTS   (LINE_MAXSEG + 2)
#define AIRCRAFT_REFUEL_FACTOR   16
#define MAX_AIRCRAFTSLOT   8
#define AIR_Foreach(var)
 iterates trough all aircraft
#define AIR_IsAircraftOfBase(aircraft, base)
#define AIR_ForeachFromBase(var, base)
 iterates trough all aircraft from a specific homebase
#define AIR_IsUFO(aircraft)

Enumerations

enum  itemWeight_t { ITEM_LIGHT , ITEM_MEDIUM , ITEM_HEAVY }
 different weight for aircraft items More...
enum  itemPos_t {
  AIR_NOSE_LEFT , AIR_NOSE_CENTER , AIR_NOSE_RIGHT , AIR_WING_LEFT ,
  AIR_WING_RIGHT , AIR_REAR_LEFT , AIR_REAR_CENTER , AIR_REAR_RIGHT ,
  AIR_POSITIONS_MAX
}
 different positions for aircraft items More...
enum  aircraft_notifications_t { AIR_CANNOT_REFUEL , MAX_AIR_NOTIFICATIONS }
 notification signals for aircraft events More...
enum  aircraftStatus_t {
  AIR_NONE , AIR_REFUEL , AIR_HOME , AIR_IDLE ,
  AIR_TRANSIT , AIR_MISSION , AIR_UFO , AIR_DROP ,
  AIR_INTERCEPT , AIR_TRANSFER , AIR_CRASHED , AIR_RETURNING
}

Functions

aircraft_tAIR_NewAircraft (struct base_s *base, const aircraft_t *aircraftTemplate)
aircraft_tAIR_Add (struct base_s *base, const aircraft_t *aircraftTemplate)
bool AIR_Delete (struct base_s *base, aircraft_t *aircraft)
void AIR_DeleteAircraft (aircraft_t *aircraft)
 Removes an aircraft from its base and the game.
void AIR_DestroyAircraft (aircraft_t *aircraft, bool killPilot=true)
 Removes an aircraft from its base and the game.
const aircraft_tAIR_GetAircraftSilent (const char *name)
 Searches the global array of aircraft types for a given aircraft.
const aircraft_tAIR_GetAircraft (const char *name)
 Searches the global array of aircraft types for a given aircraft.
aircraft_tAIR_GetFirstFromBase (const struct base_s *base)
bool AIR_BaseHasAircraft (const struct base_s *base)
int AIR_BaseCountAircraft (const struct base_s *base)
aircraft_tAIR_GetAircraftFromBaseByIDXSafe (const struct base_s *base, int index)
aircraft_tAIR_AircraftGetFromIDX (int idx)
 Returns aircraft for a given global index.
const char * AIR_AircraftStatusToName (const aircraft_t *aircraft)
 Translates the aircraft status id to a translatable string.
bool AIR_IsAircraftInBase (const aircraft_t *aircraft)
 Checks whether given aircraft is in its homebase.
bool AIR_IsAircraftOnGeoscape (const aircraft_t *aircraft)
 Checks whether given aircraft is on geoscape.
void AIR_ResetAircraftTeam (aircraft_t *aircraft)
 Resets team in given aircraft.
bool AIR_AddToAircraftTeam (aircraft_t *aircraft, class Employee *employee)
 Adds given employee to given aircraft.
bool AIR_IsInAircraftTeam (const aircraft_t *aircraft, const class Employee *employee)
int AIR_GetTeamSize (const aircraft_t *aircraft)
 Counts the number of soldiers in given aircraft.
void AIR_CampaignRun (const struct campaign_s *campaign, int dt, bool updateRadarOverlay)
bool AIR_AircraftMakeMove (int dt, aircraft_t *aircraft)
 Moves given aircraft.
void AIR_ParseAircraft (const char *name, const char **text, bool assignAircraftItems)
 Parses all aircraft that are defined in our UFO-scripts.
bool AIR_AircraftHasEnoughFuel (const aircraft_t *aircraft, const vec2_t destination)
 check if aircraft has enough fuel to go to destination, and then come back home
bool AIR_AircraftHasEnoughFuelOneWay (const aircraft_t *aircraft, const vec2_t destination)
 check if aircraft has enough fuel to go to destination
void AIR_AircraftReturnToBase (aircraft_t *aircraft)
 Calculates the way back to homebase for given aircraft and returns it.
bool AIR_SendAircraftToMission (aircraft_t *aircraft, struct mission_s *mission)
void AIR_AircraftsNotifyMissionRemoved (const struct mission_s *mission)
void AIR_AircraftsNotifyUFORemoved (const aircraft_t *const ufo, bool destroyed)
 Notify that a UFO has been removed.
void AIR_GetDestinationWhilePursuing (const aircraft_t *shooter, const aircraft_t *target, vec2_t dest)
 Calculates the point where aircraft should go to intecept a moving target.
bool AIR_SendAircraftPursuingUFO (aircraft_t *aircraft, aircraft_t *ufo)
 Make the specified aircraft purchasing a UFO.
void AIR_AircraftsUFODisappear (const aircraft_t *const ufo)
 Notify that a UFO disappear from radars.
bool AIR_ScriptSanityCheck (void)
 Checks the parsed aircraft for errors.
int AIR_AircraftMenuStatsValues (const int value, const int stat)
 Some of the aircraft values needs special calculations when they are shown in the menus.
int AIR_CountInBaseByTemplate (const struct base_s *base, const aircraft_t *aircraftTemplate)
int AIR_GetAircraftWeaponRanges (const aircraftSlot_t *slot, int maxSlot, float *weaponRanges)
 Get the all the unique weapon ranges of this aircraft.
baseCapacities_t AIR_GetHangarCapacityType (const aircraft_t *aircraft)
 Returns capacity type needed for an aircraft.
const char * AIR_CheckMoveIntoNewHomebase (const aircraft_t *aircraft, const struct base_s *base)
void AIR_MoveAircraftIntoNewHomebase (aircraft_t *aircraft, struct base_s *base)
void AII_CollectItem (aircraft_t *aircraft, const objDef_t *item, int amount)
 Add an item to aircraft inventory.
void AII_CollectingItems (aircraft_t *aircraft, int won)
 Collect items from the battlefield.
bool AIR_SetPilot (aircraft_t *aircraft, class Employee *pilot)
 Assign a pilot to an aircraft.
EmployeeAIR_GetPilot (const aircraft_t *aircraft)
 Get pilot of an aircraft.
bool AIR_PilotSurvivedCrash (const aircraft_t *aircraft)
 Determine if an aircraft's pilot survived a crash, based on his piloting skill (and a bit of randomness).
bool AIR_AddEmployee (Employee *employee, aircraft_t *aircraft)
 Assigns a soldier to an aircraft.
void AIR_RemoveEmployees (aircraft_t &aircraft)
 Removes all soldiers from an aircraft.
bool AIR_RemoveEmployee (Employee *employee, aircraft_t *aircraft)
 Removes a soldier from an aircraft.
const aircraft_tAIR_IsEmployeeInAircraft (const class Employee *employee, const aircraft_t *aircraft)
void AIR_AutoAddPilotToAircraft (const struct base_s *base, class Employee *pilot)
void AIR_RemovePilotFromAssignedAircraft (const struct base_s *base, const class Employee *pilot)
void AIR_MoveEmployeeInventoryIntoStorage (const aircraft_t &aircraft, equipDef_t &equip)
 Move all the equipment carried by the team on the aircraft into the given equipment.
void AIR_AssignInitial (aircraft_t *aircraft)
 Assigns initial team of soldiers to aircraft.
bool AIR_CanIntercept (const aircraft_t *aircraft)
int AIR_GetOperationRange (const aircraft_t *aircraft)
 Calculates the range an aircraft can fly on the geoscape.
int AIR_GetRemainingRange (const aircraft_t *aircraft)
 Calculates the remaining range the aircraft can fly.
void AIR_InitStartup (void)
 Init actions for aircraft-subsystem.
void AIR_Shutdown (void)
 Closing actions for aircraft-subsystem.

Detailed Description

Header file for aircraft stuff.

Definition in file cp_aircraft.h.

Macro Definition Documentation

◆ AIR_Foreach

#define AIR_Foreach ( var)

◆ AIR_ForeachFromBase

#define AIR_ForeachFromBase ( var,
base )
Value:
if (!AIR_IsAircraftOfBase(var, (base))) continue; else
#define AIR_Foreach(var)
iterates trough all aircraft
#define AIR_IsAircraftOfBase(aircraft, base)

iterates trough all aircraft from a specific homebase

Parameters
[out]varvariable to point to the aircraft structure
[in]basepointer to the homebase structure

Definition at line 202 of file cp_aircraft.h.

Referenced by AB_UpdateStealthForAllBase(), AII_RepairAircraft(), AIM_PilotAssignedAircraft(), AIR_AircraftFillList_f(), AIR_AircraftSelect(), AIR_AutoAddPilotToAircraft(), AIR_BaseCountAircraft(), AIR_CountInBaseByTemplate(), AIR_GetAircraftFromBaseByIDXSafe(), AIR_GetFirstFromBase(), AIR_RemovePilotFromAssignedAircraft(), AIR_ShowAircraft_f(), B_Destroy(), B_MoveAircraftOnGeoscapeToOtherBases(), BS_FillMarket_f(), GEO_GetGeoscapeAngle(), RADAR_NotifyUFORemoved(), TEST_F(), TEST_F(), and TR_FillAircraft().

◆ AIR_IsAircraftOfBase

#define AIR_IsAircraftOfBase ( aircraft,
base )
Value:
((aircraft)->homebase == (base) && (aircraft)->status != AIR_CRASHED)
@ AIR_CRASHED

Definition at line 195 of file cp_aircraft.h.

◆ AIR_IsUFO

◆ AIRCRAFT_REFUEL_FACTOR

#define AIRCRAFT_REFUEL_FACTOR   16

factor to speed up refuelling

Definition at line 36 of file cp_aircraft.h.

Referenced by AIR_Refuel().

◆ LINE_MAXPTS

#define LINE_MAXPTS   (LINE_MAXSEG + 2)

Definition at line 33 of file cp_aircraft.h.

Referenced by AIR_LoadRouteXML(), GEO_3DMapDrawLine(), GEO_CalcLine(), and GEO_MapDrawLine().

◆ LINE_MAXSEG

#define LINE_MAXSEG   64

Definition at line 32 of file cp_aircraft.h.

Referenced by GEO_CalcLine().

◆ MAX_AIRCRAFT

#define MAX_AIRCRAFT   64

Definition at line 31 of file cp_aircraft.h.

Referenced by AIR_ParseAircraft().

◆ MAX_AIRCRAFTSLOT

#define MAX_AIRCRAFTSLOT   8

Enumeration Type Documentation

◆ aircraft_notifications_t

notification signals for aircraft events

Enumerator
AIR_CANNOT_REFUEL 
MAX_AIR_NOTIFICATIONS 

Definition at line 69 of file cp_aircraft.h.

◆ aircraftStatus_t

possible aircraft states

Enumerator
AIR_NONE 
AIR_REFUEL 

refill fuel

AIR_HOME 

in homebase

AIR_IDLE 

just sit there on geoscape

AIR_TRANSIT 

moving

AIR_MISSION 

moving to a mission

AIR_UFO 

pursuing a UFO - also used for ufos that are pursuing an aircraft

AIR_DROP 

ready to drop down

AIR_INTERCEPT 

ready to intercept

AIR_TRANSFER 

being transferred

AIR_CRASHED 

crashed

AIR_RETURNING 

returning to homebase

Definition at line 99 of file cp_aircraft.h.

◆ itemPos_t

enum itemPos_t

different positions for aircraft items

Enumerator
AIR_NOSE_LEFT 
AIR_NOSE_CENTER 
AIR_NOSE_RIGHT 
AIR_WING_LEFT 
AIR_WING_RIGHT 
AIR_REAR_LEFT 
AIR_REAR_CENTER 
AIR_REAR_RIGHT 
AIR_POSITIONS_MAX 

Definition at line 55 of file cp_aircraft.h.

◆ itemWeight_t

different weight for aircraft items

Note
values must go from the lightest to the heaviest item
Enumerator
ITEM_LIGHT 
ITEM_MEDIUM 
ITEM_HEAVY 

Definition at line 48 of file cp_aircraft.h.

Function Documentation

◆ AII_CollectingItems()

void AII_CollectingItems ( aircraft_t * aircraft,
int won )

Collect items from the battlefield.

Note
The way we are collecting items:
1. Grab everything from the floor and add it to the aircraft cargo here.
2. When collecting gun, collect it's remaining ammo as well
3. Sell everything or add to base storage when dropship lands in base.
4. Items carried by soldiers are processed nothing is being sold.
See also
CL_ParseResults
AII_CollectingAmmo
AII_CarriedItems
Todo
Simplify this logic

Definition at line 294 of file cp_aircraft.cpp.

References ItemCargo::add(), AII_CarriedItems(), AII_CollectAmmo(), AII_CollectItem_(), cgi, DEBUG_CLIENT, ItemCargo::empty(), aircraft_t::itemCargo, ItemCargo::list(), LIST_Foreach, and aircraft_t::mission.

Referenced by GAME_CP_Results().

◆ AII_CollectItem()

void AII_CollectItem ( aircraft_t * aircraft,
const objDef_t * item,
int amount )

Add an item to aircraft inventory.

Parameters
[in,out]aircraftAircraft to load to
[in]itemItem to add
amountNumber of items to add
See also
AL_AddAliens
AII_CollectingItems

Definition at line 237 of file cp_aircraft.cpp.

References ItemCargo::add(), and aircraft_t::itemCargo.

Referenced by AII_CollectItem_(), and AM_MoveCharacterInventoryIntoItemCargo().

◆ AIR_Add()

aircraft_t * AIR_Add ( struct base_s * base,
const aircraft_t * aircraftTemplate )

◆ AIR_AddEmployee()

bool AIR_AddEmployee ( Employee * employee,
aircraft_t * aircraft )

Assigns a soldier to an aircraft.

Parameters
[in]employeeThe employee to be assigned to the aircraft.
[in]aircraftWhat aircraft to assign employee to.
Returns
returns true if a soldier could be assigned to the aircraft.
See also
AIR_RemoveEmployee
AIR_AddToAircraftTeam

Definition at line 2853 of file cp_aircraft.cpp.

References AIR_AddToAircraftTeam(), AIR_GetTeamSize(), AIR_IsEmployeeInAircraft(), and aircraft_t::maxTeamSize.

Referenced by AIR_AssignInitial().

◆ AIR_AddToAircraftTeam()

bool AIR_AddToAircraftTeam ( aircraft_t * aircraft,
Employee * employee )

Adds given employee to given aircraft.

Parameters
[in]aircraftPointer to an aircraft, to which we will add employee.
[in]employeeThe employee to add to the aircraft.
Note
this is responsible for adding soldiers to a team in dropship

Definition at line 1945 of file cp_aircraft.cpp.

References aircraft_t::acTeam, AIR_GetTeamSize(), cgi, and aircraft_t::maxTeamSize.

Referenced by AIR_AddEmployee(), and CP_TEAM_AssignSoldierByUCN_f().

◆ AIR_AircraftGetFromIDX()

aircraft_t * AIR_AircraftGetFromIDX ( int aircraftIdx)

Returns aircraft for a given global index.

Parameters
[in]aircraftIdxGlobal aircraft index.
Returns
An aircraft pointer (to a struct in a base) that has the given index or nullptr if no aircraft found.

Definition at line 1132 of file cp_aircraft.cpp.

References AIR_Foreach, cgi, and DEBUG_CLIENT.

Referenced by AIM_AircraftReturnToBase_f(), AIR_GeoSelectAircraft_f(), AIR_LoadAircraftXML(), AIR_SendAircraftToMission_f(), AIR_ShowChangeHomebaseAircraft_f(), AIR_StopAircraft_f(), AIRFIGHT_LoadXML(), BS_Buy_f(), BS_ShowInfo_f(), CP_TEAM_FillEmployeeList_f(), CP_TEAM_FillEquipSoldierList_f(), MIS_LoadXML(), TR_Add_f(), TR_LoadXML(), and TR_TransferStart().

◆ AIR_AircraftHasEnoughFuel()

bool AIR_AircraftHasEnoughFuel ( const aircraft_t * aircraft,
const vec2_t destination )

check if aircraft has enough fuel to go to destination, and then come back home

Parameters
[in]aircraftPointer to the aircraft
[in]destinationPointer to the position the aircraft should go to
See also
GEO_CalcLine
Returns
true if the aircraft can go to the position, false else

Definition at line 472 of file cp_aircraft.cpp.

References AIR_GetRemainingRange(), GetDistanceOnGlobe(), aircraft_t::homebase, aircraft_t::pos, base_t::pos, and DateTime::SECONDS_PER_HOUR.

Referenced by AIR_CampaignRun(), AIR_GeoSelectAircraft_f(), AIR_SendAircraftPursuingUFO(), AIR_SendAircraftToMission(), CL_DisplayPopupInterceptUFO(), and GEO_Click().

◆ AIR_AircraftHasEnoughFuelOneWay()

bool AIR_AircraftHasEnoughFuelOneWay ( const aircraft_t * aircraft,
const vec2_t destination )

check if aircraft has enough fuel to go to destination

Parameters
[in]aircraftPointer to the aircraft
[in]destinationPointer to the position the aircraft should go to
See also
GEO_CalcLine
Returns
true if the aircraft can go to the position, false else

Definition at line 498 of file cp_aircraft.cpp.

References AIR_GetRemainingRange(), GetDistanceOnGlobe(), aircraft_t::pos, and DateTime::SECONDS_PER_HOUR.

Referenced by AIR_CheckMoveIntoNewHomebase().

◆ AIR_AircraftMakeMove()

bool AIR_AircraftMakeMove ( int dt,
aircraft_t * aircraft )

Moves given aircraft.

Parameters
[in]dttime delta
[in]aircraftPointer to aircraft on its way.
Returns
true if the aircraft reached its destination.

Definition at line 926 of file cp_aircraft.cpp.

References AIR_STATS_SPEED, mapline_t::distance, aircraft_t::fuel, GEO_CheckPositionBoundaries(), int(), mapline_t::numPoints, aircraft_t::point, mapline_t::point, aircraft_t::pos, aircraft_t::projectedPos, aircraft_t::route, DateTime::SECONDS_PER_HOUR, aircraft_t::stats, aircraft_t::time, and VectorSet.

Referenced by AIR_Move(), and UFO_CampaignRunUFOs().

◆ AIR_AircraftMenuStatsValues()

int AIR_AircraftMenuStatsValues ( const int value,
const int stat )

Some of the aircraft values needs special calculations when they are shown in the menus.

See also
UP_AircraftStatToName

Definition at line 429 of file cp_aircraft.cpp.

References AIR_STATS_FUELSIZE, AIR_STATS_MAXSPEED, AIR_STATS_SPEED, and int().

Referenced by AIR_AircraftSelect(), GEO_GetAircraftText(), GEO_GetUFOText(), UP_AircraftDescription(), and UP_AircraftItemDescription().

◆ AIR_AircraftReturnToBase()

◆ AIR_AircraftsNotifyMissionRemoved()

void AIR_AircraftsNotifyMissionRemoved ( const struct mission_s * mission)

References dest.

◆ AIR_AircraftsNotifyUFORemoved()

void AIR_AircraftsNotifyUFORemoved ( const aircraft_t *const ufo,
bool destroyed )

Notify that a UFO has been removed.

Parameters
[in]ufoPointer to UFO that has been removed.
[in]destroyedTrue if the UFO has been destroyed, false if it only landed.
Todo
this should be in a BDEF_NotifyUFORemoved callback

Definition at line 1609 of file cp_aircraft.cpp.

References AIR_AircraftReturnToBase(), AIR_Foreach, aircraft_t::aircraftTarget, B_GetNext(), base_t::batteries, i, base_t::lasers, base_t::numBatteries, base_t::numLasers, and baseWeapon_t::target.

Referenced by CP_UFORemoveFromGeoscape().

◆ AIR_AircraftStatusToName()

const char * AIR_AircraftStatusToName ( const aircraft_t * aircraft)

Translates the aircraft status id to a translatable string.

Parameters
[in]aircraftAircraft to translate the status of
Returns
Translation string of given status.

Definition at line 328 of file cp_aircraft.cpp.

References _, AIR_CRASHED, AIR_DROP, AIR_HOME, AIR_IDLE, AIR_INTERCEPT, AIR_IsAircraftInBase(), AIR_MISSION, AIR_NONE, AIR_REFUEL, AIR_RETURNING, AIR_TRANSFER, AIR_TRANSIT, AIR_UFO, B_IsUnderAttack, cgi, ERR_DROP, aircraft_t::homebase, aircraft_t::status, and va().

Referenced by AIR_AircraftFillList_f(), AIR_ShowAircraft_f(), CL_DisplayPopupInterceptMission(), CL_DisplayPopupInterceptUFO(), and GEO_GetAircraftText().

◆ AIR_AircraftsUFODisappear()

void AIR_AircraftsUFODisappear ( const aircraft_t *const ufo)

Notify that a UFO disappear from radars.

Parameters
[in]ufoPointer to a UFO that has disappeared.
Note
Aircraft currently pursuing the specified UFO will be redirected to base

Definition at line 1651 of file cp_aircraft.cpp.

References AIR_AircraftReturnToBase(), AIR_Foreach, AIR_UFO, and aircraft_t::aircraftTarget.

Referenced by UFO_CampaignCheckEvents().

◆ AIR_AssignInitial()

void AIR_AssignInitial ( aircraft_t * aircraft)

Assigns initial team of soldiers to aircraft.

Parameters
[in,out]aircraftsoldiers to add to

Definition at line 2873 of file cp_aircraft.cpp.

References AIR_AddEmployee(), cgi, count, E_Foreach, EMPL_SOLDIER, aircraft_t::homebase, and aircraft_t::maxTeamSize.

Referenced by B_SetUpFirstBase().

◆ AIR_AutoAddPilotToAircraft()

void AIR_AutoAddPilotToAircraft ( const struct base_s * base,
class Employee * pilot )

◆ AIR_BaseCountAircraft()

int AIR_BaseCountAircraft ( const struct base_s * base)

◆ AIR_BaseHasAircraft()

bool AIR_BaseHasAircraft ( const struct base_s * base)

◆ AIR_CampaignRun()

void AIR_CampaignRun ( const struct campaign_s * campaign,
int dt,
bool updateRadarOverlay )

References name.

◆ AIR_CanIntercept()

bool AIR_CanIntercept ( const aircraft_t * aircraft)
Parameters
aircraftThe aircraft to check
Returns
true if the given aircraft can go on interceptions

Definition at line 2650 of file cp_aircraft.cpp.

References AIR_CRASHED, AIR_GetPilot(), AIR_NONE, B_GetBuildingStatus(), B_GetBuildingTemplateSilent(), aircraft_t::building, building_t::buildingType, aircraft_t::homebase, and aircraft_t::status.

Referenced by CL_DisplayPopupInterceptMission(), and CL_DisplayPopupInterceptUFO().

◆ AIR_CheckMoveIntoNewHomebase()

const char * AIR_CheckMoveIntoNewHomebase ( const aircraft_t * aircraft,
const struct base_s * base )

◆ AIR_CountInBaseByTemplate()

int AIR_CountInBaseByTemplate ( const struct base_s * base,
const aircraft_t * aircraftTemplate )

◆ AIR_Delete()

bool AIR_Delete ( struct base_s * base,
aircraft_t * aircraft )

References name.

◆ AIR_DeleteAircraft()

void AIR_DeleteAircraft ( aircraft_t * aircraft)

Removes an aircraft from its base and the game.

Parameters
[in]aircraftPointer to aircraft that should be removed.
Note
The assigned soldiers (if any) are unassinged from the aircraft - not fired.
See also
AIR_DestroyAircraft
Note
If you want to do something different (kill, fire, etc...) do it before calling this function.
Todo
Return status of deletion for better error handling.

Definition at line 837 of file cp_aircraft.cpp.

References AII_RemoveItemFromSlot(), AIR_BaseHasAircraft(), AIR_Delete(), AIR_GetFirstFromBase(), AIR_IsAircraftOnGeoscape(), AIR_RemoveEmployees(), base_t::aircraftCurrent, cgi, aircraft_t::electronics, GEO_NotifyAircraftRemoved(), aircraft_t::homebase, i, base_t::idx, MAX_AIRCRAFTSLOT, RADAR_UpdateWholeRadarOverlay(), aircraft_t::shield, TR_NotifyAircraftRemoved(), and aircraft_t::weapons.

Referenced by AIR_DestroyAircraft(), B_Destroy(), BS_SellAircraft(), TEST_F(), and TR_EmptyTransferCargo().

◆ AIR_DestroyAircraft()

void AIR_DestroyAircraft ( aircraft_t * aircraft,
bool killPilot )

Removes an aircraft from its base and the game.

Parameters
[in]aircraftPointer to aircraft that should be removed.
[in]killPilotShould pilot be removed from game or not?
Note
aircraft and assigned soldiers (if any) are removed from game.
Todo
Return status of deletion for better error handling.

Definition at line 889 of file cp_aircraft.cpp.

References aircraft_t::acTeam, AIR_CRASHED, AIR_DeleteAircraft(), AIR_GetPilot(), AIR_SetPilot(), cgi, Employee::chr, E_DeleteEmployee(), E_RemoveInventoryFromStorage(), ERR_DROP, aircraft_t::id, LIST_Foreach, character_t::name, aircraft_t::status, and character_t::ucn.

Referenced by AIRFIGHT_ActionsAfterAirfight(), B_MoveAircraftOnGeoscapeToOtherBases(), CP_EndRescueMission(), and CP_SpawnRescueMission().

◆ AIR_GetAircraft()

const aircraft_t * AIR_GetAircraft ( const char * name)

Searches the global array of aircraft types for a given aircraft.

Parameters
[in]nameAircraft id.
Returns
aircraft_t pointer or errors out (ERR_DROP)

Definition at line 572 of file cp_aircraft.cpp.

References AIR_GetAircraftSilent(), cgi, ERR_DROP, name, and Q_strnull().

Referenced by AIR_LoadAircraftXML(), B_SetUpFirstBase(), BS_InitMarket(), CP_CampaignRunMarket(), PR_LoadXML(), RS_AssignTechLinks(), TEST_F(), TEST_F(), TEST_F(), UP_AircraftDescription(), UR_DialogInitSell_f(), and US_LoadXML().

◆ AIR_GetAircraftFromBaseByIDXSafe()

aircraft_t * AIR_GetAircraftFromBaseByIDXSafe ( const struct base_s * base,
int index )

References index.

◆ AIR_GetAircraftSilent()

const aircraft_t * AIR_GetAircraftSilent ( const char * name)

Searches the global array of aircraft types for a given aircraft.

Parameters
[in]nameAircraft id.
Returns
aircraft_t pointer or nullptr if not found.
Note
This function gives no warning on null name or if no aircraft found

Definition at line 555 of file cp_aircraft.cpp.

References ccs, i, aircraft_t::id, name, and Q_streq.

Referenced by AIR_GetAircraft(), AIR_ParseAircraft(), BS_Buy_f(), BS_SetAutosell_f(), BS_ShowInfo_f(), GAME_CP_GetItemModel(), and UR_DialogStartStore_f().

◆ AIR_GetAircraftWeaponRanges()

int AIR_GetAircraftWeaponRanges ( const aircraftSlot_t * slot,
int maxSlot,
float * weaponRanges )

Get the all the unique weapon ranges of this aircraft.

Parameters
[in]slotPointer to the aircrafts weapon slot list.
[in]maxSlotmaximum number of weapon slots in aircraft.
[out]weaponRangesAn array containing a unique list of weapons ranges.
Returns
Number of unique weapons ranges.

Definition at line 2085 of file cp_aircraft.cpp.

References AIR_STATS_WRANGE, aircraftSlot_t::ammo, objDef_t::craftitem, MAX_AIRCRAFTSLOT, Q_FloatSort(), and craftItem::stats.

◆ AIR_GetDestinationWhilePursuing()

void AIR_GetDestinationWhilePursuing ( const aircraft_t * shooter,
const aircraft_t * target,
vec2_t dest )

Calculates the point where aircraft should go to intecept a moving target.

Parameters
[in]shooterPointer to shooting aircraft.
[in]targetPointer to target aircraft.
[out]destDestination that shooting aircraft should aim to intercept target aircraft.
Todo
only compute this calculation every time target changes destination, or one of the aircraft speed changes.
See also
AIR_SendAircraftPursuingUFO
UFO_SendPursuingAircraft

In the following, we note S the position of the shooter, T the position of the target, D the destination of the target and I the interception point where shooter should reach target O is the center of earth. A, B and C are the angles TSI, STI and SIT a, b, and c are the angles TOI, SOI and SOT

According to geometry on a sphere, the values defined above must be solutions of both equations: sin(A) / sin(a) = sin(B) / sin(b) cos(a) = cos(b) * cos(c) + sin(b) * sin(c) * cos(A) And we have another equation, given by the fact that shooter and target must reach I at the same time: shooterSpeed * a = targetSpeed * b We the want to find and equation linking a, c and B (we know the last 2 values). We therefore eliminate b, then A, to get the equation we need to solve: pow(cos(a) - cos(speedRatio * a) * cos(c), 2.)

  • sin(c) * sin(c) * (sin(speedRatio * a) * sin(speedRatio * a) - sin(a) * sin(a) * sin(B) * sin(B)) = 0
Todo
add EQUAL_EPSILON here?

Definition at line 1806 of file cp_aircraft.cpp.

References AIR_GetDestinationFindRoot(), AIR_STATS_SPEED, cgi, CrossProduct(), DEBUG_CLIENT, dest, DotProduct, GetDistanceOnGlobe(), mapline_t::numPoints, mapline_t::point, PolarToVec(), aircraft_t::pos, RotatePointAroundVector(), aircraft_t::route, aircraft_t::stats, todeg, torad, VecToPolar(), Vector2Copy, and VectorNormalize().

Referenced by AIR_SendAircraftPursuingUFO(), UFO_SearchAircraftTarget(), and UFO_SendPursuingAircraft().

◆ AIR_GetFirstFromBase()

aircraft_t * AIR_GetFirstFromBase ( const struct base_s * base)

◆ AIR_GetHangarCapacityType()

◆ AIR_GetOperationRange()

int AIR_GetOperationRange ( const aircraft_t * aircraft)

Calculates the range an aircraft can fly on the geoscape.

Parameters
aircraftThe aircraft to calculate the range for
Returns
The range

Definition at line 448 of file cp_aircraft.cpp.

References AIR_STATS_FUELSIZE, AIR_STATS_SPEED, int(), KILOMETER_PER_DEGREE, DateTime::SECONDS_PER_HOUR, and aircraft_t::stats.

Referenced by AIR_AircraftSelect(), and UP_AircraftDescription().

◆ AIR_GetPilot()

◆ AIR_GetRemainingRange()

int AIR_GetRemainingRange ( const aircraft_t * aircraft)

Calculates the remaining range the aircraft can fly.

Parameters
aircraftThe aircraft to calculate the remaining range for
Returns
The remaining range

Definition at line 460 of file cp_aircraft.cpp.

References AIR_STATS_SPEED, aircraft_t::fuel, and aircraft_t::stats.

Referenced by AIR_AircraftHasEnoughFuel(), and AIR_AircraftHasEnoughFuelOneWay().

◆ AIR_GetTeamSize()

◆ AIR_InitStartup()

void AIR_InitStartup ( void )

Init actions for aircraft-subsystem.

Definition at line 2909 of file cp_aircraft.cpp.

References AIR_InitCallbacks(), aircraftDebugCmds, and cgi.

Referenced by CP_InitStartup().

◆ AIR_IsAircraftInBase()

bool AIR_IsAircraftInBase ( const aircraft_t * aircraft)

Checks whether given aircraft is in its homebase.

Parameters
[in]aircraftPointer to an aircraft.
Returns
true if given aircraft is in its homebase.
false if given aircraft is not in its homebase.

Definition at line 372 of file cp_aircraft.cpp.

References AIR_HOME, AIR_REFUEL, and aircraft_t::status.

Referenced by AII_AutoAddAmmo(), AII_ReloadWeapon(), AII_RepairAircraft(), AII_UpdateInstallationDelay(), AIM_AircraftStart_f(), AIR_AircraftFillList_f(), AIR_AircraftSelect(), AIR_AircraftStatusToName(), AIR_SendAircraftPursuingUFO(), AIR_SendAircraftToMission(), AIR_ShowAircraft_f(), AIRFIGHT_ProjectileHits(), BS_FillMarket_f(), BS_SellAircraft(), GEO_Draw(), Employee::isAwayFromBase(), TR_AircraftListSelect(), and TR_FillAircraft().

◆ AIR_IsAircraftOnGeoscape()

bool AIR_IsAircraftOnGeoscape ( const aircraft_t * aircraft)

Checks whether given aircraft is on geoscape.

Parameters
[in]aircraftPointer to an aircraft.
Note
aircraft may be neither on geoscape, nor in base (like when it's transferred)
Returns
false if given aircraft is not on geoscape, true if given aircraft is on geoscape.
See also
UFO_IsUFOSeenOnGeoscape

Definition at line 386 of file cp_aircraft.cpp.

References AIR_CRASHED, AIR_DROP, AIR_HOME, AIR_IDLE, AIR_INTERCEPT, AIR_MISSION, AIR_NONE, AIR_REFUEL, AIR_RETURNING, AIR_TRANSFER, AIR_TRANSIT, AIR_UFO, cgi, ERR_FATAL, and aircraft_t::status.

Referenced by AB_UpdateStealthForAllBase(), AIR_AircraftReturnToBase(), AIR_CampaignRun(), AIR_DeleteAircraft(), B_MoveAircraftOnGeoscapeToOtherBases(), GEO_Click(), GEO_DrawMarkers(), GEO_GetGeoscapeAngle(), RADAR_AddDetectedUFOToEveryRadar(), RADAR_UpdateWholeRadarOverlay(), TEST_F(), UFO_CampaignCheckEvents(), UFO_CheckShootBack(), and UFO_SearchAircraftTarget().

◆ AIR_IsEmployeeInAircraft()

const aircraft_t * AIR_IsEmployeeInAircraft ( const class Employee * employee,
const aircraft_t * aircraft )

◆ AIR_IsInAircraftTeam()

bool AIR_IsInAircraftTeam ( const aircraft_t * aircraft,
const class Employee * employee )

◆ AIR_MoveAircraftIntoNewHomebase()

void AIR_MoveAircraftIntoNewHomebase ( aircraft_t * aircraft,
struct base_s * base )

◆ AIR_MoveEmployeeInventoryIntoStorage()

void AIR_MoveEmployeeInventoryIntoStorage ( const aircraft_t & aircraft,
equipDef_t & ed )

Move all the equipment carried by the team on the aircraft into the given equipment.

Parameters
[in]aircraftThe craft with the team (and thus equipment) onboard.
[out]edThe equipment definition which will receive all the stuff from the aircraft-team.

Definition at line 2817 of file cp_aircraft.cpp.

References aircraft_t::acTeam, equipDef_t::addClip(), AIR_GetTeamSize(), Item::ammoDef(), cgi, DEBUG_CLIENT, Item::def(), Item::getAmmoLeft(), Item::getNext(), Container::getNextItem(), LIST_Foreach, equipDef_t::numItems, and type.

Referenced by B_InitialEquipment().

◆ AIR_NewAircraft()

aircraft_t * AIR_NewAircraft ( struct base_s * base,
const aircraft_t * aircraftTemplate )

◆ AIR_ParseAircraft()

◆ AIR_PilotSurvivedCrash()

bool AIR_PilotSurvivedCrash ( const aircraft_t * aircraft)

Determine if an aircraft's pilot survived a crash, based on his piloting skill (and a bit of randomness).

Parameters
[in]aircraftPointer to crashed aircraft
Returns
true if survived, false if not

Definition at line 2023 of file cp_aircraft.cpp.

References cgi, Employee::chr, crand(), GEO_GetColor(), MAPTYPE_TERRAIN, aircraft_t::pilot, aircraft_t::pos, character_t::score, SKILL_PILOTING, and chrScoreGlobal_t::skills.

Referenced by AIRFIGHT_ActionsAfterAirfight(), and CP_SpawnRescueMission().

◆ AIR_RemoveEmployee()

bool AIR_RemoveEmployee ( Employee * employee,
aircraft_t * aircraft )

Removes a soldier from an aircraft.

Parameters
[in,out]employeeThe soldier to be removed from the aircraft.
[in,out]aircraftThe aircraft to remove the soldier from. Use nullptr to remove the soldier from any aircraft.
See also
AIR_AddEmployee

Definition at line 2724 of file cp_aircraft.cpp.

References aircraft_t::acTeam, AIR_Foreach, AIR_GetPilot(), AIR_IsEmployeeInAircraft(), AIR_SetPilot(), cgi, Employee::chr, DEBUG_CLIENT, EMPL_PILOT, Employee::getType(), aircraft_t::homebase, aircraft_t::idx, and character_t::ucn.

Referenced by AIR_RemoveEmployees(), CP_EndRescueMission(), CP_TEAM_AssignSoldierByUCN_f(), TR_TransferStart(), and Employee::unassign().

◆ AIR_RemoveEmployees()

void AIR_RemoveEmployees ( aircraft_t & aircraft)

Removes all soldiers from an aircraft.

Parameters
[in,out]aircraftThe aircraft to remove the soldiers from.
See also
AIR_RemoveEmployee

Definition at line 2797 of file cp_aircraft.cpp.

References aircraft_t::acTeam, AIR_GetTeamSize(), AIR_RemoveEmployee(), AIR_SetPilot(), cgi, ERR_DROP, and LIST_Foreach.

Referenced by AIR_DeleteAircraft(), and BS_Buy_f().

◆ AIR_RemovePilotFromAssignedAircraft()

void AIR_RemovePilotFromAssignedAircraft ( const struct base_s * base,
const class Employee * pilot )

◆ AIR_ResetAircraftTeam()

void AIR_ResetAircraftTeam ( aircraft_t * aircraft)

Resets team in given aircraft.

Parameters
[in]aircraftPointer to an aircraft, where the team will be reset.

Definition at line 1934 of file cp_aircraft.cpp.

References aircraft_t::acTeam, and cgi.

Referenced by AIR_NewAircraft(), and AIR_Shutdown().

◆ AIR_ScriptSanityCheck()

bool AIR_ScriptSanityCheck ( void )

◆ AIR_SendAircraftPursuingUFO()

bool AIR_SendAircraftPursuingUFO ( aircraft_t * aircraft,
aircraft_t * ufo )

◆ AIR_SendAircraftToMission()

bool AIR_SendAircraftToMission ( aircraft_t * aircraft,
struct mission_s * mission )

◆ AIR_SetPilot()

bool AIR_SetPilot ( aircraft_t * aircraft,
Employee * pilot )

Assign a pilot to an aircraft.

Parameters
[out]aircraftPointer to the aircraft to add pilot to
[in]pilotPointer to the pilot to add
Returns
true if the assignment was successful (there wasn't a pilot assigned), false if there was already a pilot assigned and we tried to assign a new one (pilot isn't nullptr).

Definition at line 1993 of file cp_aircraft.cpp.

References aircraft_t::pilot.

Referenced by AIR_AutoAddPilotToAircraft(), AIR_DestroyAircraft(), AIR_LoadAircraftXML(), AIR_RemoveEmployee(), AIR_RemoveEmployees(), AIR_RemovePilotFromAssignedAircraft(), and CP_TEAM_AssignSoldierByUCN_f().

◆ AIR_Shutdown()

void AIR_Shutdown ( void )

Closing actions for aircraft-subsystem.

Definition at line 2918 of file cp_aircraft.cpp.

References AIR_Foreach, AIR_ResetAircraftTeam(), AIR_ShutdownCallbacks(), aircraftDebugCmds, ccs, and cgi.

Referenced by CP_Shutdown().