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:
FlightControl 2017-04-26 11:33:48 +02:00
parent 6e353cf893
commit 755343d02e
8 changed files with 138 additions and 125 deletions

View File

@ -1003,7 +1003,10 @@ 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -209,6 +209,10 @@ do -- TASK_A2G_DISPATCHER
local Mission = self.Mission local Mission = self.Mission
if Mission:IsIDLE() or Mission:IsENGAGED() then
local TaskReport = REPORT:New()
--- First we need to the detected targets. --- First we need to the detected targets.
for DetectedItemID, DetectedItem in pairs( Detection:GetDetectedItems() ) do for DetectedItemID, DetectedItem in pairs( Detection:GetDetectedItems() ) do
@ -232,6 +236,7 @@ do -- TASK_A2G_DISPATCHER
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) ) Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) ) Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
SEADTask = Mission:AddTask( Task ) SEADTask = Mission:AddTask( Task )
TaskReport:Add( Task:GetName() )
end end
end end
@ -247,6 +252,7 @@ do -- TASK_A2G_DISPATCHER
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) ) Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) ) Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
CASTask = Mission:AddTask( Task ) CASTask = Mission:AddTask( Task )
TaskReport:Add( Task:GetName() )
end end
end end
@ -262,6 +268,7 @@ do -- TASK_A2G_DISPATCHER
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) ) Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) ) Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
BAITask = Mission:AddTask( Task ) BAITask = Mission:AddTask( Task )
TaskReport:Add( Task:GetName() )
end end
end end
@ -274,7 +281,7 @@ do -- TASK_A2G_DISPATCHER
Mission:GetCommandCenter():SetMenu() Mission:GetCommandCenter():SetMenu()
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) 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 ) 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 if not TaskGroup:GetState( TaskGroup, "Assigned" ) then
-- Mission:GetCommandCenter():MessageToGroup( -- Mission:GetCommandCenter():MessageToGroup(
-- string.format( "HQ Reporting - Planned tasks for mission '%s':\n\n%s\n", -- string.format( "HQ Reporting - Planned tasks for mission '%s':\n\n%s\n",
@ -286,6 +293,8 @@ do -- TASK_A2G_DISPATCHER
end end
end end
end
return true return true
end end

View File

@ -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

View File

@ -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