mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
-- Fix issue SET_AIRBASE does not update #817.
This commit is contained in:
@@ -152,13 +152,15 @@ function SET_BASE:Remove( ObjectName )
|
|||||||
|
|
||||||
local Object = self.Set[ObjectName]
|
local Object = self.Set[ObjectName]
|
||||||
|
|
||||||
self:F3( { ObjectName, Object } )
|
self:F( { ObjectName, Object } )
|
||||||
|
|
||||||
if Object then
|
if Object then
|
||||||
for Index, Key in ipairs( self.Index ) do
|
for Index, Key in ipairs( self.Index ) do
|
||||||
|
self:F( { Index = Index, Key = Key } )
|
||||||
if Key == ObjectName then
|
if Key == ObjectName then
|
||||||
table.remove( self.Index, Index )
|
table.remove( self.Index, Index )
|
||||||
self.Set[ObjectName] = nil
|
self.Set[ObjectName] = nil
|
||||||
|
self:Flush(self)
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -3864,7 +3866,7 @@ function SET_AIRBASE:RemoveAirbasesByName( RemoveAirbaseNames )
|
|||||||
local RemoveAirbaseNamesArray = ( type( RemoveAirbaseNames ) == "table" ) and RemoveAirbaseNames or { RemoveAirbaseNames }
|
local RemoveAirbaseNamesArray = ( type( RemoveAirbaseNames ) == "table" ) and RemoveAirbaseNames or { RemoveAirbaseNames }
|
||||||
|
|
||||||
for RemoveAirbaseID, RemoveAirbaseName in pairs( RemoveAirbaseNamesArray ) do
|
for RemoveAirbaseID, RemoveAirbaseName in pairs( RemoveAirbaseNamesArray ) do
|
||||||
self:Remove( RemoveAirbaseName.AirbaseName )
|
self:Remove( RemoveAirbaseName )
|
||||||
end
|
end
|
||||||
|
|
||||||
return self
|
return self
|
||||||
@@ -3926,12 +3928,41 @@ end
|
|||||||
function SET_AIRBASE:FilterStart()
|
function SET_AIRBASE:FilterStart()
|
||||||
|
|
||||||
if _DATABASE then
|
if _DATABASE then
|
||||||
self:_FilterStart()
|
|
||||||
|
-- We use the BaseCaptured event, which is generated by DCS when a base got captured.
|
||||||
|
self:HandleEvent( EVENTS.BaseCaptured )
|
||||||
|
|
||||||
|
-- We initialize the first set.
|
||||||
|
for ObjectName, Object in pairs( self.Database ) do
|
||||||
|
if self:IsIncludeObject( Object ) then
|
||||||
|
self:Add( ObjectName, Object )
|
||||||
|
else
|
||||||
|
self:RemoveAirbasesByName( ObjectName )
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Starts the filtering.
|
||||||
|
-- @param #SET_AIRBASE self
|
||||||
|
-- @param Core.Event#EVENT EventData
|
||||||
|
-- @return #SET_AIRBASE self
|
||||||
|
function SET_AIRBASE:OnEventBaseCaptured(EventData)
|
||||||
|
|
||||||
|
-- When a base got captured, we reevaluate the set.
|
||||||
|
for ObjectName, Object in pairs( self.Database ) do
|
||||||
|
if self:IsIncludeObject( Object ) then
|
||||||
|
-- We add captured bases on yet in the set.
|
||||||
|
self:Add( ObjectName, Object )
|
||||||
|
else
|
||||||
|
-- We remove captured bases that are not anymore part of the set.
|
||||||
|
self:RemoveAirbasesByName( ObjectName )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
--- Handles the Database to check on an event (birth) that the Object was added in the Database.
|
--- Handles the Database to check on an event (birth) that the Object was added in the Database.
|
||||||
-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event!
|
-- This is required, because sometimes the _DATABASE birth event gets called later than the SET_BASE birth event!
|
||||||
|
|||||||
Reference in New Issue
Block a user