mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
- AI_A2A_Gci Removed reference to SetEngageZone - Fixed link to #AI_A2G_SEAD.SetEngageRange #2025 - AI_Air_Engage removed reference to SetEngageZone. Does not seem to exist any more. - AI_Air_Patrol removed reference to SetEngageZone. Does not seem to exist any more or is passed as argument now. - AI_FORMATION Fixed DCSTypes#AI.Option.Air.val.ROE OptionROE #2029 - SETTINGS Fixed link to Message #2021 - Fixed wrong indent of "Developer Note" in various classes
193 lines
6.5 KiB
Lua
193 lines
6.5 KiB
Lua
--- **Tasking** - This module contains the TASK_MANAGER class and derived classes.
|
|
--
|
|
-- ===
|
|
--
|
|
-- 1) @{Tasking.Task_Manager#TASK_MANAGER} class, extends @{Core.Fsm#FSM}
|
|
-- ===
|
|
-- The @{Tasking.Task_Manager#TASK_MANAGER} class defines the core functions to report tasks to groups.
|
|
-- Reportings can be done in several manners, and it is up to the derived classes if TASK_MANAGER to model the reporting behaviour.
|
|
--
|
|
-- 1.1) TASK_MANAGER constructor:
|
|
-- -----------------------------------
|
|
-- * @{Tasking.Task_Manager#TASK_MANAGER.New}(): Create a new TASK_MANAGER instance.
|
|
--
|
|
-- 1.2) TASK_MANAGER reporting:
|
|
-- ---------------------------------
|
|
-- Derived TASK_MANAGER classes will manage tasks using the method @{Tasking.Task_Manager#TASK_MANAGER.ManageTasks}(). This method implements polymorphic behaviour.
|
|
--
|
|
-- The time interval in seconds of the task management can be changed using the methods @{Tasking.Task_Manager#TASK_MANAGER.SetRefreshTimeInterval}().
|
|
-- To control how long a reporting message is displayed, use @{Tasking.Task_Manager#TASK_MANAGER.SetReportDisplayTime}().
|
|
-- Derived classes need to implement the method @{Tasking.Task_Manager#TASK_MANAGER.GetReportDisplayTime}() to use the correct display time for displayed messages during a report.
|
|
--
|
|
-- Task management can be started and stopped using the methods @{Tasking.Task_Manager#TASK_MANAGER.StartTasks}() and @{Tasking.Task_Manager#TASK_MANAGER.StopTasks}() respectively.
|
|
-- If an ad-hoc report is requested, use the method @{Tasking.Task_Manager#TASK_MANAGER#ManageTasks}().
|
|
--
|
|
-- The default task management interval is every 60 seconds.
|
|
--
|
|
-- # Developer Note
|
|
--
|
|
-- Note while this class still works, it is no longer supported as the original author stopped active development of MOOSE
|
|
-- Therefore, this class is considered to be deprecated
|
|
--
|
|
-- ===
|
|
--
|
|
-- ### Contributions: Mechanist, Prof_Hilactic, FlightControl - Concept & Testing
|
|
-- ### Author: FlightControl - Framework Design & Programming
|
|
--
|
|
-- @module Tasking.Task_Manager
|
|
-- @image MOOSE.JPG
|
|
|
|
do -- TASK_MANAGER
|
|
|
|
--- TASK_MANAGER class.
|
|
-- @type TASK_MANAGER
|
|
-- @field Core.Set#SET_GROUP SetGroup The set of group objects containing players for which tasks are managed.
|
|
-- @extends Core.Fsm#FSM
|
|
TASK_MANAGER = {
|
|
ClassName = "TASK_MANAGER",
|
|
SetGroup = nil,
|
|
}
|
|
|
|
--- TASK\_MANAGER constructor.
|
|
-- @param #TASK_MANAGER self
|
|
-- @param Core.Set#SET_GROUP SetGroup The set of group objects containing players for which tasks are managed.
|
|
-- @return #TASK_MANAGER self
|
|
function TASK_MANAGER:New( SetGroup )
|
|
|
|
-- Inherits from BASE
|
|
local self = BASE:Inherit( self, FSM:New() ) -- #TASK_MANAGER
|
|
|
|
self.SetGroup = SetGroup
|
|
|
|
self:SetStartState( "Stopped" )
|
|
self:AddTransition( "Stopped", "StartTasks", "Started" )
|
|
|
|
--- StartTasks Handler OnBefore for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] OnBeforeStartTasks
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #string From
|
|
-- @param #string Event
|
|
-- @param #string To
|
|
-- @return #boolean
|
|
|
|
--- StartTasks Handler OnAfter for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] OnAfterStartTasks
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #string From
|
|
-- @param #string Event
|
|
-- @param #string To
|
|
|
|
--- StartTasks Trigger for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] StartTasks
|
|
-- @param #TASK_MANAGER self
|
|
|
|
--- StartTasks Asynchronous Trigger for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] __StartTasks
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #number Delay
|
|
|
|
self:AddTransition( "Started", "StopTasks", "Stopped" )
|
|
|
|
--- StopTasks Handler OnBefore for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] OnBeforeStopTasks
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #string From
|
|
-- @param #string Event
|
|
-- @param #string To
|
|
-- @return #boolean
|
|
|
|
--- StopTasks Handler OnAfter for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] OnAfterStopTasks
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #string From
|
|
-- @param #string Event
|
|
-- @param #string To
|
|
|
|
--- StopTasks Trigger for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] StopTasks
|
|
-- @param #TASK_MANAGER self
|
|
|
|
--- StopTasks Asynchronous Trigger for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] __StopTasks
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #number Delay
|
|
|
|
self:AddTransition( "Started", "Manage", "Started" )
|
|
|
|
self:AddTransition( "Started", "Success", "Started" )
|
|
|
|
--- Success Handler OnAfter for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] OnAfterSuccess
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #string From
|
|
-- @param #string Event
|
|
-- @param #string To
|
|
-- @param Tasking.Task#TASK Task
|
|
|
|
self:AddTransition( "Started", "Failed", "Started" )
|
|
|
|
--- Failed Handler OnAfter for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] OnAfterFailed
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #string From
|
|
-- @param #string Event
|
|
-- @param #string To
|
|
-- @param Tasking.Task#TASK Task
|
|
|
|
self:AddTransition( "Started", "Aborted", "Started" )
|
|
|
|
--- Aborted Handler OnAfter for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] OnAfterAborted
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #string From
|
|
-- @param #string Event
|
|
-- @param #string To
|
|
-- @param Tasking.Task#TASK Task
|
|
|
|
self:AddTransition( "Started", "Cancelled", "Started" )
|
|
|
|
--- Cancelled Handler OnAfter for TASK_MANAGER
|
|
-- @function [parent=#TASK_MANAGER] OnAfterCancelled
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #string From
|
|
-- @param #string Event
|
|
-- @param #string To
|
|
-- @param Tasking.Task#TASK Task
|
|
|
|
self:SetRefreshTimeInterval( 30 )
|
|
|
|
return self
|
|
end
|
|
|
|
function TASK_MANAGER:onafterStartTasks( From, Event, To )
|
|
self:Manage()
|
|
end
|
|
|
|
function TASK_MANAGER:onafterManage( From, Event, To )
|
|
|
|
self:__Manage( -self._RefreshTimeInterval )
|
|
|
|
self:ManageTasks()
|
|
end
|
|
|
|
--- Set the refresh time interval in seconds when a new task management action needs to be done.
|
|
-- @param #TASK_MANAGER self
|
|
-- @param #number RefreshTimeInterval The refresh time interval in seconds when a new task management action needs to be done.
|
|
-- @return #TASK_MANAGER self
|
|
function TASK_MANAGER:SetRefreshTimeInterval( RefreshTimeInterval )
|
|
self:F2()
|
|
|
|
self._RefreshTimeInterval = RefreshTimeInterval
|
|
end
|
|
|
|
|
|
--- Manages the tasks for the @{Core.Set#SET_GROUP}.
|
|
-- @param #TASK_MANAGER self
|
|
-- @return #TASK_MANAGER self
|
|
function TASK_MANAGER:ManageTasks()
|
|
|
|
end
|
|
|
|
end
|
|
|