mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Fixeds for tasking
- Fixed the hanging report (I think) - Fixed the routing messages appearing every time again - Fixed the Task menu
This commit is contained in:
parent
6e353cf893
commit
755343d02e
@ -1003,8 +1003,11 @@ do -- FSM_PROCESS
|
|||||||
-- @param #FSM_PROCESS self
|
-- @param #FSM_PROCESS self
|
||||||
-- @return #FSM_PROCESS
|
-- @return #FSM_PROCESS
|
||||||
function FSM_PROCESS:Remove()
|
function FSM_PROCESS:Remove()
|
||||||
self:T( { self:GetClassNameAndID() } )
|
self:F( { self:GetClassNameAndID() } )
|
||||||
|
|
||||||
|
self:F( "Clearing Schedules" )
|
||||||
|
self.CallScheduler:Clear()
|
||||||
|
|
||||||
-- Copy Processes
|
-- Copy Processes
|
||||||
for ProcessID, Process in pairs( self:GetProcesses() ) do
|
for ProcessID, Process in pairs( self:GetProcesses() ) do
|
||||||
self:E( { Process} )
|
self:E( { Process} )
|
||||||
|
|||||||
@ -191,7 +191,7 @@ function SCHEDULEDISPATCHER:Start( Scheduler, CallID )
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do
|
for CallID, Schedule in pairs( self.Schedule[Scheduler] or {} ) do
|
||||||
self:Start( Scheduler, CallID ) -- Recursive
|
self:Start( Scheduler, CallID ) -- Recursive
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -209,7 +209,7 @@ function SCHEDULEDISPATCHER:Stop( Scheduler, CallID )
|
|||||||
Schedule[CallID].ScheduleID = nil
|
Schedule[CallID].ScheduleID = nil
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do
|
for CallID, Schedule in pairs( self.Schedule[Scheduler] or {} ) do
|
||||||
self:Stop( Scheduler, CallID ) -- Recursive
|
self:Stop( Scheduler, CallID ) -- Recursive
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -218,7 +218,7 @@ end
|
|||||||
function SCHEDULEDISPATCHER:Clear( Scheduler )
|
function SCHEDULEDISPATCHER:Clear( Scheduler )
|
||||||
self:F2( { Scheduler = Scheduler } )
|
self:F2( { Scheduler = Scheduler } )
|
||||||
|
|
||||||
for CallID, Schedule in pairs( self.Schedule[Scheduler] ) do
|
for CallID, Schedule in pairs( self.Schedule[Scheduler] or {} ) do
|
||||||
self:Stop( Scheduler, CallID ) -- Recursive
|
self:Stop( Scheduler, CallID ) -- Recursive
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -161,7 +161,7 @@ function COMMANDCENTER:New( CommandCenterPositionable, CommandCenterName )
|
|||||||
local PlayerUnit = EventData.IniUnit
|
local PlayerUnit = EventData.IniUnit
|
||||||
for MissionID, Mission in pairs( self:GetMissions() ) do
|
for MissionID, Mission in pairs( self:GetMissions() ) do
|
||||||
local Mission = Mission -- Tasking.Mission#MISSION
|
local Mission = Mission -- Tasking.Mission#MISSION
|
||||||
if Mission:IsOngoing() then
|
if Mission:IsENGAGED() then
|
||||||
Mission:AbortUnit( PlayerUnit )
|
Mission:AbortUnit( PlayerUnit )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -26,35 +26,35 @@ function MISSION:New( CommandCenter, MissionName, MissionPriority, MissionBriefi
|
|||||||
|
|
||||||
local self = BASE:Inherit( self, FSM:New() ) -- Core.Fsm#FSM
|
local self = BASE:Inherit( self, FSM:New() ) -- Core.Fsm#FSM
|
||||||
|
|
||||||
self:SetStartState( "Idle" )
|
self:SetStartState( "IDLE" )
|
||||||
|
|
||||||
self:AddTransition( "Idle", "Start", "Ongoing" )
|
self:AddTransition( "IDLE", "Start", "ENGAGED" )
|
||||||
|
|
||||||
--- OnLeave Transition Handler for State Idle.
|
--- OnLeave Transition Handler for State IDLE.
|
||||||
-- @function [parent=#MISSION] OnLeaveIdle
|
-- @function [parent=#MISSION] OnLeaveIDLE
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
-- @param #string To The To State string.
|
-- @param #string To The To State string.
|
||||||
-- @return #boolean Return false to cancel Transition.
|
-- @return #boolean Return false to cancel Transition.
|
||||||
|
|
||||||
--- OnEnter Transition Handler for State Idle.
|
--- OnEnter Transition Handler for State IDLE.
|
||||||
-- @function [parent=#MISSION] OnEnterIdle
|
-- @function [parent=#MISSION] OnEnterIDLE
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
-- @param #string To The To State string.
|
-- @param #string To The To State string.
|
||||||
|
|
||||||
--- OnLeave Transition Handler for State Ongoing.
|
--- OnLeave Transition Handler for State ENGAGED.
|
||||||
-- @function [parent=#MISSION] OnLeaveOngoing
|
-- @function [parent=#MISSION] OnLeaveENGAGED
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
-- @param #string To The To State string.
|
-- @param #string To The To State string.
|
||||||
-- @return #boolean Return false to cancel Transition.
|
-- @return #boolean Return false to cancel Transition.
|
||||||
|
|
||||||
--- OnEnter Transition Handler for State Ongoing.
|
--- OnEnter Transition Handler for State ENGAGED.
|
||||||
-- @function [parent=#MISSION] OnEnterOngoing
|
-- @function [parent=#MISSION] OnEnterENGAGED
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
@ -84,18 +84,18 @@ function MISSION:New( CommandCenter, MissionName, MissionPriority, MissionBriefi
|
|||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #number Delay The delay in seconds.
|
-- @param #number Delay The delay in seconds.
|
||||||
|
|
||||||
self:AddTransition( "Ongoing", "Stop", "Idle" )
|
self:AddTransition( "ENGAGED", "Stop", "IDLE" )
|
||||||
|
|
||||||
--- OnLeave Transition Handler for State Idle.
|
--- OnLeave Transition Handler for State IDLE.
|
||||||
-- @function [parent=#MISSION] OnLeaveIdle
|
-- @function [parent=#MISSION] OnLeaveIDLE
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
-- @param #string To The To State string.
|
-- @param #string To The To State string.
|
||||||
-- @return #boolean Return false to cancel Transition.
|
-- @return #boolean Return false to cancel Transition.
|
||||||
|
|
||||||
--- OnEnter Transition Handler for State Idle.
|
--- OnEnter Transition Handler for State IDLE.
|
||||||
-- @function [parent=#MISSION] OnEnterIdle
|
-- @function [parent=#MISSION] OnEnterIDLE
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
@ -125,18 +125,18 @@ function MISSION:New( CommandCenter, MissionName, MissionPriority, MissionBriefi
|
|||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #number Delay The delay in seconds.
|
-- @param #number Delay The delay in seconds.
|
||||||
|
|
||||||
self:AddTransition( "Ongoing", "Complete", "Completed" )
|
self:AddTransition( "ENGAGED", "Complete", "COMPLETED" )
|
||||||
|
|
||||||
--- OnLeave Transition Handler for State Completed.
|
--- OnLeave Transition Handler for State COMPLETED.
|
||||||
-- @function [parent=#MISSION] OnLeaveCompleted
|
-- @function [parent=#MISSION] OnLeaveCOMPLETED
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
-- @param #string To The To State string.
|
-- @param #string To The To State string.
|
||||||
-- @return #boolean Return false to cancel Transition.
|
-- @return #boolean Return false to cancel Transition.
|
||||||
|
|
||||||
--- OnEnter Transition Handler for State Completed.
|
--- OnEnter Transition Handler for State COMPLETED.
|
||||||
-- @function [parent=#MISSION] OnEnterCompleted
|
-- @function [parent=#MISSION] OnEnterCOMPLETED
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
@ -166,18 +166,18 @@ function MISSION:New( CommandCenter, MissionName, MissionPriority, MissionBriefi
|
|||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #number Delay The delay in seconds.
|
-- @param #number Delay The delay in seconds.
|
||||||
|
|
||||||
self:AddTransition( "*", "Fail", "Failed" )
|
self:AddTransition( "*", "Fail", "FAILED" )
|
||||||
|
|
||||||
--- OnLeave Transition Handler for State Failed.
|
--- OnLeave Transition Handler for State FAILED.
|
||||||
-- @function [parent=#MISSION] OnLeaveFailed
|
-- @function [parent=#MISSION] OnLeaveFAILED
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
-- @param #string To The To State string.
|
-- @param #string To The To State string.
|
||||||
-- @return #boolean Return false to cancel Transition.
|
-- @return #boolean Return false to cancel Transition.
|
||||||
|
|
||||||
--- OnEnter Transition Handler for State Failed.
|
--- OnEnter Transition Handler for State FAILED.
|
||||||
-- @function [parent=#MISSION] OnEnterFailed
|
-- @function [parent=#MISSION] OnEnterFAILED
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @param #string From The From State string.
|
-- @param #string From The From State string.
|
||||||
-- @param #string Event The Event string.
|
-- @param #string Event The Event string.
|
||||||
@ -235,7 +235,7 @@ function MISSION:onbeforeComplete( From, Event, To )
|
|||||||
|
|
||||||
for TaskID, Task in pairs( self:GetTasks() ) do
|
for TaskID, Task in pairs( self:GetTasks() ) do
|
||||||
local Task = Task -- Tasking.Task#TASK
|
local Task = Task -- Tasking.Task#TASK
|
||||||
if not Task:IsStateSuccess() and not Task:IsStateFailed() and not Task:IsStateAborted() and not Task:IsStateCancelled() then
|
if not Task:IsStateSuccess() and not Task:IsStateFAILED() and not Task:IsStateAborted() and not Task:IsStateCancelled() then
|
||||||
return false -- Mission cannot be completed. Other Tasks are still active.
|
return false -- Mission cannot be completed. Other Tasks are still active.
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -247,7 +247,7 @@ end
|
|||||||
-- @param #string From
|
-- @param #string From
|
||||||
-- @param #string Event
|
-- @param #string Event
|
||||||
-- @param #string To
|
-- @param #string To
|
||||||
function MISSION:onenterCompleted( From, Event, To )
|
function MISSION:onenterCOMPLETED( From, Event, To )
|
||||||
|
|
||||||
self:GetCommandCenter():MessageToCoalition( "Mission " .. self:GetName() .. " has been completed! Good job guys!" )
|
self:GetCommandCenter():MessageToCoalition( "Mission " .. self:GetName() .. " has been completed! Good job guys!" )
|
||||||
end
|
end
|
||||||
@ -489,39 +489,39 @@ function MISSION:GetNextTaskID( Task )
|
|||||||
return self.Tasks[TaskName].n
|
return self.Tasks[TaskName].n
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Is the @{Mission} **Completed**.
|
--- Is the @{Mission} **COMPLETED**.
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @return #boolean
|
-- @return #boolean
|
||||||
function MISSION:IsCompleted()
|
function MISSION:IsCOMPLETED()
|
||||||
return self:Is( "Completed" )
|
return self:Is( "COMPLETED" )
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Is the @{Mission} **Idle**.
|
--- Is the @{Mission} **IDLE**.
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @return #boolean
|
-- @return #boolean
|
||||||
function MISSION:IsIdle()
|
function MISSION:IsIDLE()
|
||||||
return self:Is( "Idle" )
|
return self:Is( "IDLE" )
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Is the @{Mission} **Ongoing**.
|
--- Is the @{Mission} **ENGAGED**.
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @return #boolean
|
-- @return #boolean
|
||||||
function MISSION:IsOngoing()
|
function MISSION:IsENGAGED()
|
||||||
return self:Is( "Ongoing" )
|
return self:Is( "ENGAGED" )
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Is the @{Mission} **Failed**.
|
--- Is the @{Mission} **FAILED**.
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @return #boolean
|
-- @return #boolean
|
||||||
function MISSION:IsFailed()
|
function MISSION:IsFAILED()
|
||||||
return self:Is( "Failed" )
|
return self:Is( "FAILED" )
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Is the @{Mission} **Hold**.
|
--- Is the @{Mission} **HOLD**.
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @return #boolean
|
-- @return #boolean
|
||||||
function MISSION:IsHold()
|
function MISSION:IsHOLD()
|
||||||
return self:Is( "Hold" )
|
return self:Is( "HOLD" )
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Validates if the Mission has a Group
|
--- Validates if the Mission has a Group
|
||||||
@ -548,7 +548,7 @@ function MISSION:GetTasksRemaining()
|
|||||||
local TasksRemaining = 0
|
local TasksRemaining = 0
|
||||||
for TaskID, Task in pairs( self:GetTasks() ) do
|
for TaskID, Task in pairs( self:GetTasks() ) do
|
||||||
local Task = Task -- Tasking.Task#TASK
|
local Task = Task -- Tasking.Task#TASK
|
||||||
if Task:IsStateSuccess() or Task:IsStateFailed() then
|
if Task:IsStateSuccess() or Task:IsStateFAILED() then
|
||||||
else
|
else
|
||||||
TasksRemaining = TasksRemaining + 1
|
TasksRemaining = TasksRemaining + 1
|
||||||
end
|
end
|
||||||
|
|||||||
@ -558,7 +558,7 @@ function TASK:SetMenu( MenuTime ) --R2.1 Mission Reports and Task Reports added.
|
|||||||
TaskGroup.MenuReports = MENU_GROUP:New( TaskGroup, "Reports", MissionMenu )
|
TaskGroup.MenuReports = MENU_GROUP:New( TaskGroup, "Reports", MissionMenu )
|
||||||
MENU_GROUP_COMMAND:New( TaskGroup, "Report Tasks", TaskGroup.MenuReports, Mission.MenuReportSummary, Mission, TaskGroup )
|
MENU_GROUP_COMMAND:New( TaskGroup, "Report Tasks", TaskGroup.MenuReports, Mission.MenuReportSummary, Mission, TaskGroup )
|
||||||
MENU_GROUP_COMMAND:New( TaskGroup, "Report Planned Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Planned" )
|
MENU_GROUP_COMMAND:New( TaskGroup, "Report Planned Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Planned" )
|
||||||
MENU_GROUP_COMMAND:New( TaskGroup, "Report Ongoing Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Ongoing" )
|
MENU_GROUP_COMMAND:New( TaskGroup, "Report Assigned Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Assigned" )
|
||||||
MENU_GROUP_COMMAND:New( TaskGroup, "Report Successful Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Success" )
|
MENU_GROUP_COMMAND:New( TaskGroup, "Report Successful Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Success" )
|
||||||
MENU_GROUP_COMMAND:New( TaskGroup, "Report Failed Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Failed" )
|
MENU_GROUP_COMMAND:New( TaskGroup, "Report Failed Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Failed" )
|
||||||
MENU_GROUP_COMMAND:New( TaskGroup, "Report Held Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Hold" )
|
MENU_GROUP_COMMAND:New( TaskGroup, "Report Held Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Hold" )
|
||||||
@ -796,7 +796,9 @@ function TASK:RemoveStateMachine( TaskUnit )
|
|||||||
|
|
||||||
self:E( self.Fsm )
|
self:E( self.Fsm )
|
||||||
for TaskUnitT, Fsm in pairs( self.Fsm ) do
|
for TaskUnitT, Fsm in pairs( self.Fsm ) do
|
||||||
|
local Fsm = Fsm -- Core.Fsm#FSM_PROCESS
|
||||||
self:E( TaskUnitT )
|
self:E( TaskUnitT )
|
||||||
|
Fsm:Remove()
|
||||||
end
|
end
|
||||||
|
|
||||||
self.Fsm[TaskUnit] = nil
|
self.Fsm[TaskUnit] = nil
|
||||||
|
|||||||
@ -208,82 +208,91 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
local ChangeMsg = {}
|
local ChangeMsg = {}
|
||||||
|
|
||||||
local Mission = self.Mission
|
local Mission = self.Mission
|
||||||
|
|
||||||
--- First we need to the detected targets.
|
|
||||||
for DetectedItemID, DetectedItem in pairs( Detection:GetDetectedItems() ) do
|
|
||||||
|
|
||||||
local DetectedItem = DetectedItem -- Functional.Detection#DETECTION_BASE.DetectedItem
|
if Mission:IsIDLE() or Mission:IsENGAGED() then
|
||||||
local DetectedSet = DetectedItem.Set -- Functional.Detection#DETECTION_BASE.DetectedSet
|
|
||||||
local DetectedZone = DetectedItem.Zone
|
|
||||||
self:E( { "Targets in DetectedItem", DetectedItem.ItemID, DetectedSet:Count(), tostring( DetectedItem ) } )
|
|
||||||
DetectedSet:Flush()
|
|
||||||
|
|
||||||
local ItemID = DetectedItem.ID
|
|
||||||
|
|
||||||
-- Evaluate SEAD Tasking
|
|
||||||
local SEADTask = Mission:GetTask( string.format( "SEAD.%03d", ItemID ) )
|
|
||||||
SEADTask = self:EvaluateRemoveTask( Mission, SEADTask, DetectedItem )
|
|
||||||
if not SEADTask then
|
|
||||||
local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
|
||||||
if TargetSetUnit then
|
|
||||||
local Task = TASK_SEAD:New( Mission, self.SetGroup, string.format( "SEAD.%03d", ItemID ), TargetSetUnit )
|
|
||||||
Task:SetTargetZone( DetectedZone )
|
|
||||||
Task:SetDispatcher( self )
|
|
||||||
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
|
||||||
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
|
||||||
SEADTask = Mission:AddTask( Task )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Evaluate CAS Tasking
|
|
||||||
local CASTask = Mission:GetTask( string.format( "CAS.%03d", ItemID ) )
|
|
||||||
CASTask = self:EvaluateRemoveTask( Mission, CASTask, DetectedItem )
|
|
||||||
if not CASTask then
|
|
||||||
local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
|
||||||
if TargetSetUnit then
|
|
||||||
local Task = TASK_CAS:New( Mission, self.SetGroup, string.format( "CAS.%03d", ItemID ), TargetSetUnit )
|
|
||||||
Task:SetTargetZone( DetectedZone )
|
|
||||||
Task:SetDispatcher( self )
|
|
||||||
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
|
||||||
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
|
||||||
CASTask = Mission:AddTask( Task )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Evaluate BAI Tasking
|
|
||||||
local BAITask = Mission:GetTask( string.format( "BAI.%03d", ItemID ) )
|
|
||||||
BAITask = self:EvaluateRemoveTask( Mission, BAITask, DetectedItem )
|
|
||||||
if not BAITask then
|
|
||||||
local TargetSetUnit = self:EvaluateBAI( DetectedItem, self.Mission:GetCommandCenter():GetPositionable():GetCoalition() ) -- Returns a SetUnit if there are targets to be SEADed...
|
|
||||||
if TargetSetUnit then
|
|
||||||
local Task = TASK_BAI:New( Mission, self.SetGroup, string.format( "BAI.%03d", ItemID ), TargetSetUnit )
|
|
||||||
Task:SetTargetZone( DetectedZone )
|
|
||||||
Task:SetDispatcher( self )
|
|
||||||
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
|
||||||
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
|
||||||
BAITask = Mission:AddTask( Task )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- OK, so the tasking has been done, now delete the changes reported for the area.
|
|
||||||
Detection:AcceptChanges( DetectedItem )
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
-- TODO set menus using the HQ coordinator
|
local TaskReport = REPORT:New()
|
||||||
Mission:GetCommandCenter():SetMenu()
|
|
||||||
|
--- First we need to the detected targets.
|
||||||
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
for DetectedItemID, DetectedItem in pairs( Detection:GetDetectedItems() ) do
|
||||||
Mission:GetCommandCenter():MessageToGroup( string.format( "There are %d tasks remaining for mission *%s*. Subscribe to a task using the menu.", Mission:GetTasksRemaining(), Mission:GetName() ), TaskGroup )
|
|
||||||
if not TaskGroup:GetState( TaskGroup, "Assigned" ) then
|
local DetectedItem = DetectedItem -- Functional.Detection#DETECTION_BASE.DetectedItem
|
||||||
-- Mission:GetCommandCenter():MessageToGroup(
|
local DetectedSet = DetectedItem.Set -- Functional.Detection#DETECTION_BASE.DetectedSet
|
||||||
-- string.format( "HQ Reporting - Planned tasks for mission '%s':\n\n%s\n",
|
local DetectedZone = DetectedItem.Zone
|
||||||
-- self.Mission:GetName(),
|
self:E( { "Targets in DetectedItem", DetectedItem.ItemID, DetectedSet:Count(), tostring( DetectedItem ) } )
|
||||||
-- string.format( "%s\n\n%s\n\n%s\n\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text()
|
DetectedSet:Flush()
|
||||||
-- )
|
|
||||||
-- ), TaskGroup
|
local ItemID = DetectedItem.ID
|
||||||
-- )
|
|
||||||
|
-- Evaluate SEAD Tasking
|
||||||
|
local SEADTask = Mission:GetTask( string.format( "SEAD.%03d", ItemID ) )
|
||||||
|
SEADTask = self:EvaluateRemoveTask( Mission, SEADTask, DetectedItem )
|
||||||
|
if not SEADTask then
|
||||||
|
local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
local Task = TASK_SEAD:New( Mission, self.SetGroup, string.format( "SEAD.%03d", ItemID ), TargetSetUnit )
|
||||||
|
Task:SetTargetZone( DetectedZone )
|
||||||
|
Task:SetDispatcher( self )
|
||||||
|
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
||||||
|
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
||||||
|
SEADTask = Mission:AddTask( Task )
|
||||||
|
TaskReport:Add( Task:GetName() )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Evaluate CAS Tasking
|
||||||
|
local CASTask = Mission:GetTask( string.format( "CAS.%03d", ItemID ) )
|
||||||
|
CASTask = self:EvaluateRemoveTask( Mission, CASTask, DetectedItem )
|
||||||
|
if not CASTask then
|
||||||
|
local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
local Task = TASK_CAS:New( Mission, self.SetGroup, string.format( "CAS.%03d", ItemID ), TargetSetUnit )
|
||||||
|
Task:SetTargetZone( DetectedZone )
|
||||||
|
Task:SetDispatcher( self )
|
||||||
|
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
||||||
|
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
||||||
|
CASTask = Mission:AddTask( Task )
|
||||||
|
TaskReport:Add( Task:GetName() )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Evaluate BAI Tasking
|
||||||
|
local BAITask = Mission:GetTask( string.format( "BAI.%03d", ItemID ) )
|
||||||
|
BAITask = self:EvaluateRemoveTask( Mission, BAITask, DetectedItem )
|
||||||
|
if not BAITask then
|
||||||
|
local TargetSetUnit = self:EvaluateBAI( DetectedItem, self.Mission:GetCommandCenter():GetPositionable():GetCoalition() ) -- Returns a SetUnit if there are targets to be SEADed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
local Task = TASK_BAI:New( Mission, self.SetGroup, string.format( "BAI.%03d", ItemID ), TargetSetUnit )
|
||||||
|
Task:SetTargetZone( DetectedZone )
|
||||||
|
Task:SetDispatcher( self )
|
||||||
|
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
||||||
|
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
||||||
|
BAITask = Mission:AddTask( Task )
|
||||||
|
TaskReport:Add( Task:GetName() )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- OK, so the tasking has been done, now delete the changes reported for the area.
|
||||||
|
Detection:AcceptChanges( DetectedItem )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- TODO set menus using the HQ coordinator
|
||||||
|
Mission:GetCommandCenter():SetMenu()
|
||||||
|
|
||||||
|
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
|
Mission:GetCommandCenter():MessageToGroup( string.format( "New task(s) %s for mission *%s*. Subscribe to a task using the Mission *Overlord* radio menu.", TaskReport:Text(", "), Mission:GetName() ), TaskGroup )
|
||||||
|
if not TaskGroup:GetState( TaskGroup, "Assigned" ) then
|
||||||
|
-- Mission:GetCommandCenter():MessageToGroup(
|
||||||
|
-- string.format( "HQ Reporting - Planned tasks for mission '%s':\n\n%s\n",
|
||||||
|
-- self.Mission:GetName(),
|
||||||
|
-- string.format( "%s\n\n%s\n\n%s\n\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text()
|
||||||
|
-- )
|
||||||
|
-- ), TaskGroup
|
||||||
|
-- )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|||||||
@ -156,7 +156,6 @@ end
|
|||||||
-- @param #GROUP self
|
-- @param #GROUP self
|
||||||
-- @return Dcs.DCSWrapper.Group#Group The DCS Group.
|
-- @return Dcs.DCSWrapper.Group#Group The DCS Group.
|
||||||
function GROUP:GetDCSObject()
|
function GROUP:GetDCSObject()
|
||||||
self:F(self.GroupName)
|
|
||||||
local DCSGroup = Group.getByName( self.GroupName )
|
local DCSGroup = Group.getByName( self.GroupName )
|
||||||
|
|
||||||
if DCSGroup then
|
if DCSGroup then
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' )
|
env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' )
|
||||||
env.info( 'Moose Generation Timestamp: 20170424_1257' )
|
env.info( 'Moose Generation Timestamp: 20170426_1017' )
|
||||||
|
|
||||||
local base = _G
|
local base = _G
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user