Merge branch 'FF/Develop' into FF/Fox2

This commit is contained in:
Frank
2019-08-11 20:39:15 +02:00
8 changed files with 250 additions and 114 deletions
+43 -3
View File
@@ -349,10 +349,16 @@ function AI_ESCORT:onafterStart( EscortGroupSet )
self.Detection = DETECTION_AREAS:New( EscortGroupSet, 5000 ) self.Detection = DETECTION_AREAS:New( EscortGroupSet, 5000 )
self.Detection:__Start( 30 ) -- This only makes the escort report detections made by the escort, not through DLINK.
-- These must be enquired using other facilities.
-- In this way, the escort will report the target areas that are relevant for the mission.
self.Detection:InitDetectVisual( true )
self.Detection:InitDetectIRST( true )
self.Detection:InitDetectOptical( true )
self.Detection:InitDetectRadar( true )
self.Detection:InitDetectRWR( true )
self:HandleEvent( EVENTS.Dead, OnEventDeadOrCrash ) self.Detection:__Start( 30 )
self:HandleEvent( EVENTS.Crash, OnEventDeadOrCrash )
self.MainMenu = MENU_GROUP:New( self.PlayerGroup, self.EscortName ) self.MainMenu = MENU_GROUP:New( self.PlayerGroup, self.EscortName )
self.FlightMenu = MENU_GROUP:New( self.PlayerGroup, "Flight", self.MainMenu ) self.FlightMenu = MENU_GROUP:New( self.PlayerGroup, "Flight", self.MainMenu )
@@ -367,12 +373,45 @@ function AI_ESCORT:onafterStart( EscortGroupSet )
self:_InitEscortRoute( EscortGroup ) self:_InitEscortRoute( EscortGroup )
self:SetFlightModeFormation( EscortGroup ) self:SetFlightModeFormation( EscortGroup )
--- @param #AI_ESCORT self
-- @param Core.Event#EVENTDATA EventData
function EscortGroup:OnEventDeadOrCrash( EventData )
self:F( { "EventDead", EventData } )
self.EscortMenu:Remove()
end
EscortGroup:HandleEvent( EVENTS.Dead, EscortGroup.OnEventDeadOrCrash )
EscortGroup:HandleEvent( EVENTS.Crash, EscortGroup.OnEventDeadOrCrash )
end end
) )
end end
--- @param #AI_ESCORT self
-- @param Core.Set#SET_GROUP EscortGroupSet
function AI_ESCORT:onafterStop( EscortGroupSet )
self:F()
EscortGroupSet:ForEachGroup(
--- @param Core.Group#GROUP EscortGroup
function( EscortGroup )
EscortGroup:WayPointInitialize()
EscortGroup:OptionROTVertical()
EscortGroup:OptionROEOpenFire()
end
)
self.Detection:Stop()
self.MainMenu:Remove()
end
--- Set a Detection method for the EscortUnit to be reported upon. --- Set a Detection method for the EscortUnit to be reported upon.
-- Detection methods are based on the derived classes from DETECTION_BASE. -- Detection methods are based on the derived classes from DETECTION_BASE.
-- @param #AI_ESCORT self -- @param #AI_ESCORT self
@@ -707,6 +746,7 @@ function AI_ESCORT:SetEscortMenuJoinUp( EscortGroup )
end end
--- Defines --- Defines a menu slot to let the escort to join formation. --- Defines --- Defines a menu slot to let the escort to join formation.
-- @param #AI_ESCORT self -- @param #AI_ESCORT self
-- @return #AI_ESCORT -- @return #AI_ESCORT
@@ -1,21 +1,8 @@
--- **AI** -- (R2.4) - Models the assignment of AI escorts to player flights. --- **AI** -- (R2.5) - Models the automatic assignment of AI escorts to player flights.
-- --
-- ## Features: -- ## Features:
-- -- -- --
-- * Provides the facilities to trigger escorts when players join flight units. -- * Provides the facilities to trigger escorts when players join flight slots.
-- * Provide different means how escorts can be triggered:
-- * Directly when a player joins a plane.
-- * Through the menu.
--
-- ===
--
-- ## Test Missions:
--
-- Test missions can be located on the main GITHUB site.
--
-- [FlightControl-Master/MOOSE_MISSIONS]
--
-- ===
-- --
-- === -- ===
-- --
@@ -28,14 +15,10 @@
--- @type AI_ESCORT_DISPATCHER --- @type AI_ESCORT_DISPATCHER
-- @field Core.Set#SET_GROUP CarrierSet The set of @{Wrapper.Group#GROUP} objects of carriers that will transport the cargo.
-- @field Core.Set#SET_GROUP EscortGroupSet The set of group AI escorting the EscortUnit.
-- @field #string EscortName Name of the escort.
-- @field #string EscortBriefing A text showing the AI_ESCORT briefing to the player. Note that if no EscortBriefing is provided, the default briefing will be shown.
-- @extends Core.Fsm#FSM -- @extends Core.Fsm#FSM
--- A dynamic cargo handling capability for AI groups. --- Models the automatic assignment of AI escorts to player flights.
-- --
-- === -- ===
-- --
@@ -50,12 +33,34 @@ AI_ESCORT_DISPATCHER.AI_Escorts = {}
--- Creates a new AI_ESCORT_DISPATCHER object. --- Creates a new AI_ESCORT_DISPATCHER object.
-- @param #AI_ESCORT_DISPATCHER self -- @param #AI_ESCORT_DISPATCHER self
-- @param Core.Set#SET_GROUP CarrierSet The set of @{Wrapper.Group#GROUP} objects of carriers that will transport the cargo. -- @param Core.Set#SET_GROUP CarrierSet The set of @{Wrapper.Group#GROUP} objects of carriers for which escorts are spawned in.
-- @param Core.Spawn#SPAWN EscortSpawn The spawn object that will spawn in the Escorts. -- @param Core.Spawn#SPAWN EscortSpawn The spawn object that will spawn in the Escorts.
-- @param Wrapper.Airbase#AIRBASE EscortAirbase The airbase where the escorts are spawned. -- @param Wrapper.Airbase#AIRBASE EscortAirbase The airbase where the escorts are spawned.
-- @param #string EscortName Name of the escort. -- @param #string EscortName Name of the escort, which will also be the name of the escort menu.
-- @param #string EscortBriefing A text showing the AI_ESCORT briefing to the player. Note that if no EscortBriefing is provided, the default briefing will be shown. -- @param #string EscortBriefing A text showing the briefing to the player. Note that if no EscortBriefing is provided, the default briefing will be shown.
-- @return #AI_ESCORT_DISPATCHER -- @return #AI_ESCORT_DISPATCHER
-- @usage
--
-- -- Create a new escort when a player joins an SU-25T plane.
-- Create a carrier set, which contains the player slots that can be joined by the players, for which escorts will be defined.
-- local Red_SU25T_CarrierSet = SET_GROUP:New():FilterPrefixes( "Red A2G Player Su-25T" ):FilterStart()
--
-- -- Create a spawn object that will spawn in the escorts, once the player has joined the player slot.
-- local Red_SU25T_EscortSpawn = SPAWN:NewWithAlias( "Red A2G Su-25 Escort", "Red AI A2G SU-25 Escort" ):InitLimit( 10, 10 )
--
-- -- Create an airbase object, where the escorts will be spawned.
-- local Red_SU25T_Airbase = AIRBASE:FindByName( AIRBASE.Caucasus.Maykop_Khanskaya )
--
-- -- Park the airplanes at the airbase, visible before start.
-- Red_SU25T_EscortSpawn:ParkAtAirbase( Red_SU25T_Airbase, AIRBASE.TerminalType.OpenMedOrBig )
--
-- -- New create the escort dispatcher, using the carrier set, the escort spawn object at the escort airbase.
-- -- Provide a name of the escort, which will be also the name appearing on the radio menu for the group.
-- -- And a briefing to appear when the player joins the player slot.
-- Red_SU25T_EscortDispatcher = AI_ESCORT_DISPATCHER:New( Red_SU25T_CarrierSet, Red_SU25T_EscortSpawn, Red_SU25T_Airbase, "Escort Su-25", "You Su-25T is escorted by one Su-25. Use the radio menu to control the escorts." )
--
-- -- The dispatcher needs to be started using the :Start() method.
-- Red_SU25T_EscortDispatcher:Start()
function AI_ESCORT_DISPATCHER:New( CarrierSet, EscortSpawn, EscortAirbase, EscortName, EscortBriefing ) function AI_ESCORT_DISPATCHER:New( CarrierSet, EscortSpawn, EscortAirbase, EscortName, EscortBriefing )
local self = BASE:Inherit( self, FSM:New() ) -- #AI_ESCORT_DISPATCHER local self = BASE:Inherit( self, FSM:New() ) -- #AI_ESCORT_DISPATCHER
@@ -85,10 +90,34 @@ function AI_ESCORT_DISPATCHER:onafterStart( From, Event, To )
self:HandleEvent( EVENTS.Birth ) self:HandleEvent( EVENTS.Birth )
self:HandleEvent( EVENTS.PlayerLeaveUnit ) self:HandleEvent( EVENTS.PlayerLeaveUnit, self.OnEventExit )
self:HandleEvent( EVENTS.Crash, self.OnEventExit )
self:HandleEvent( EVENTS.Dead, self.OnEventExit )
end end
--- @param #AI_ESCORT_DISPATCHER self
-- @param Core.Event#EVENTDATA EventData
function AI_ESCORT_DISPATCHER:OnEventExit( EventData )
local PlayerGroupName = EventData.IniGroupName
local PlayerGroup = EventData.IniGroup
local PlayerUnit = EventData.IniUnit
self:I({EscortAirbase= self.EscortAirbase } )
self:I({PlayerGroupName = PlayerGroupName } )
self:I({PlayerGroup = PlayerGroup})
self:I({FirstGroup = self.CarrierSet:GetFirst()})
self:I({FindGroup = self.CarrierSet:FindGroup( PlayerGroupName )})
if self.CarrierSet:FindGroup( PlayerGroupName ) then
if self.AI_Escorts[PlayerGroupName] then
self.AI_Escorts[PlayerGroupName]:Stop()
self.AI_Escorts[PlayerGroupName] = nil
end
end
end
--- @param #AI_ESCORT_DISPATCHER self --- @param #AI_ESCORT_DISPATCHER self
-- @param Core.Event#EVENTDATA EventData -- @param Core.Event#EVENTDATA EventData
@@ -1,21 +1,9 @@
--- **AI** -- (R2.4) - Models the assignment of AI escorts to player flights upon request using the radio menu. --- **AI** -- (R2.5) - Models the assignment of AI escorts to player flights upon request using the radio menu.
-- --
-- ## Features: -- ## Features:
-- -- --
-- * Provides the facilities to trigger escorts when players join flight units. -- * Provides the facilities to trigger escorts when players join flight units.
-- * Provide different means how escorts can be triggered: -- * Provide a menu for which escorts can be requested.
-- * Directly when a player joins a plane.
-- * Through the menu.
--
-- ===
--
-- ## Test Missions:
--
-- Test missions can be located on the main GITHUB site.
--
-- [FlightControl-Master/MOOSE_MISSIONS]
--
-- ===
-- --
-- === -- ===
-- --
@@ -28,14 +16,10 @@
--- @type AI_ESCORT_DISPATCHER_REQUEST --- @type AI_ESCORT_DISPATCHER_REQUEST
-- @field Core.Set#SET_GROUP CarrierSet The set of @{Wrapper.Group#GROUP} objects of carriers that will transport the cargo.
-- @field Core.Set#SET_GROUP EscortGroupSet The set of group AI escorting the EscortUnit.
-- @field #string EscortName Name of the escort.
-- @field #string EscortBriefing A text showing the AI_ESCORT briefing to the player. Note that if no EscortBriefing is provided, the default briefing will be shown.
-- @extends Core.Fsm#FSM -- @extends Core.Fsm#FSM
--- A dynamic cargo handling capability for AI groups. --- Models the assignment of AI escorts to player flights upon request using the radio menu.
-- --
-- === -- ===
-- --
@@ -50,11 +34,11 @@ AI_ESCORT_DISPATCHER_REQUEST.AI_Escorts = {}
--- Creates a new AI_ESCORT_DISPATCHER_REQUEST object. --- Creates a new AI_ESCORT_DISPATCHER_REQUEST object.
-- @param #AI_ESCORT_DISPATCHER_REQUEST self -- @param #AI_ESCORT_DISPATCHER_REQUEST self
-- @param Core.Set#SET_GROUP CarrierSet The set of @{Wrapper.Group#GROUP} objects of carriers that will transport the cargo. -- @param Core.Set#SET_GROUP CarrierSet The set of @{Wrapper.Group#GROUP} objects of carriers for which escorts are requested.
-- @param Core.Spawn#SPAWN EscortSpawn The spawn object that will spawn in the Escorts. -- @param Core.Spawn#SPAWN EscortSpawn The spawn object that will spawn in the Escorts.
-- @param Wrapper.Airbase#AIRBASE EscortAirbase The airbase where the escorts are spawned. -- @param Wrapper.Airbase#AIRBASE EscortAirbase The airbase where the escorts are spawned.
-- @param #string EscortName Name of the escort. -- @param #string EscortName Name of the escort, which will also be the name of the escort menu.
-- @param #string EscortBriefing A text showing the AI_ESCORT briefing to the player. Note that if no EscortBriefing is provided, the default briefing will be shown. -- @param #string EscortBriefing A text showing the briefing to the player. Note that if no EscortBriefing is provided, the default briefing will be shown.
-- @return #AI_ESCORT_DISPATCHER_REQUEST -- @return #AI_ESCORT_DISPATCHER_REQUEST
function AI_ESCORT_DISPATCHER_REQUEST:New( CarrierSet, EscortSpawn, EscortAirbase, EscortName, EscortBriefing ) function AI_ESCORT_DISPATCHER_REQUEST:New( CarrierSet, EscortSpawn, EscortAirbase, EscortName, EscortBriefing )
@@ -85,10 +69,35 @@ function AI_ESCORT_DISPATCHER_REQUEST:onafterStart( From, Event, To )
self:HandleEvent( EVENTS.Birth ) self:HandleEvent( EVENTS.Birth )
self:HandleEvent( EVENTS.PlayerLeaveUnit ) self:HandleEvent( EVENTS.PlayerLeaveUnit, self.OnEventExit )
self:HandleEvent( EVENTS.Crash, self.OnEventExit )
self:HandleEvent( EVENTS.Dead, self.OnEventExit )
end end
--- @param #AI_ESCORT_DISPATCHER_REQUEST self
-- @param Core.Event#EVENTDATA EventData
function AI_ESCORT_DISPATCHER_REQUEST:OnEventExit( EventData )
local PlayerGroupName = EventData.IniGroupName
local PlayerGroup = EventData.IniGroup
local PlayerUnit = EventData.IniUnit
self.CarrierSet:Flush(self)
self:I({EscortAirbase= self.EscortAirbase } )
self:I({PlayerGroupName = PlayerGroupName } )
self:I({PlayerGroup = PlayerGroup})
self:I({FirstGroup = self.CarrierSet:GetFirst()})
self:I({FindGroup = self.CarrierSet:FindGroup( PlayerGroupName )})
if self.CarrierSet:FindGroup( PlayerGroupName ) then
if self.AI_Escorts[PlayerGroupName] then
self.AI_Escorts[PlayerGroupName]:Stop()
self.AI_Escorts[PlayerGroupName] = nil
end
end
end
--- @param #AI_ESCORT_DISPATCHER_REQUEST self --- @param #AI_ESCORT_DISPATCHER_REQUEST self
-- @param Core.Event#EVENTDATA EventData -- @param Core.Event#EVENTDATA EventData
@@ -206,12 +206,13 @@ AI_ESCORT_REQUEST = {
-- Escort:__Start( 5 ) -- Escort:__Start( 5 )
function AI_ESCORT_REQUEST:New( EscortUnit, EscortSpawn, EscortAirbase, EscortName, EscortBriefing ) function AI_ESCORT_REQUEST:New( EscortUnit, EscortSpawn, EscortAirbase, EscortName, EscortBriefing )
self.EscortGroupSet = SET_GROUP:New():FilterDeads():FilterCrashes() local EscortGroupSet = SET_GROUP:New():FilterDeads():FilterCrashes()
local self = BASE:Inherit( self, AI_ESCORT:New( EscortUnit, EscortGroupSet, EscortName, EscortBriefing ) ) -- #AI_ESCORT_REQUEST
self.EscortGroupSet = EscortGroupSet
self.EscortSpawn = EscortSpawn self.EscortSpawn = EscortSpawn
self.EscortAirbase = EscortAirbase self.EscortAirbase = EscortAirbase
local self = BASE:Inherit( self, AI_ESCORT:New( EscortUnit, self.EscortGroupSet, EscortName, EscortBriefing ) ) -- #AI_ESCORT_REQUEST
self.LeaderGroup = self.PlayerUnit:GetGroup() self.LeaderGroup = self.PlayerUnit:GetGroup()
self.Detection = DETECTION_AREAS:New( self.EscortGroupSet, 5000 ) self.Detection = DETECTION_AREAS:New( self.EscortGroupSet, 5000 )
@@ -284,6 +285,28 @@ function AI_ESCORT_REQUEST:onafterStart( EscortGroupSet )
end end
--- @param #AI_ESCORT_REQUEST self
-- @param Core.Set#SET_GROUP EscortGroupSet
function AI_ESCORT_REQUEST:onafterStop( EscortGroupSet )
self:F()
EscortGroupSet:ForEachGroup(
--- @param Core.Group#GROUP EscortGroup
function( EscortGroup )
EscortGroup:WayPointInitialize()
EscortGroup:OptionROTVertical()
EscortGroup:OptionROEOpenFire()
end
)
self.Detection:Stop()
self.MainMenu:Remove()
end
--- Set the spawn mode to be mission execution. --- Set the spawn mode to be mission execution.
-- @param #AI_ESCORT_REQUEST self -- @param #AI_ESCORT_REQUEST self
function AI_ESCORT_REQUEST:SetEscortSpawnMission() function AI_ESCORT_REQUEST:SetEscortSpawnMission()
@@ -5784,11 +5784,9 @@ end
-- @param Wrapper.Group#GROUP group The group that arrived. -- @param Wrapper.Group#GROUP group The group that arrived.
function WAREHOUSE:_Arrived(group) function WAREHOUSE:_Arrived(group)
self:_DebugMessage(string.format("Group %s arrived!", tostring(group:GetName()))) self:_DebugMessage(string.format("Group %s arrived!", tostring(group:GetName())))
--self:E(string.format("Group %s arrived!", tostring(group:GetName())))
if group then if group then
--Trigger "Arrived event. --Trigger "Arrived event.
--group:SmokeBlue()
self:__Arrived(1, group) self:__Arrived(1, group)
end end
@@ -5800,14 +5798,10 @@ end
-- @param #number n Waypoint passed. -- @param #number n Waypoint passed.
-- @param #number N Final waypoint. -- @param #number N Final waypoint.
function WAREHOUSE:_PassingWaypoint(group,n,N) function WAREHOUSE:_PassingWaypoint(group,n,N)
self:T(string.format("Group %s passing waypoint %d of %d!", tostring(group:GetName()), n, N)) self:T(self.wid..string.format("Group %s passing waypoint %d of %d!", tostring(group:GetName()), n, N))
if group then
--group:SmokeGreen()
end
-- Final waypoint reached.
if n==N then if n==N then
--group:SmokeBlue()
self:__Arrived(1, group) self:__Arrived(1, group)
end end
+30 -10
View File
@@ -1683,7 +1683,7 @@ AIRBOSS.MenuF10Root=nil
--- Airboss class version. --- Airboss class version.
-- @field #string version -- @field #string version
AIRBOSS.version="1.0.6" AIRBOSS.version="1.0.7"
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- TODO list -- TODO list
@@ -2068,7 +2068,7 @@ function AIRBOSS:New(carriername, alias)
self:AddTransition("*", "Status", "*") -- Update status of players and queues. self:AddTransition("*", "Status", "*") -- Update status of players and queues.
self:AddTransition("*", "RecoveryCase", "*") -- Switch to another case recovery. self:AddTransition("*", "RecoveryCase", "*") -- Switch to another case recovery.
self:AddTransition("*", "PassingWaypoint", "*") -- Carrier is passing a waypoint. self:AddTransition("*", "PassingWaypoint", "*") -- Carrier is passing a waypoint.
self:AddTransition("*", "LSOgrade", "*") -- LSO grade. self:AddTransition("*", "LSOGrade", "*") -- LSO grade.
self:AddTransition("*", "Save", "*") -- Save player scores to file. self:AddTransition("*", "Save", "*") -- Save player scores to file.
self:AddTransition("*", "Stop", "Stopped") -- Stop AIRBOSS FMS. self:AddTransition("*", "Stop", "Stopped") -- Stop AIRBOSS FMS.
@@ -2265,6 +2265,29 @@ function AIRBOSS:New(carriername, alias)
-- @param #AIRBOSS.LSOgrade grade LSO grade. -- @param #AIRBOSS.LSOgrade grade LSO grade.
--- Triggers the FSM event "LSOGrade". Called when the LSO grades a player
-- @function [parent=#AIRBOSS] LSOGrade
-- @param #AIRBOSS self
-- @param #AIRBOSS.PlayerData playerData Player Data.
-- @param #AIRBOSS.LSOgrade grade LSO grade.
--- Triggers the FSM event "LSOGrade". Delayed called when the LSO grades a player.
-- @function [parent=#AIRBOSS] __LSOGrade
-- @param #AIRBOSS self
-- @param #number delay Delay in seconds.
-- @param #AIRBOSS.PlayerData playerData Player Data.
-- @param #AIRBOSS.LSOgrade grade LSO grade.
--- On after "LSOGrade" user function. Called when the carrier passes a waypoint of its route.
-- @function [parent=#AIRBOSS] OnAfterLSOGrade
-- @param #AIRBOSS self
-- @param #string From From state.
-- @param #string Event Event.
-- @param #string To To state.
-- @param #AIRBOSS.PlayerData playerData Player Data.
-- @param #AIRBOSS.LSOgrade grade LSO grade.
--- Triggers the FSM event "Stop" that stops the airboss. Event handlers are stopped. --- Triggers the FSM event "Stop" that stops the airboss. Event handlers are stopped.
-- @function [parent=#AIRBOSS] Stop -- @function [parent=#AIRBOSS] Stop
-- @param #AIRBOSS self -- @param #AIRBOSS self
@@ -9969,14 +9992,8 @@ function AIRBOSS:_CheckFoulDeck(playerData)
-- Assume no check necessary. -- Assume no check necessary.
local check=false local check=false
-- Case I/II: Check is done, when AC is at the wake according to NATOPS. At the wake we switch to final. -- CVN: Check at IM and IC.
if playerData.case<3 and playerData.step==AIRBOSS.PatternStep.FINAL then if playerData.step==AIRBOSS.PatternStep.GROOVE_IM or
check=true
end
-- Case III: Check is done at 3/4 NM according to NATOPS.
if playerData.step==AIRBOSS.PatternStep.GROOVE_XX or
playerData.step==AIRBOSS.PatternStep.GROOVE_IM or
playerData.step==AIRBOSS.PatternStep.GROOVE_IC then playerData.step==AIRBOSS.PatternStep.GROOVE_IC then
check=true check=true
end end
@@ -12742,6 +12759,9 @@ function AIRBOSS:_Debrief(playerData)
-- Add LSO grade to player grades table. -- Add LSO grade to player grades table.
table.insert(self.playerscores[playerData.name], mygrade) table.insert(self.playerscores[playerData.name], mygrade)
-- Trigger grading event.
self:LSOGrade(playerdata, mygrade)
-- LSO grade: (OK) 3.0 PT - LURIM -- LSO grade: (OK) 3.0 PT - LURIM
local text=string.format("%s %.1f PT - %s", grade, Points, analysis) local text=string.format("%s %.1f PT - %s", grade, Points, analysis)
if Points==-1 then if Points==-1 then
+21 -1
View File
@@ -361,6 +361,26 @@ function AIRBASE:FindByName( AirbaseName )
return AirbaseFound return AirbaseFound
end end
--- Find a AIRBASE in the _DATABASE by its ID.
-- @param #AIRBASE self
-- @param #number id Airbase ID.
-- @return #AIRBASE self
function AIRBASE:FindByID(id)
for name,_airbase in pairs(_DATABASE.AIRBASES) do
local airbase=_airbase --#AIRBASE
local aid=tonumber(airbase:GetID())
if aid==id then
return airbase
end
end
return nil
end
--- Get the DCS object of an airbase --- Get the DCS object of an airbase
-- @param #AIRBASE self -- @param #AIRBASE self
-- @return DCS#Airbase DCS airbase object. -- @return DCS#Airbase DCS airbase object.
@@ -604,7 +624,7 @@ function AIRBASE:GetParkingSpotData(TerminalID)
for _,_spot in pairs(parkingdata) do for _,_spot in pairs(parkingdata) do
local spot=_spot --#AIRBASE.ParkingSpot local spot=_spot --#AIRBASE.ParkingSpot
self:E({TerminalID=spot.TerminalID,TerminalType=spot.TerminalType}) self:T({TerminalID=spot.TerminalID,TerminalType=spot.TerminalType})
if TerminalID==spot.TerminalID then if TerminalID==spot.TerminalID then
return spot return spot
end end
@@ -136,6 +136,7 @@ function STATIC:Destroy( GenerateEvent )
end end
DCSObject:destroy() DCSObject:destroy()
return true
end end
return nil return nil