mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Progress on tasking, processes to use templates ...
This commit is contained in:
parent
cd4d4af559
commit
6239b6263c
@ -207,9 +207,10 @@ do -- ASSIGN_MENU_ACCEPT
|
||||
MESSAGE:New( self.TaskBriefing .. "\nAccess the radio menu to accept the task. You have 30 seconds or the assignment will be cancelled.", 30, "Task Assignment" ):ToGroup( ProcessUnit:GetGroup() )
|
||||
|
||||
local ProcessGroup = ProcessUnit:GetGroup()
|
||||
|
||||
self.Menu = MENU_GROUP:New( ProcessGroup, "Task " .. self.TaskName .. " acceptance" )
|
||||
self.MenuAcceptTask = MENU_GROUP_COMMAND:New( ProcessGroup, "Accept task " .. self.MenuText, self.Menu, self.MenuAssign, self )
|
||||
self.MenuRejectTask = MENU_GROUP_COMMAND:New( ProcessGroup, "Reject task " .. self.MenuText, self.Menu, self.MenuReject, self )
|
||||
self.MenuAcceptTask = MENU_GROUP_COMMAND:New( ProcessGroup, "Accept task " .. self.TaskName, self.Menu, self.MenuAssign, self )
|
||||
self.MenuRejectTask = MENU_GROUP_COMMAND:New( ProcessGroup, "Reject task " .. self.TaskName, self.Menu, self.MenuReject, self )
|
||||
end
|
||||
|
||||
--- Menu function.
|
||||
|
||||
@ -16,20 +16,35 @@ PROCESS = {
|
||||
--- Instantiates a new TASK Base. Should never be used. Interface Class.
|
||||
-- @param #PROCESS self
|
||||
-- @param #string ProcessName
|
||||
-- @param Task#TASK_BASE Task
|
||||
-- @param Unit#UNIT ProcessUnit
|
||||
-- @return #PROCESS self
|
||||
function PROCESS:New( FSMT, ProcessUnit, ProcessName )
|
||||
function PROCESS:New( FSMT, ProcessName, ProcessUnit )
|
||||
local self = BASE:Inherit( self, STATEMACHINE_CONTROLLABLE:New( FSMT, ProcessUnit ) )
|
||||
self:F()
|
||||
|
||||
self.ProcessGroup = ProcessUnit:GetGroup()
|
||||
if ProcessUnit then
|
||||
self.ProcessGroup = ProcessUnit:GetGroup()
|
||||
end
|
||||
|
||||
--self.MissionMenu = Task.Mission:GetMissionMenu( self.ProcessGroup )
|
||||
self.ProcessName = ProcessName
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
--- Assign the process to a @{Unit} and activate the process.
|
||||
-- @param #PROCESS self
|
||||
-- @param Unit#UNIT ProcessUnit
|
||||
-- @return #PROCESS self
|
||||
function PROCESS:Assign( ProcessUnit )
|
||||
|
||||
self:SetControllable( ProcessUnit )
|
||||
self.ProcessGroup = ProcessUnit:GetGroup()
|
||||
--self:Activate()
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
--- Adds a score for the PROCESS to be achieved.
|
||||
-- @param #PROCESS self
|
||||
-- @param Task#TASK_BASE Task The task for which the process needs to account score.
|
||||
|
||||
@ -414,11 +414,12 @@ function TASK_BASE:AssignProcess( ProcessUnit, ProcessName )
|
||||
local ProcessUnitName = ProcessUnit:GetName()
|
||||
|
||||
-- Create the Process instance base on the ProcessClasses collection assigned to the Task
|
||||
local ProcessClass, ProcessArguments
|
||||
ProcessClass, ProcessArguments = self:GetProcessClass( ProcessName )
|
||||
local ProcessTemplate, ProcessArguments
|
||||
ProcessTemplate = self:GetProcessTemplate( ProcessName )
|
||||
|
||||
local Process = ProcessClass:New( unpack( ProcessArguments ) ) -- Process#PROCESS
|
||||
Process:SetControllable( ProcessUnit )
|
||||
self:E( "Deepcopy" )
|
||||
local Process = UTILS.DeepCopy( ProcessTemplate ) -- Process#PROCESS
|
||||
Process:Assign( ProcessUnit )
|
||||
|
||||
self.Processes = self.Processes or {}
|
||||
self.Processes[ProcessUnitName] = self.Processes[ProcessUnitName] or {}
|
||||
@ -429,33 +430,28 @@ function TASK_BASE:AssignProcess( ProcessUnit, ProcessName )
|
||||
end
|
||||
|
||||
|
||||
--- Get the default or currently assigned @{Process} class with key ProcessName.
|
||||
--- Get the default or currently assigned @{Process} template with key ProcessName.
|
||||
-- @param #TASK_BASE self
|
||||
-- @param #string ProcessName
|
||||
-- @return Process#PROCESS
|
||||
-- @return #table
|
||||
function TASK_BASE:GetProcessClass( ProcessName )
|
||||
function TASK_BASE:GetProcessTemplate( ProcessName )
|
||||
|
||||
local ProcessClass = self.ProcessClasses[ProcessName].Class
|
||||
local ProcessArguments = self.ProcessClasses[ProcessName].Arguments
|
||||
local ProcessTemplate = self.ProcessClasses[ProcessName]
|
||||
|
||||
return ProcessClass, ProcessArguments
|
||||
return ProcessTemplate
|
||||
end
|
||||
|
||||
|
||||
--- Set the Process default class with key ProcessName providing the ProcessClass and the constructor initialization parameters when it is assigned to a Unit by the task.
|
||||
--- Set the default @{Process} template with key ProcessName providing the ProcessClass and the process object when it is assigned to a @{Controllable} by the task.
|
||||
-- @param #TASK_BASE self
|
||||
-- @param #string ProcessName
|
||||
-- @param Process#PROCESS ProcessClass
|
||||
-- @param #table ... The parameters for the New() constructor of the ProcessClass, when the Task is assigning a new Process to the Unit.
|
||||
-- @param Process#PROCESS ProcessTemplate
|
||||
-- @return Process#PROCESS
|
||||
function TASK_BASE:SetProcessClass( ProcessName, ProcessClass, ... )
|
||||
function TASK_BASE:SetProcessTemplate( ProcessName, ProcessTemplate )
|
||||
|
||||
self.ProcessClasses[ProcessName] = self.ProcessClasses[ProcessName] or {}
|
||||
self.ProcessClasses[ProcessName].Class = ProcessClass
|
||||
self.ProcessClasses[ProcessName].Arguments = ...
|
||||
self.ProcessClasses[ProcessName] = ProcessTemplate
|
||||
|
||||
return ProcessClass
|
||||
return ProcessTemplate
|
||||
end
|
||||
|
||||
|
||||
|
||||
@ -45,14 +45,9 @@ do -- TASK_SEAD
|
||||
self.TargetSetUnit = TargetSetUnit
|
||||
self.TargetZone = TargetZone
|
||||
|
||||
-- ASSIGN_ACCEPT:New(TaskBriefing)
|
||||
self:SetProcessClass( "ASSIGN", ASSIGN_ACCEPT, self.TaskBriefing )
|
||||
|
||||
-- ROUTE_ZONE:New(TargetZone)
|
||||
self:SetProcessClass( "ROUTE", ROUTE_ZONE, self.TargetZone )
|
||||
|
||||
-- ACCOUNT_DEADS:New(TargetSetUnit,TaskName)
|
||||
self:SetProcessClass( "ACCOUNT", ACCOUNT_DEADS, self.TargetSetUnit, "SEAD" )
|
||||
self:SetProcessTemplate( "ASSIGN", ASSIGN_ACCEPT:New( self.TaskBriefing ) )
|
||||
self:SetProcessTemplate( "ROUTE", ROUTE_ZONE:New( self.TargetZone ) )
|
||||
self:SetProcessTemplate( "ACCOUNT", ACCOUNT_DEADS:New( self.TargetSetUnit, "SEAD" ) )
|
||||
|
||||
-- SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone )
|
||||
--self:SetProcessClass( "SMOKE", SMOKE_TARGETS_ZONE, self.TargetSetUnit, self.TargetZone )
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' )
|
||||
env.info( 'Moose Generation Timestamp: 20160902_0901' )
|
||||
env.info( 'Moose Generation Timestamp: 20161102_0903' )
|
||||
|
||||
local base = _G
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' )
|
||||
env.info( 'Moose Generation Timestamp: 20160902_0901' )
|
||||
env.info( 'Moose Generation Timestamp: 20161102_0903' )
|
||||
|
||||
local base = _G
|
||||
|
||||
|
||||
@ -16,11 +16,12 @@ TaskSEAD:AddScore( "Success", "Destroyed all target radars", 250 )
|
||||
TaskSEAD:AddScore( "Failed", "Failed to destroy all target radars", -100 )
|
||||
|
||||
-- ASSIGN_MENU_ACCEPT:New(TaskName,TaskBriefing)
|
||||
local AssignProcess = TaskSEAD:SetProcessClass( "ASSIGN", ASSIGN_MENU_ACCEPT, "SEAD", "Hello World" )
|
||||
local AssignProcess = TaskSEAD:SetProcessTemplate( "ASSIGN", ASSIGN_MENU_ACCEPT:New( "SEAD", "Hello World" ) )
|
||||
--local AssignProcess = TaskSEAD:SetProcessClass( "ASSIGN", ASSIGN_MENU_ACCEPT, "SEAD", "Hello World" )
|
||||
AssignProcess:AddScore( TaskSEAD, "Assign", "You are assigned to the task", 10 )
|
||||
|
||||
-- ACCOUNT_DEADS:New(ProcessUnit,TargetSetUnit,TaskName)
|
||||
local AccountProcess = TaskSEAD:SetProcessClass( "ACCOUNT", ACCOUNT_DEADS, TargetSet, "SEAD" )
|
||||
local AccountProcess = TaskSEAD:SetProcessTemplate( "ACCOUNT", ACCOUNT_DEADS:New( TargetSet, "SEAD" ) )
|
||||
AccountProcess:AddScore( TaskSEAD, "Account", "destroyed a radar", 25 )
|
||||
AccountProcess:AddScore( TaskSEAD, "Failed", "failed to destroy a radar", -100 )
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user