mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Implemented the linking of TASK_CAPTURE_DISPATCHER and AI_A2G_DISPATCHER.
This commit is contained in:
parent
02a486e457
commit
70e7857b62
@ -1126,7 +1126,7 @@ do -- AI_A2G_DISPATCHER
|
|||||||
|
|
||||||
self.TakeoffScheduleID = self:ScheduleRepeat( 10, 10, 0, nil, self.ResourceTakeoff, self )
|
self.TakeoffScheduleID = self:ScheduleRepeat( 10, 10, 0, nil, self.ResourceTakeoff, self )
|
||||||
|
|
||||||
self:__Start( 5 )
|
self:__Start( 1 )
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
@ -1150,9 +1150,30 @@ do -- AI_A2G_DISPATCHER
|
|||||||
|
|
||||||
--- Locks the DefenseItem from being defended.
|
--- Locks the DefenseItem from being defended.
|
||||||
-- @param #AI_A2G_DISPATCHER self
|
-- @param #AI_A2G_DISPATCHER self
|
||||||
-- @param #string DefenseItemKey The key of the defense item.
|
-- @param #string DetectedItemIndex The index of the detected item.
|
||||||
|
function AI_A2G_DISPATCHER:Lock( DetectedItemIndex )
|
||||||
|
self:F( { DetectedItemIndex = DetectedItemIndex } )
|
||||||
|
local DetectedItem = self.Detection:GetDetectedItemByIndex( DetectedItemIndex )
|
||||||
|
if DetectedItem then
|
||||||
|
self:F( { Locked = DetectedItem } )
|
||||||
|
self.Detection:LockDetectedItem( DetectedItem )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Unlocks the DefenseItem from being defended.
|
||||||
|
-- @param #AI_A2G_DISPATCHER self
|
||||||
|
-- @param #string DetectedItemIndex The index of the detected item.
|
||||||
|
function AI_A2G_DISPATCHER:Unlock( DetectedItemIndex )
|
||||||
|
self:F( { DetectedItemIndex = DetectedItemIndex } )
|
||||||
|
self:F( { Index = self.Detection.DetectedItemsByIndex } )
|
||||||
|
local DetectedItem = self.Detection:GetDetectedItemByIndex( DetectedItemIndex )
|
||||||
|
if DetectedItem then
|
||||||
|
self:F( { Unlocked = DetectedItem } )
|
||||||
|
self.Detection:UnlockDetectedItem( DetectedItem )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- @param #AI_A2G_DISPATCHER self
|
--- @param #AI_A2G_DISPATCHER self
|
||||||
@ -4032,6 +4053,7 @@ do -- AI_A2G_DISPATCHER
|
|||||||
-- Now that all obsolete tasks are removed, loop through the detected targets.
|
-- Now that all obsolete tasks are removed, loop through the detected targets.
|
||||||
for DetectedItemID, DetectedItem in pairs( Detection:GetDetectedItems() ) do
|
for DetectedItemID, DetectedItem in pairs( Detection:GetDetectedItems() ) do
|
||||||
|
|
||||||
|
if not self.Detection:IsDetectedItemLocked( DetectedItem ) == true then
|
||||||
local DetectedItem = DetectedItem -- Functional.Detection#DETECTION_BASE.DetectedItem
|
local DetectedItem = DetectedItem -- Functional.Detection#DETECTION_BASE.DetectedItem
|
||||||
local DetectedSet = DetectedItem.Set -- Core.Set#SET_UNIT
|
local DetectedSet = DetectedItem.Set -- Core.Set#SET_UNIT
|
||||||
local DetectedCount = DetectedSet:Count()
|
local DetectedCount = DetectedSet:Count()
|
||||||
@ -4129,6 +4151,7 @@ do -- AI_A2G_DISPATCHER
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if self.TacticalDisplay then
|
if self.TacticalDisplay then
|
||||||
Report:Add( "\n - No Targets:")
|
Report:Add( "\n - No Targets:")
|
||||||
|
|||||||
@ -1536,6 +1536,10 @@ do -- DETECTION_BASE
|
|||||||
DetectedItem.ID = self.DetectedItemMax
|
DetectedItem.ID = self.DetectedItemMax
|
||||||
DetectedItem.Removed = false
|
DetectedItem.Removed = false
|
||||||
|
|
||||||
|
if self.Locking then
|
||||||
|
self:LockDetectedItem( DetectedItem )
|
||||||
|
end
|
||||||
|
|
||||||
return DetectedItem
|
return DetectedItem
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1725,6 +1729,68 @@ do -- DETECTION_BASE
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Lock the detected items when created and lock all existing detected items.
|
||||||
|
-- @param #DETECTION_BASE self
|
||||||
|
-- @return #DETECTION_BASE
|
||||||
|
function DETECTION_BASE:LockDetectedItems()
|
||||||
|
|
||||||
|
for DetectedItemID, DetectedItem in pairs( self.DetectedItems ) do
|
||||||
|
self:LockDetectedItem( DetectedItem )
|
||||||
|
end
|
||||||
|
self.Locking = true
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Unlock the detected items when created and unlock all existing detected items.
|
||||||
|
-- @param #DETECTION_BASE self
|
||||||
|
-- @return #DETECTION_BASE
|
||||||
|
function DETECTION_BASE:UnlockDetectedItems()
|
||||||
|
|
||||||
|
for DetectedItemID, DetectedItem in pairs( self.DetectedItems ) do
|
||||||
|
self:UnlockDetectedItem( DetectedItem )
|
||||||
|
end
|
||||||
|
self.Locking = nil
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Validate if the detected item is locked.
|
||||||
|
-- @param #DETECTION_BASE self
|
||||||
|
-- @param #DETECTION_BASE.DetectedItem DetectedItem The DetectedItem.
|
||||||
|
-- @return #boolean
|
||||||
|
function DETECTION_BASE:IsDetectedItemLocked( DetectedItem )
|
||||||
|
|
||||||
|
return self.Locking and DetectedItem.Locked == true
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Lock a detected item.
|
||||||
|
-- @param #DETECTION_BASE self
|
||||||
|
-- @param #DETECTION_BASE.DetectedItem DetectedItem The DetectedItem.
|
||||||
|
-- @return #DETECTION_BASE
|
||||||
|
function DETECTION_BASE:LockDetectedItem( DetectedItem )
|
||||||
|
|
||||||
|
DetectedItem.Locked = true
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Unlock a detected item.
|
||||||
|
-- @param #DETECTION_BASE self
|
||||||
|
-- @param #DETECTION_BASE.DetectedItem DetectedItem The DetectedItem.
|
||||||
|
-- @return #DETECTION_BASE
|
||||||
|
function DETECTION_BASE:UnlockDetectedItem( DetectedItem )
|
||||||
|
|
||||||
|
DetectedItem.Locked = nil
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Set the detected item coordinate.
|
--- Set the detected item coordinate.
|
||||||
-- @param #DETECTION_BASE self
|
-- @param #DETECTION_BASE self
|
||||||
|
|||||||
@ -233,6 +233,7 @@ do -- TASK_CAPTURE_DISPATCHER
|
|||||||
function TASK_CAPTURE_DISPATCHER:Link_AI_A2G_Dispatcher( AI_A2G_Dispatcher )
|
function TASK_CAPTURE_DISPATCHER:Link_AI_A2G_Dispatcher( AI_A2G_Dispatcher )
|
||||||
|
|
||||||
self.AI_A2G_Dispatcher = AI_A2G_Dispatcher -- AI.AI_A2G_Dispatcher#AI_A2G_DISPATCHER
|
self.AI_A2G_Dispatcher = AI_A2G_Dispatcher -- AI.AI_A2G_Dispatcher#AI_A2G_DISPATCHER
|
||||||
|
AI_A2G_Dispatcher.Detection:LockDetectedItems()
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
@ -276,34 +277,50 @@ do -- TASK_CAPTURE_DISPATCHER
|
|||||||
CaptureZone.Task:UpdateTaskInfo()
|
CaptureZone.Task:UpdateTaskInfo()
|
||||||
|
|
||||||
function CaptureZone.Task.OnEnterAssigned( Task, From, Event, To )
|
function CaptureZone.Task.OnEnterAssigned( Task, From, Event, To )
|
||||||
|
if self.AI_A2G_Dispatcher then
|
||||||
self.AI_A2G_Dispatcher:Unlock( Task.TaskZoneName ) -- This will unlock the zone to be defended by AI.
|
self.AI_A2G_Dispatcher:Unlock( Task.TaskZoneName ) -- This will unlock the zone to be defended by AI.
|
||||||
|
end
|
||||||
CaptureZone.Task:UpdateTaskInfo()
|
CaptureZone.Task:UpdateTaskInfo()
|
||||||
end
|
end
|
||||||
|
|
||||||
function CaptureZone.Task.OnEnterSuccess( Task, From, Event, To )
|
function CaptureZone.Task.OnEnterSuccess( Task, From, Event, To )
|
||||||
self:Success( Task )
|
self:Success( Task )
|
||||||
|
if self.AI_A2G_Dispatcher then
|
||||||
|
self.AI_A2G_Dispatcher:Lock( Task.TaskZoneName ) -- This will lock the zone from being defended by AI.
|
||||||
|
end
|
||||||
CaptureZone.Task:UpdateTaskInfo()
|
CaptureZone.Task:UpdateTaskInfo()
|
||||||
end
|
end
|
||||||
|
|
||||||
function CaptureZone.Task.OnEnterCancelled( Task, From, Event, To )
|
function CaptureZone.Task.OnEnterCancelled( Task, From, Event, To )
|
||||||
self:Cancelled( Task )
|
self:Cancelled( Task )
|
||||||
self.AI_A2G_Dispatcher:Unlock( Task.TaskZoneName ) -- This will lock the zone from being defended by AI.
|
if self.AI_A2G_Dispatcher then
|
||||||
|
self.AI_A2G_Dispatcher:Lock( Task.TaskZoneName ) -- This will lock the zone from being defended by AI.
|
||||||
|
end
|
||||||
CaptureZone.Task:UpdateTaskInfo()
|
CaptureZone.Task:UpdateTaskInfo()
|
||||||
end
|
end
|
||||||
|
|
||||||
function CaptureZone.Task.OnEnterFailed( Task, From, Event, To )
|
function CaptureZone.Task.OnEnterFailed( Task, From, Event, To )
|
||||||
self:Failed( Task )
|
self:Failed( Task )
|
||||||
|
if self.AI_A2G_Dispatcher then
|
||||||
|
self.AI_A2G_Dispatcher:Lock( Task.TaskZoneName ) -- This will lock the zone from being defended by AI.
|
||||||
|
end
|
||||||
CaptureZone.Task:UpdateTaskInfo()
|
CaptureZone.Task:UpdateTaskInfo()
|
||||||
end
|
end
|
||||||
|
|
||||||
function CaptureZone.Task.OnEnterAborted( Task, From, Event, To )
|
function CaptureZone.Task.OnEnterAborted( Task, From, Event, To )
|
||||||
self:Aborted( Task )
|
self:Aborted( Task )
|
||||||
|
if self.AI_A2G_Dispatcher then
|
||||||
|
self.AI_A2G_Dispatcher:Lock( Task.TaskZoneName ) -- This will lock the zone from being defended by AI.
|
||||||
|
end
|
||||||
CaptureZone.Task:UpdateTaskInfo()
|
CaptureZone.Task:UpdateTaskInfo()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Now broadcast the onafterCargoPickedUp event to the Task Cargo Dispatcher.
|
-- Now broadcast the onafterCargoPickedUp event to the Task Cargo Dispatcher.
|
||||||
function CaptureZone.Task.OnAfterCaptured( Task, From, Event, To, TaskUnit )
|
function CaptureZone.Task.OnAfterCaptured( Task, From, Event, To, TaskUnit )
|
||||||
self:Captured( Task, Task.TaskPrefix, TaskUnit )
|
self:Captured( Task, Task.TaskPrefix, TaskUnit )
|
||||||
|
if self.AI_A2G_Dispatcher then
|
||||||
|
self.AI_A2G_Dispatcher:Lock( Task.TaskZoneName ) -- This will lock the zone from being defended by AI.
|
||||||
|
end
|
||||||
CaptureZone.Task:UpdateTaskInfo()
|
CaptureZone.Task:UpdateTaskInfo()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user