mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Fixed bug during detection, when i unit got destroyed, the detection stopped. Fixed now
Added a test :IsAlive
This commit is contained in:
@@ -111,32 +111,34 @@ function DETECTION_BASE:_DetectionScheduler( SchedulerName )
|
|||||||
if self.DetectedUnits then
|
if self.DetectedUnits then
|
||||||
for DetectedUnitName, DetectedUnitData in pairs( self.DetectedUnits ) do
|
for DetectedUnitName, DetectedUnitData in pairs( self.DetectedUnits ) do
|
||||||
local DetectedUnit = DetectedUnitData.DetectedUnit -- Unit#UNIT
|
local DetectedUnit = DetectedUnitData.DetectedUnit -- Unit#UNIT
|
||||||
self:T( DetectedUnit:GetName() )
|
if DetectedUnit and DetectedUnit:IsAlive() then
|
||||||
if #self.DetectedUnitSets == 0 then
|
self:T( DetectedUnit:GetName() )
|
||||||
self:T( { "Adding Unit Set #", 1 } )
|
if #self.DetectedUnitSets == 0 then
|
||||||
self.DetectedUnitSets[1] = {}
|
self:T( { "Adding Unit Set #", 1 } )
|
||||||
self.DetectedUnitSets[1].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange )
|
self.DetectedUnitSets[1] = {}
|
||||||
self.DetectedUnitSets[1].Set = SET_UNIT:New()
|
self.DetectedUnitSets[1].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange )
|
||||||
self.DetectedUnitSets[1].Set:AddUnit( DetectedUnit )
|
self.DetectedUnitSets[1].Set = SET_UNIT:New()
|
||||||
else
|
self.DetectedUnitSets[1].Set:AddUnit( DetectedUnit )
|
||||||
local AddedToSet = false
|
else
|
||||||
for DetectedUnitSetID, DetectedUnitSetData in pairs( self.DetectedUnitSets ) do
|
local AddedToSet = false
|
||||||
self:T( "Detected Unit Set #" .. DetectedUnitSetID )
|
for DetectedUnitSetID, DetectedUnitSetData in pairs( self.DetectedUnitSets ) do
|
||||||
local DetectedUnitSet = DetectedUnitSetData.Set -- Set#SET_UNIT
|
self:T( "Detected Unit Set #" .. DetectedUnitSetID )
|
||||||
local DetectedZone = DetectedUnitSetData.Zone -- Zone#ZONE_UNIT
|
local DetectedUnitSet = DetectedUnitSetData.Set -- Set#SET_UNIT
|
||||||
if DetectedUnit:IsInZone( DetectedZone ) then
|
local DetectedZone = DetectedUnitSetData.Zone -- Zone#ZONE_UNIT
|
||||||
self:T( "Adding to Unit Set #" .. DetectedUnitSetID )
|
if DetectedUnit:IsInZone( DetectedZone ) then
|
||||||
self.DetectedUnitSets[DetectedUnitSetID].Set:AddUnit( DetectedUnit )
|
self:T( "Adding to Unit Set #" .. DetectedUnitSetID )
|
||||||
AddedToSet = true
|
self.DetectedUnitSets[DetectedUnitSetID].Set:AddUnit( DetectedUnit )
|
||||||
|
AddedToSet = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
if AddedToSet == false then
|
||||||
|
self:T( "Adding new Unit Set #" .. #self.DetectedUnitSets+1 )
|
||||||
|
self.DetectedUnitSets[#self.DetectedUnitSets+1] = {}
|
||||||
|
self.DetectedUnitSets[#self.DetectedUnitSets].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange )
|
||||||
|
self.DetectedUnitSets[#self.DetectedUnitSets].Set = SET_UNIT:New()
|
||||||
|
self.DetectedUnitSets[#self.DetectedUnitSets].Set:AddUnit( DetectedUnit )
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if AddedToSet == false then
|
|
||||||
self:T( "Adding new Unit Set #" .. #self.DetectedUnitSets+1 )
|
|
||||||
self.DetectedUnitSets[#self.DetectedUnitSets+1] = {}
|
|
||||||
self.DetectedUnitSets[#self.DetectedUnitSets].Zone = ZONE_UNIT:New( DetectedUnitName, DetectedUnit, self.DetectionZoneRange )
|
|
||||||
self.DetectedUnitSets[#self.DetectedUnitSets].Set = SET_UNIT:New()
|
|
||||||
self.DetectedUnitSets[#self.DetectedUnitSets].Set:AddUnit( DetectedUnit )
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -390,7 +390,7 @@ end
|
|||||||
-- @param #SET_BASE self
|
-- @param #SET_BASE self
|
||||||
-- @param Event#EVENTDATA Event
|
-- @param Event#EVENTDATA Event
|
||||||
function SET_BASE:_EventOnDeadOrCrash( Event )
|
function SET_BASE:_EventOnDeadOrCrash( Event )
|
||||||
self:F3( { Event } )
|
self:F2( { Event } )
|
||||||
|
|
||||||
if Event.IniDCSUnit then
|
if Event.IniDCSUnit then
|
||||||
local ObjectName, Object = self:FindInDatabase( Event )
|
local ObjectName, Object = self:FindInDatabase( Event )
|
||||||
@@ -957,6 +957,10 @@ function SET_UNIT:New()
|
|||||||
-- Inherits from BASE
|
-- Inherits from BASE
|
||||||
local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.UNITS ) )
|
local self = BASE:Inherit( self, SET_BASE:New( _DATABASE.UNITS ) )
|
||||||
|
|
||||||
|
_EVENTDISPATCHER:OnBirth( self._EventOnBirth, self )
|
||||||
|
_EVENTDISPATCHER:OnDead( self._EventOnDeadOrCrash, self )
|
||||||
|
_EVENTDISPATCHER:OnCrash( self._EventOnDeadOrCrash, self )
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -965,6 +969,7 @@ end
|
|||||||
-- @param #string AddUnit A single UNIT.
|
-- @param #string AddUnit A single UNIT.
|
||||||
-- @return #SET_UNIT self
|
-- @return #SET_UNIT self
|
||||||
function SET_UNIT:AddUnit( AddUnit )
|
function SET_UNIT:AddUnit( AddUnit )
|
||||||
|
self:F2( AddUnit:GetName() )
|
||||||
|
|
||||||
self:Add( AddUnit:GetName(), AddUnit )
|
self:Add( AddUnit:GetName(), AddUnit )
|
||||||
|
|
||||||
@@ -1151,6 +1156,7 @@ end
|
|||||||
function SET_UNIT:FindInDatabase( Event )
|
function SET_UNIT:FindInDatabase( Event )
|
||||||
self:F3( { Event } )
|
self:F3( { Event } )
|
||||||
|
|
||||||
|
self:E( { Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName] } )
|
||||||
return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName]
|
return Event.IniDCSUnitName, self.Database[Event.IniDCSUnitName]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Reference in New Issue
Block a user