mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Progress
This commit is contained in:
parent
b004929223
commit
9c9ed494d9
@ -854,7 +854,7 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
self:T( { "Removing Group Menu:", MenuGroup = self.MenuGroup:GetName(), MenuPath = self.MenuGroup._Menus[self.Path].Path } )
|
self:T( { "Removing Group Menu:", MenuGroup = self.MenuGroup:GetName() } )
|
||||||
self.MenuGroup._Menus[self.Path] = nil
|
self.MenuGroup._Menus[self.Path] = nil
|
||||||
self = nil
|
self = nil
|
||||||
end
|
end
|
||||||
|
|||||||
@ -584,6 +584,7 @@ do -- DETECTION_BASE
|
|||||||
local DetectionAccepted = true
|
local DetectionAccepted = true
|
||||||
|
|
||||||
local DetectedObjectName = DetectedObject:getName()
|
local DetectedObjectName = DetectedObject:getName()
|
||||||
|
local DetectedObjectType = DetectedObject:getTypeName()
|
||||||
|
|
||||||
local DetectedObjectVec3 = DetectedObject:getPoint()
|
local DetectedObjectVec3 = DetectedObject:getPoint()
|
||||||
local DetectedObjectVec2 = { x = DetectedObjectVec3.x, y = DetectedObjectVec3.z }
|
local DetectedObjectVec2 = { x = DetectedObjectVec3.x, y = DetectedObjectVec3.z }
|
||||||
@ -597,7 +598,7 @@ do -- DETECTION_BASE
|
|||||||
|
|
||||||
local DetectedUnitCategory = DetectedObject:getDesc().category
|
local DetectedUnitCategory = DetectedObject:getDesc().category
|
||||||
|
|
||||||
self:F( { "Detected Target:", DetectionGroupName, DetectedObjectName, Distance, DetectedUnitCategory } )
|
self:F( { "Detected Target:", DetectionGroupName, DetectedObjectName, DetectedObjectType, Distance, DetectedUnitCategory } )
|
||||||
|
|
||||||
-- Calculate Acceptance
|
-- Calculate Acceptance
|
||||||
|
|
||||||
|
|||||||
@ -1251,6 +1251,23 @@ function TASK:onenterAborted( From, Event, To )
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- FSM function for a TASK
|
||||||
|
-- @param #TASK self
|
||||||
|
-- @param #string From
|
||||||
|
-- @param #string Event
|
||||||
|
-- @param #string To
|
||||||
|
function TASK:onenterCancelled( From, Event, To )
|
||||||
|
|
||||||
|
self:E( "Task Cancelled" )
|
||||||
|
|
||||||
|
if From ~= "Cancelled" then
|
||||||
|
self:GetMission():GetCommandCenter():MessageToCoalition( "Task " .. self:GetName() .. " has been cancelled! The tactical situation has changed." )
|
||||||
|
self:UnAssignFromGroups()
|
||||||
|
self:SetMenu()
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
--- FSM function for a TASK
|
--- FSM function for a TASK
|
||||||
-- @param #TASK self
|
-- @param #TASK self
|
||||||
-- @param #string From
|
-- @param #string From
|
||||||
|
|||||||
@ -175,7 +175,7 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
function TASK_A2G_DISPATCHER:EvaluateRemoveTask( Mission, Task, TaskIndex, DetectedItemChanged )
|
function TASK_A2G_DISPATCHER:EvaluateRemoveTask( Mission, Task, TaskIndex, DetectedItemChanged )
|
||||||
|
|
||||||
if Task then
|
if Task then
|
||||||
if Task:IsStatePlanned() and DetectedItemChanged == true then
|
if ( Task:IsStatePlanned() and DetectedItemChanged == true ) or Task:IsStateCancelled() then
|
||||||
--self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
--self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
||||||
Mission:RemoveTask( Task )
|
Mission:RemoveTask( Task )
|
||||||
self.Tasks[TaskIndex] = nil
|
self.Tasks[TaskIndex] = nil
|
||||||
@ -232,7 +232,62 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
local TaskIndex = DetectedItem.Index
|
local TaskIndex = DetectedItem.Index
|
||||||
local DetectedItemChanged = DetectedItem.Changed
|
local DetectedItemChanged = DetectedItem.Changed
|
||||||
|
|
||||||
local Task = self.Tasks[TaskIndex] -- Tasking.Task_A2G#TASK_A2A
|
local Task = self.Tasks[TaskIndex] -- Tasking.Task_A2G#TASK_A2G
|
||||||
|
|
||||||
|
if Task then
|
||||||
|
|
||||||
|
-- If there is a Task and the task was assigned, then we check if the task was changed ... If it was, we need to reevaluate the targets.
|
||||||
|
if Task:IsStateAssigned() then
|
||||||
|
if DetectedItemChanged == true then -- The detection has changed, thus a new TargetSet is to be evaluated and set
|
||||||
|
local TargetsReport = REPORT:New()
|
||||||
|
local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
if Task:IsInstanceOf( TASK_A2G_SEAD ) then
|
||||||
|
Task:SetTargetSetUnit( TargetSetUnit )
|
||||||
|
Task:UpdateTaskInfo()
|
||||||
|
TargetsReport:Add( Detection:GetChangeText( DetectedItem ) )
|
||||||
|
else
|
||||||
|
Task:Cancel()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be CASed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
if Task:IsInstanceOf( TASK_A2G_CAS ) then
|
||||||
|
Task:SetTargetSetUnit( TargetSetUnit )
|
||||||
|
Task:UpdateTaskInfo()
|
||||||
|
TargetsReport:Add( Detection:GetChangeText( DetectedItem ) )
|
||||||
|
else
|
||||||
|
Task:Cancel()
|
||||||
|
Task = nil
|
||||||
|
self.Tasks[TaskIndex] = nil
|
||||||
|
end
|
||||||
|
else
|
||||||
|
local TargetSetUnit = self:EvaluateBAI( DetectedItem ) -- Returns a SetUnit if there are targets to be BAIed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
if Task:IsInstanceOf( TASK_A2G_BAI ) then
|
||||||
|
Task:SetTargetSetUnit( TargetSetUnit )
|
||||||
|
Task:UpdateTaskInfo()
|
||||||
|
TargetsReport:Add( Detection:GetChangeText( DetectedItem ) )
|
||||||
|
else
|
||||||
|
Task:Cancel()
|
||||||
|
Task = nil
|
||||||
|
self.Tasks[TaskIndex] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Now we send to each group the changes, if any.
|
||||||
|
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
|
local TargetsText = TargetsReport:Text(", ")
|
||||||
|
if ( Mission:IsGroupAssigned(TaskGroup) ) and TargetsText ~= "" then
|
||||||
|
Mission:GetCommandCenter():MessageToGroup( string.format( "Task %s has change of targets:\n %s", Task:GetName(), TargetsText ), TaskGroup )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
Task = self:EvaluateRemoveTask( Mission, Task, TaskIndex, DetectedItemChanged ) -- Task will be removed if it is planned and changed.
|
Task = self:EvaluateRemoveTask( Mission, Task, TaskIndex, DetectedItemChanged ) -- Task will be removed if it is planned and changed.
|
||||||
|
|
||||||
@ -269,46 +324,6 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
else
|
else
|
||||||
self:E("This should not happen")
|
self:E("This should not happen")
|
||||||
end
|
end
|
||||||
else
|
|
||||||
-- If there is a Task and the task was assigned, then we check if the task was changed ... If it was, we need to reevaluate the targets.
|
|
||||||
if Task:IsStateAssigned() then
|
|
||||||
if DetectedItemChanged == true then -- The detection has changed, thus a new TargetSet is to be evaluated and set
|
|
||||||
local TargetsReport = REPORT:New()
|
|
||||||
if Task:IsInstanceOf( TASK_A2G_SEAD ) then
|
|
||||||
local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
|
||||||
if TargetSetUnit then
|
|
||||||
Task:SetTargetSetUnit( TargetSetUnit )
|
|
||||||
Task:UpdateTaskInfo()
|
|
||||||
TargetsReport:Add( Detection:GetChangeText( DetectedItem ) )
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if Task:IsInstanceOf( TASK_A2G_CAS ) then
|
|
||||||
local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be CASed...
|
|
||||||
if TargetSetUnit then
|
|
||||||
Task:SetTargetSetUnit( TargetSetUnit )
|
|
||||||
Task:UpdateTaskInfo()
|
|
||||||
TargetsReport:Add( Detection:GetChangeText( DetectedItem ) )
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if Task:IsInstanceOf( TASK_A2G_BAI ) then
|
|
||||||
local TargetSetUnit = self:EvaluateBAI( DetectedItem ) -- Returns a SetUnit if there are targets to be BAIed...
|
|
||||||
if TargetSetUnit then
|
|
||||||
Task:SetTargetSetUnit( TargetSetUnit )
|
|
||||||
Task:UpdateTaskInfo()
|
|
||||||
TargetsReport:Add( Detection:GetChangeText( DetectedItem ) )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- Now we send to each group the changes.
|
|
||||||
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
|
||||||
local TargetsText = TargetsReport:Text(", ")
|
|
||||||
if ( Mission:IsGroupAssigned(TaskGroup) ) and TargetsText ~= "" then
|
|
||||||
Mission:GetCommandCenter():MessageToGroup( string.format( "Task %s has change of targets:\n %s", Task:GetName(), TargetsText ), TaskGroup )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user