mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Inform state changes
This commit is contained in:
parent
8a4b40303a
commit
153ff7bd58
@ -278,7 +278,12 @@ function TASK_DISPATCHER:EvaluateTaskSEAD( Mission, DetectedArea )
|
|||||||
DetectedArea.Tasks = DetectedArea.Tasks or {}
|
DetectedArea.Tasks = DetectedArea.Tasks or {}
|
||||||
if RadarCount > 0 then
|
if RadarCount > 0 then
|
||||||
if not DetectedArea.Tasks.SEADTask then
|
if not DetectedArea.Tasks.SEADTask then
|
||||||
local Task = TASK_SEAD:New( Mission, DetectedSet, DetectedZone )
|
-- Here we're doing something advanced... We're copying the DetectedSet, but making a new Set only with Radar units in it.
|
||||||
|
local TargetSetUnit = SET_UNIT:New()
|
||||||
|
TargetSetUnit:CopyFilter( DetectedSet )
|
||||||
|
TargetSetUnit:FilterHasRadar( Unit.RadarType.AS )
|
||||||
|
TargetSetUnit:FilterStart()
|
||||||
|
local Task = TASK_SEAD:New( Mission, TargetSetUnit, DetectedZone )
|
||||||
self.Mission:AddTask( Task )
|
self.Mission:AddTask( Task )
|
||||||
MT[#MT+1] = "SEAD"
|
MT[#MT+1] = "SEAD"
|
||||||
DetectedArea.Tasks.SEADTask = Task
|
DetectedArea.Tasks.SEADTask = Task
|
||||||
@ -289,7 +294,11 @@ function TASK_DISPATCHER:EvaluateTaskSEAD( Mission, DetectedArea )
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return table.concat( MT, "," )
|
if MT ~= {} then
|
||||||
|
return table.concat( MT, "," )
|
||||||
|
else
|
||||||
|
return ""
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Creates a CAS task when there are targets for it.
|
--- Creates a CAS task when there are targets for it.
|
||||||
@ -321,7 +330,11 @@ function TASK_DISPATCHER:EvaluateTaskCAS( Mission, DetectedArea )
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return table.concat( MT, "," )
|
if MT ~= {} then
|
||||||
|
return table.concat( MT, "," )
|
||||||
|
else
|
||||||
|
return ""
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Creates a string of the detected items in a @{Detection}.
|
--- Creates a string of the detected items in a @{Detection}.
|
||||||
|
|||||||
@ -59,7 +59,7 @@ function MESSAGE:New( MessageText, MessageDuration, MessageCategory )
|
|||||||
self.MessageCategory = ""
|
self.MessageCategory = ""
|
||||||
end
|
end
|
||||||
|
|
||||||
self.MessageDuration = MessageDuration
|
self.MessageDuration = MessageDuration or 5
|
||||||
self.MessageTime = timer.getTime()
|
self.MessageTime = timer.getTime()
|
||||||
self.MessageText = MessageText
|
self.MessageText = MessageText
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
-- @field Unit#UNIT ProcessUnit
|
-- @field Unit#UNIT ProcessUnit
|
||||||
-- @field Task#TASK Task
|
-- @field Task#TASK Task
|
||||||
-- @field StateMachine#STATEMACHINE_TASK Fsm
|
-- @field StateMachine#STATEMACHINE_TASK Fsm
|
||||||
|
-- @field #string ProcessName
|
||||||
-- @extends Base#BASE
|
-- @extends Base#BASE
|
||||||
PROCESS = {
|
PROCESS = {
|
||||||
ClassName = "TASK",
|
ClassName = "TASK",
|
||||||
@ -16,14 +17,17 @@ 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 Task#TASK_BASE Task
|
||||||
-- @param Unit#UNIT ProcessUnit
|
-- @param Unit#UNIT ProcessUnit
|
||||||
-- @return #PROCESS self
|
-- @return #PROCESS self
|
||||||
function PROCESS:New( Task, ProcessUnit )
|
function PROCESS:New( ProcessName, Task, ProcessUnit )
|
||||||
local self = BASE:Inherit( self, BASE:New() )
|
local self = BASE:Inherit( self, BASE:New() )
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
self.ProcessUnit = ProcessUnit
|
self.ProcessUnit = ProcessUnit
|
||||||
self.Task = Task
|
self.Task = Task
|
||||||
|
self.ProcessName = ProcessName
|
||||||
|
|
||||||
self.AllowEvents = true
|
self.AllowEvents = true
|
||||||
|
|
||||||
@ -66,13 +70,15 @@ end
|
|||||||
|
|
||||||
--- StateMachine callback function for a PROCESS
|
--- StateMachine callback function for a PROCESS
|
||||||
-- @param #PROCESS self
|
-- @param #PROCESS self
|
||||||
-- @param StateMachine#STATEMACHINE_TASK Fsm
|
-- @param StateMachine#STATEMACHINE_PROCESS Fsm
|
||||||
-- @param #string Event
|
-- @param #string Event
|
||||||
-- @param #string From
|
-- @param #string From
|
||||||
-- @param #string To
|
-- @param #string To
|
||||||
function PROCESS:OnStateChange( Fsm, Event, From, To )
|
function PROCESS:OnStateChange( Fsm, Event, From, To )
|
||||||
self:E( { Event, From, To, self.ProcessUnit.UnitName } )
|
self:E( { Event, From, To, self.ProcessUnit.UnitName } )
|
||||||
|
|
||||||
|
MESSAGE:New( "Process " .. self.ProcessName .. " : " .. Event .. " changed to state " .. To, 15 ):ToAll()
|
||||||
|
|
||||||
if self.Scores[To] then
|
if self.Scores[To] then
|
||||||
|
|
||||||
local Scoring = self.Task:GetScoring()
|
local Scoring = self.Task:GetScoring()
|
||||||
|
|||||||
@ -19,7 +19,7 @@ PROCESS_ASSIGN = {
|
|||||||
function PROCESS_ASSIGN:New( Task, ProcessUnit, TaskBriefing )
|
function PROCESS_ASSIGN:New( Task, ProcessUnit, TaskBriefing )
|
||||||
|
|
||||||
-- Inherits from BASE
|
-- Inherits from BASE
|
||||||
local self = BASE:Inherit( self, PROCESS:New( Task, ProcessUnit ) ) -- #PROCESS_ASSIGN
|
local self = BASE:Inherit( self, PROCESS:New( "ASSIGN", Task, ProcessUnit ) ) -- #PROCESS_ASSIGN
|
||||||
|
|
||||||
self.TaskBriefing = TaskBriefing
|
self.TaskBriefing = TaskBriefing
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@ PROCESS_CAS = {
|
|||||||
function PROCESS_CAS:New( Task, ProcessUnit, TargetSetUnit )
|
function PROCESS_CAS:New( Task, ProcessUnit, TargetSetUnit )
|
||||||
|
|
||||||
-- Inherits from BASE
|
-- Inherits from BASE
|
||||||
local self = BASE:Inherit( self, PROCESS:New( Task, ProcessUnit ) ) -- #PROCESS_CAS
|
local self = BASE:Inherit( self, PROCESS:New( "CAS", Task, ProcessUnit ) ) -- #PROCESS_CAS
|
||||||
|
|
||||||
self.TargetSetUnit = TargetSetUnit
|
self.TargetSetUnit = TargetSetUnit
|
||||||
|
|
||||||
|
|||||||
@ -19,7 +19,7 @@ PROCESS_ROUTE = {
|
|||||||
function PROCESS_ROUTE:New( Task, ProcessUnit, TargetZone )
|
function PROCESS_ROUTE:New( Task, ProcessUnit, TargetZone )
|
||||||
|
|
||||||
-- Inherits from BASE
|
-- Inherits from BASE
|
||||||
local self = BASE:Inherit( self, PROCESS:New( Task, ProcessUnit ) ) -- #PROCESS_ROUTE
|
local self = BASE:Inherit( self, PROCESS:New( "ROUTE", Task, ProcessUnit ) ) -- #PROCESS_ROUTE
|
||||||
|
|
||||||
self.TargetZone = TargetZone
|
self.TargetZone = TargetZone
|
||||||
self.DisplayInterval = 30
|
self.DisplayInterval = 30
|
||||||
|
|||||||
@ -21,7 +21,7 @@ PROCESS_SEAD = {
|
|||||||
function PROCESS_SEAD:New( Task, ProcessUnit, TargetSetUnit )
|
function PROCESS_SEAD:New( Task, ProcessUnit, TargetSetUnit )
|
||||||
|
|
||||||
-- Inherits from BASE
|
-- Inherits from BASE
|
||||||
local self = BASE:Inherit( self, PROCESS:New( Task, ProcessUnit ) ) -- #PROCESS_SEAD
|
local self = BASE:Inherit( self, PROCESS:New( "SEAD", Task, ProcessUnit ) ) -- #PROCESS_SEAD
|
||||||
|
|
||||||
self.TargetSetUnit = TargetSetUnit
|
self.TargetSetUnit = TargetSetUnit
|
||||||
|
|
||||||
@ -75,6 +75,7 @@ end
|
|||||||
-- @param Event#EVENTDATA Event
|
-- @param Event#EVENTDATA Event
|
||||||
function PROCESS_SEAD:OnHitTarget( Fsm, Event, From, To, Event )
|
function PROCESS_SEAD:OnHitTarget( Fsm, Event, From, To, Event )
|
||||||
|
|
||||||
|
MESSAGE:New( "TargetCount = " .. self.TargetSetUnit:Count(), 15 ):ToAll()
|
||||||
if self.TargetSetUnit:Count() > 0 then
|
if self.TargetSetUnit:Count() > 0 then
|
||||||
self:NextEvent( Fsm.MoreTargets )
|
self:NextEvent( Fsm.MoreTargets )
|
||||||
else
|
else
|
||||||
|
|||||||
@ -1453,7 +1453,7 @@ function SET_UNIT:IsIncludeObject( MUnit )
|
|||||||
if self.Filter.RadarTypes then
|
if self.Filter.RadarTypes then
|
||||||
local MUnitRadar = false
|
local MUnitRadar = false
|
||||||
for RadarTypeID, RadarType in pairs( self.Filter.RadarTypes ) do
|
for RadarTypeID, RadarType in pairs( self.Filter.RadarTypes ) do
|
||||||
self:T3( { "Radar:", RadarType } )
|
self:E( { "Radar:", RadarType } )
|
||||||
if MUnit:HasSensors( Unit.SensorType.RADAR, RadarType ) then
|
if MUnit:HasSensors( Unit.SensorType.RADAR, RadarType ) then
|
||||||
MUnitRadar = true
|
MUnitRadar = true
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,4 +1,9 @@
|
|||||||
--- This module contains the STATEMACHINE class.
|
--- This module contains the STATEMACHINE class.
|
||||||
|
-- This development is based on a state machine implementation made by Conroy Kyle.
|
||||||
|
-- The state machine can be found here: https://github.com/kyleconroy/lua-state-machine
|
||||||
|
--
|
||||||
|
-- I've taken the development and enhanced it to make the state machine hierarchical...
|
||||||
|
-- It is a fantastic development, this module.
|
||||||
--
|
--
|
||||||
-- ===
|
-- ===
|
||||||
--
|
--
|
||||||
|
|||||||
@ -332,6 +332,19 @@ function TASK_BASE:SetBriefing( TaskBriefing )
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- StateMachine callback function for a TASK
|
||||||
|
-- @param #TASK_BASE self
|
||||||
|
-- @param StateMachine#STATEMACHINE_TASK Fsm
|
||||||
|
-- @param #string Event
|
||||||
|
-- @param #string From
|
||||||
|
-- @param #string To
|
||||||
|
-- @param Event#EVENTDATA Event
|
||||||
|
function TASK_BASE:OnStateChange( Fsm, Event, From, To )
|
||||||
|
|
||||||
|
MESSAGE:New( "Task " .. self.TaskName .. " : " .. Event .. " changed to state " .. To, 15 ):ToAll()
|
||||||
|
self:SetState( self, "State", To )
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- @param #TASK_BASE self
|
--- @param #TASK_BASE self
|
||||||
|
|||||||
@ -78,12 +78,15 @@ end
|
|||||||
-- @param #string From
|
-- @param #string From
|
||||||
-- @param #string To
|
-- @param #string To
|
||||||
-- @param Event#EVENTDATA Event
|
-- @param Event#EVENTDATA Event
|
||||||
function TASK_SEAD:OnNext( Fsm, Event, From, To, Event )
|
function TASK_SEAD:OnNext( Fsm, Event, From, To )
|
||||||
|
|
||||||
self:SetState( self, "State", To )
|
self:SetState( self, "State", To )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- @param #TASK_SEAD self
|
--- @param #TASK_SEAD self
|
||||||
function TASK_SEAD:_Schedule()
|
function TASK_SEAD:_Schedule()
|
||||||
self:F2()
|
self:F2()
|
||||||
|
|||||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user