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() )
|
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()
|
local ProcessGroup = ProcessUnit:GetGroup()
|
||||||
|
|
||||||
self.Menu = MENU_GROUP:New( ProcessGroup, "Task " .. self.TaskName .. " acceptance" )
|
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.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.MenuText, self.Menu, self.MenuReject, self )
|
self.MenuRejectTask = MENU_GROUP_COMMAND:New( ProcessGroup, "Reject task " .. self.TaskName, self.Menu, self.MenuReject, self )
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Menu function.
|
--- Menu function.
|
||||||
|
|||||||
@ -16,20 +16,35 @@ PROCESS = {
|
|||||||
--- Instantiates a new TASK Base. Should never be used. Interface Class.
|
--- Instantiates a new TASK Base. Should never be used. Interface Class.
|
||||||
-- @param #PROCESS self
|
-- @param #PROCESS self
|
||||||
-- @param #string ProcessName
|
-- @param #string ProcessName
|
||||||
-- @param Task#TASK_BASE Task
|
|
||||||
-- @param Unit#UNIT ProcessUnit
|
-- @param Unit#UNIT ProcessUnit
|
||||||
-- @return #PROCESS self
|
-- @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 ) )
|
local self = BASE:Inherit( self, STATEMACHINE_CONTROLLABLE:New( FSMT, ProcessUnit ) )
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
|
if ProcessUnit then
|
||||||
self.ProcessGroup = ProcessUnit:GetGroup()
|
self.ProcessGroup = ProcessUnit:GetGroup()
|
||||||
|
end
|
||||||
|
|
||||||
--self.MissionMenu = Task.Mission:GetMissionMenu( self.ProcessGroup )
|
--self.MissionMenu = Task.Mission:GetMissionMenu( self.ProcessGroup )
|
||||||
self.ProcessName = ProcessName
|
self.ProcessName = ProcessName
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
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.
|
--- Adds a score for the PROCESS to be achieved.
|
||||||
-- @param #PROCESS self
|
-- @param #PROCESS self
|
||||||
-- @param Task#TASK_BASE Task The task for which the process needs to account score.
|
-- @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()
|
local ProcessUnitName = ProcessUnit:GetName()
|
||||||
|
|
||||||
-- Create the Process instance base on the ProcessClasses collection assigned to the Task
|
-- Create the Process instance base on the ProcessClasses collection assigned to the Task
|
||||||
local ProcessClass, ProcessArguments
|
local ProcessTemplate, ProcessArguments
|
||||||
ProcessClass, ProcessArguments = self:GetProcessClass( ProcessName )
|
ProcessTemplate = self:GetProcessTemplate( ProcessName )
|
||||||
|
|
||||||
local Process = ProcessClass:New( unpack( ProcessArguments ) ) -- Process#PROCESS
|
self:E( "Deepcopy" )
|
||||||
Process:SetControllable( ProcessUnit )
|
local Process = UTILS.DeepCopy( ProcessTemplate ) -- Process#PROCESS
|
||||||
|
Process:Assign( ProcessUnit )
|
||||||
|
|
||||||
self.Processes = self.Processes or {}
|
self.Processes = self.Processes or {}
|
||||||
self.Processes[ProcessUnitName] = self.Processes[ProcessUnitName] or {}
|
self.Processes[ProcessUnitName] = self.Processes[ProcessUnitName] or {}
|
||||||
@ -429,33 +430,28 @@ function TASK_BASE:AssignProcess( ProcessUnit, ProcessName )
|
|||||||
end
|
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 #TASK_BASE self
|
||||||
-- @param #string ProcessName
|
-- @param #string ProcessName
|
||||||
-- @return Process#PROCESS
|
-- @return Process#PROCESS
|
||||||
-- @return #table
|
function TASK_BASE:GetProcessTemplate( ProcessName )
|
||||||
function TASK_BASE:GetProcessClass( ProcessName )
|
|
||||||
|
|
||||||
local ProcessClass = self.ProcessClasses[ProcessName].Class
|
local ProcessTemplate = self.ProcessClasses[ProcessName]
|
||||||
local ProcessArguments = self.ProcessClasses[ProcessName].Arguments
|
|
||||||
|
|
||||||
return ProcessClass, ProcessArguments
|
return ProcessTemplate
|
||||||
end
|
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 #TASK_BASE self
|
||||||
-- @param #string ProcessName
|
-- @param #string ProcessName
|
||||||
-- @param Process#PROCESS ProcessClass
|
-- @param Process#PROCESS ProcessTemplate
|
||||||
-- @param #table ... The parameters for the New() constructor of the ProcessClass, when the Task is assigning a new Process to the Unit.
|
|
||||||
-- @return Process#PROCESS
|
-- @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] = ProcessTemplate
|
||||||
self.ProcessClasses[ProcessName].Class = ProcessClass
|
|
||||||
self.ProcessClasses[ProcessName].Arguments = ...
|
|
||||||
|
|
||||||
return ProcessClass
|
return ProcessTemplate
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -45,14 +45,9 @@ do -- TASK_SEAD
|
|||||||
self.TargetSetUnit = TargetSetUnit
|
self.TargetSetUnit = TargetSetUnit
|
||||||
self.TargetZone = TargetZone
|
self.TargetZone = TargetZone
|
||||||
|
|
||||||
-- ASSIGN_ACCEPT:New(TaskBriefing)
|
self:SetProcessTemplate( "ASSIGN", ASSIGN_ACCEPT:New( self.TaskBriefing ) )
|
||||||
self:SetProcessClass( "ASSIGN", ASSIGN_ACCEPT, self.TaskBriefing )
|
self:SetProcessTemplate( "ROUTE", ROUTE_ZONE:New( self.TargetZone ) )
|
||||||
|
self:SetProcessTemplate( "ACCOUNT", ACCOUNT_DEADS:New( self.TargetSetUnit, "SEAD" ) )
|
||||||
-- ROUTE_ZONE:New(TargetZone)
|
|
||||||
self:SetProcessClass( "ROUTE", ROUTE_ZONE, self.TargetZone )
|
|
||||||
|
|
||||||
-- ACCOUNT_DEADS:New(TargetSetUnit,TaskName)
|
|
||||||
self:SetProcessClass( "ACCOUNT", ACCOUNT_DEADS, self.TargetSetUnit, "SEAD" )
|
|
||||||
|
|
||||||
-- SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone )
|
-- SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone )
|
||||||
--self:SetProcessClass( "SMOKE", SMOKE_TARGETS_ZONE, 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 DYNAMIC INCLUDE START *** ' )
|
||||||
env.info( 'Moose Generation Timestamp: 20160902_0901' )
|
env.info( 'Moose Generation Timestamp: 20161102_0903' )
|
||||||
|
|
||||||
local base = _G
|
local base = _G
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' )
|
env.info( '*** MOOSE DYNAMIC INCLUDE START *** ' )
|
||||||
env.info( 'Moose Generation Timestamp: 20160902_0901' )
|
env.info( 'Moose Generation Timestamp: 20161102_0903' )
|
||||||
|
|
||||||
local base = _G
|
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 )
|
TaskSEAD:AddScore( "Failed", "Failed to destroy all target radars", -100 )
|
||||||
|
|
||||||
-- ASSIGN_MENU_ACCEPT:New(TaskName,TaskBriefing)
|
-- 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 )
|
AssignProcess:AddScore( TaskSEAD, "Assign", "You are assigned to the task", 10 )
|
||||||
|
|
||||||
-- ACCOUNT_DEADS:New(ProcessUnit,TargetSetUnit,TaskName)
|
-- 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, "Account", "destroyed a radar", 25 )
|
||||||
AccountProcess:AddScore( TaskSEAD, "Failed", "failed to destroy a radar", -100 )
|
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