mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Merge pull request #545 from FlightControl-Master/419-A2A-Tasking
419 a2a tasking
This commit is contained in:
commit
26027245f0
@ -1088,7 +1088,7 @@ do -- DETECTION_BASE
|
|||||||
-- @return #boolean trhe if there are friendlies nearby
|
-- @return #boolean trhe if there are friendlies nearby
|
||||||
function DETECTION_BASE:IsPlayersNearBy( DetectedItem )
|
function DETECTION_BASE:IsPlayersNearBy( DetectedItem )
|
||||||
|
|
||||||
return DetectedItem.PlayersNearBy ~= nil or false
|
return DetectedItem.PlayersNearBy ~= nil
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Returns friendly units nearby the FAC units ...
|
--- Returns friendly units nearby the FAC units ...
|
||||||
@ -1154,7 +1154,6 @@ do -- DETECTION_BASE
|
|||||||
world.searchObjects( Object.Category.UNIT, SphereSearch, FindNearByFriendlies, ReportGroupData )
|
world.searchObjects( Object.Category.UNIT, SphereSearch, FindNearByFriendlies, ReportGroupData )
|
||||||
|
|
||||||
DetectedItem.PlayersNearBy = nil
|
DetectedItem.PlayersNearBy = nil
|
||||||
DetectedItem.PlayersNearBy = DetectedItem.PlayersNearBy or {}
|
|
||||||
local DetectionZone = ZONE_UNIT:New( "DetectionPlayers", DetectedUnit, self.FriendliesRange )
|
local DetectionZone = ZONE_UNIT:New( "DetectionPlayers", DetectedUnit, self.FriendliesRange )
|
||||||
|
|
||||||
_DATABASE:ForEachPlayer(
|
_DATABASE:ForEachPlayer(
|
||||||
@ -1164,7 +1163,10 @@ do -- DETECTION_BASE
|
|||||||
if PlayerUnit:IsInZone(DetectionZone) then
|
if PlayerUnit:IsInZone(DetectionZone) then
|
||||||
DetectedItem.FriendliesNearBy = DetectedItem.FriendliesNearBy or {}
|
DetectedItem.FriendliesNearBy = DetectedItem.FriendliesNearBy or {}
|
||||||
local PlayerUnitName = PlayerUnit:GetName()
|
local PlayerUnitName = PlayerUnit:GetName()
|
||||||
|
DetectedItem.PlayersNearBy = DetectedItem.PlayersNearBy or {}
|
||||||
DetectedItem.PlayersNearBy[PlayerUnitName] = PlayerUnit
|
DetectedItem.PlayersNearBy[PlayerUnitName] = PlayerUnit
|
||||||
|
DetectedItem.FriendliesNearBy = DetectedItem.FriendliesNearBy or {}
|
||||||
|
DetectedItem.FriendliesNearBy[PlayerUnitName] = PlayerUnit
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|||||||
@ -153,19 +153,40 @@ do -- TASK_A2A_DISPATCHER
|
|||||||
-- @param #TASK_A2A_DISPATCHER self
|
-- @param #TASK_A2A_DISPATCHER self
|
||||||
-- @param Tasking.Mission#MISSION Mission
|
-- @param Tasking.Mission#MISSION Mission
|
||||||
-- @param Tasking.Task#TASK Task
|
-- @param Tasking.Task#TASK Task
|
||||||
|
-- @param Functional.Detection#DETECTION_BASE Detection The detection created by the @{Detection#DETECTION_BASE} derived object.
|
||||||
-- @param #boolean DetectedItemID
|
-- @param #boolean DetectedItemID
|
||||||
-- @param #boolean DetectedItemChange
|
-- @param #boolean DetectedItemChange
|
||||||
-- @return Tasking.Task#TASK
|
-- @return Tasking.Task#TASK
|
||||||
function TASK_A2A_DISPATCHER:EvaluateRemoveTask( Mission, Task, DetectedItem, DetectedItemID, DetectedItemChanged )
|
function TASK_A2A_DISPATCHER:EvaluateRemoveTask( Mission, Task, Detection, DetectedItem, DetectedItemID, DetectedItemChanged )
|
||||||
|
|
||||||
|
|
||||||
if Task then
|
if Task then
|
||||||
|
|
||||||
local TaskName = Task:GetName()
|
if Task:IsStatePlanned() then
|
||||||
if Task:IsStatePlanned() and DetectedItemChanged == true then
|
local TaskName = Task:GetName()
|
||||||
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
local TaskType = TaskName:match( "(%u+)%.%d+" )
|
||||||
Mission:RemoveTask( Task )
|
|
||||||
self.Tasks[DetectedItemID] = nil
|
self:E( { TaskType = TaskType } )
|
||||||
|
|
||||||
|
local Remove = false
|
||||||
|
|
||||||
|
local IsPlayers = Detection:IsPlayersNearBy( DetectedItem )
|
||||||
|
if TaskType == "ENGAGE" then
|
||||||
|
if IsPlayers == false then
|
||||||
|
Remove = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if TaskType == "INTERCEPT" then
|
||||||
|
if IsPlayers == true then
|
||||||
|
Remove = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if DetectedItemChanged == true or Remove then
|
||||||
|
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
||||||
|
Mission:RemoveTask( Task )
|
||||||
|
self.Tasks[DetectedItemID] = nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -294,7 +315,7 @@ do -- TASK_A2A_DISPATCHER
|
|||||||
local DetectedItemChanged = DetectedItem.Changed
|
local DetectedItemChanged = DetectedItem.Changed
|
||||||
|
|
||||||
local Task = self.Tasks[DetectedID]
|
local Task = self.Tasks[DetectedID]
|
||||||
Task = self:EvaluateRemoveTask( Mission, Task, DetectedItem, DetectedID, DetectedItemChanged ) -- Task will be removed if it is planned and changed.
|
Task = self:EvaluateRemoveTask( Mission, Task, Detection, DetectedItem, DetectedID, DetectedItemChanged ) -- Task will be removed if it is planned and changed.
|
||||||
|
|
||||||
-- Evaluate INTERCEPT
|
-- Evaluate INTERCEPT
|
||||||
if not Task then
|
if not Task then
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user