mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Fixed DETECTION_DISPATCHER (I think)..
-- Need to test this in a group. -- Revised messages adding @ signs, which represent to who the message is targetted.
This commit is contained in:
parent
ce0be4dcf7
commit
0f8ed48183
@ -144,13 +144,15 @@ do -- ACT_ROUTE
|
|||||||
-- @param #string From
|
-- @param #string From
|
||||||
-- @param #string To
|
-- @param #string To
|
||||||
function ACT_ROUTE:onbeforeRoute( ProcessUnit, Event, From, To )
|
function ACT_ROUTE:onbeforeRoute( ProcessUnit, Event, From, To )
|
||||||
|
self:F( { "BeforeRoute 1", self.DisplayCount, self.DisplayInterval } )
|
||||||
|
|
||||||
if ProcessUnit:IsAlive() then
|
if ProcessUnit:IsAlive() then
|
||||||
|
self:F( "BeforeRoute 2" )
|
||||||
local HasArrived = self:onfuncHasArrived( ProcessUnit ) -- Polymorphic
|
local HasArrived = self:onfuncHasArrived( ProcessUnit ) -- Polymorphic
|
||||||
if self.DisplayCount >= self.DisplayInterval then
|
if self.DisplayCount >= self.DisplayInterval then
|
||||||
self:T( { HasArrived = HasArrived } )
|
self:T( { HasArrived = HasArrived } )
|
||||||
if not HasArrived then
|
if not HasArrived then
|
||||||
self:__Report( 1 )
|
self:Report()
|
||||||
end
|
end
|
||||||
self.DisplayCount = 1
|
self.DisplayCount = 1
|
||||||
else
|
else
|
||||||
@ -208,6 +210,7 @@ do -- ACT_ROUTE_ZONE
|
|||||||
function ACT_ROUTE_ZONE:Init( FsmRoute )
|
function ACT_ROUTE_ZONE:Init( FsmRoute )
|
||||||
|
|
||||||
self.TargetZone = FsmRoute.TargetZone
|
self.TargetZone = FsmRoute.TargetZone
|
||||||
|
|
||||||
self.DisplayInterval = 30
|
self.DisplayInterval = 30
|
||||||
self.DisplayCount = 30
|
self.DisplayCount = 30
|
||||||
self.DisplayMessage = true
|
self.DisplayMessage = true
|
||||||
|
|||||||
@ -550,6 +550,8 @@ do -- FSM_PROCESS
|
|||||||
return self:GetTask():GetMission():GetCommandCenter()
|
return self:GetTask():GetMission():GetCommandCenter()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- TODO: Need to check and fix that an FSM_PROCESS is only for a UNIT. Not for a GROUP.
|
||||||
|
|
||||||
--- Send a message of the @{Task} to the Group of the Unit.
|
--- Send a message of the @{Task} to the Group of the Unit.
|
||||||
-- @param #FSM_PROCESS self
|
-- @param #FSM_PROCESS self
|
||||||
function FSM_PROCESS:Message( Message )
|
function FSM_PROCESS:Message( Message )
|
||||||
@ -558,6 +560,12 @@ function FSM_PROCESS:Message( Message )
|
|||||||
local CC = self:GetCommandCenter()
|
local CC = self:GetCommandCenter()
|
||||||
local TaskGroup = self.Controllable:GetGroup()
|
local TaskGroup = self.Controllable:GetGroup()
|
||||||
|
|
||||||
|
local PlayerName = self.Controllable:GetPlayerName() -- Only for a unit
|
||||||
|
PlayerName = PlayerName and " (" .. PlayerName .. ")" or "" -- If PlayerName is nil, then keep it nil, otherwise add brackets.
|
||||||
|
local Callsign = self.Controllable:GetCallsign()
|
||||||
|
local Prefix = Callsign and " @ " .. Callsign .. PlayerName or ""
|
||||||
|
|
||||||
|
Message = Prefix .. ": " .. Message
|
||||||
CC:MessageToGroup( Message, TaskGroup )
|
CC:MessageToGroup( Message, TaskGroup )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -64,7 +64,7 @@ function COMMANDCENTER:New( CommandCenterPositionable, CommandCenterName )
|
|||||||
self.CommandCenterName = CommandCenterName or CommandCenterPositionable:GetName()
|
self.CommandCenterName = CommandCenterName or CommandCenterPositionable:GetName()
|
||||||
self.CommandCenterCoalition = CommandCenterPositionable:GetCoalition()
|
self.CommandCenterCoalition = CommandCenterPositionable:GetCoalition()
|
||||||
|
|
||||||
self.Missions = setmetatable( {}, { __mode = "v" } )
|
self.Missions = {}
|
||||||
|
|
||||||
self:EventOnBirth(
|
self:EventOnBirth(
|
||||||
--- @param #COMMANDCENTER self
|
--- @param #COMMANDCENTER self
|
||||||
@ -142,7 +142,7 @@ end
|
|||||||
-- @return #string
|
-- @return #string
|
||||||
function COMMANDCENTER:GetName()
|
function COMMANDCENTER:GetName()
|
||||||
|
|
||||||
return self.HQName
|
return self.CommandCenterName
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Gets the POSITIONABLE of the HQ command center.
|
--- Gets the POSITIONABLE of the HQ command center.
|
||||||
@ -188,7 +188,7 @@ end
|
|||||||
function COMMANDCENTER:SetMenu()
|
function COMMANDCENTER:SetMenu()
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
self.CommandCenterMenu = self.CommandCenterMenu or MENU_COALITION:New( self.CommandCenterCoalition, "HQ" )
|
self.CommandCenterMenu = self.CommandCenterMenu or MENU_COALITION:New( self.CommandCenterCoalition, "Command Center (" .. self:GetName() .. ")" )
|
||||||
|
|
||||||
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
|
||||||
@ -223,9 +223,14 @@ end
|
|||||||
|
|
||||||
--- Send a CC message to a GROUP.
|
--- Send a CC message to a GROUP.
|
||||||
-- @param #COMMANDCENTER self
|
-- @param #COMMANDCENTER self
|
||||||
function COMMANDCENTER:MessageToGroup( Message, TaskGroup )
|
-- @param #string Message
|
||||||
|
-- @param Wrapper.Group#GROUP TaskGroup
|
||||||
|
-- @param #sring Name (optional) The name of the Group used as a prefix for the message to the Group. If not provided, there will be nothing shown.
|
||||||
|
function COMMANDCENTER:MessageToGroup( Message, TaskGroup, Name )
|
||||||
|
|
||||||
self:GetPositionable():MessageToGroup( Message , 20, TaskGroup )
|
local Prefix = Name and "@ Group (" .. Name .. "): " or ''
|
||||||
|
Message = Prefix .. Message
|
||||||
|
self:GetPositionable():MessageToGroup( Message , 20, TaskGroup, self:GetName() )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -382,7 +382,6 @@ do -- DETECTION_DISPATCHER
|
|||||||
if Task then
|
if Task then
|
||||||
if Task:IsStatePlanned() and DetectedArea.Changed == true then
|
if Task:IsStatePlanned() and DetectedArea.Changed == true then
|
||||||
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
||||||
Mission:RemoveTaskMenu( Task )
|
|
||||||
Task = Mission:RemoveTask( Task )
|
Task = Mission:RemoveTask( Task )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -486,7 +485,7 @@ do -- DETECTION_DISPATCHER
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- TODO set menus using the HQ coordinator
|
-- TODO set menus using the HQ coordinator
|
||||||
Mission:SetMenu()
|
Mission:GetCommandCenter():SetMenu()
|
||||||
|
|
||||||
if #AreaMsg > 0 then
|
if #AreaMsg > 0 then
|
||||||
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
|
|||||||
@ -439,7 +439,8 @@ function TASK:MessageToGroups( Message )
|
|||||||
local CC = Mission:GetCommandCenter()
|
local CC = Mission:GetCommandCenter()
|
||||||
|
|
||||||
for TaskGroupName, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
for TaskGroupName, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
CC:MessageToGroup( Message, TaskGroup )
|
local TaskGroup = TaskGroup -- Wrapper.Group#GROUP
|
||||||
|
CC:MessageToGroup( Message, TaskGroup, TaskGroup:GetName() )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -872,7 +873,7 @@ function TASK:onenterAssigned( Event, From, To )
|
|||||||
|
|
||||||
self:E("Task Assigned")
|
self:E("Task Assigned")
|
||||||
|
|
||||||
self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned!" )
|
self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned to your group." )
|
||||||
self:GetMission():__Start()
|
self:GetMission():__Start()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -45,19 +45,19 @@ do -- TASK_A2G
|
|||||||
self.TargetZone = TargetZone
|
self.TargetZone = TargetZone
|
||||||
self.FACUnit = FACUnit
|
self.FACUnit = FACUnit
|
||||||
|
|
||||||
local Fsm = self:GetUnitProcess()
|
local A2GUnitProcess = self:GetUnitProcess()
|
||||||
|
|
||||||
Fsm:AddProcess ( "Planned", "Accept", ACT_ASSIGN_ACCEPT:New( "Attack the Area" ), { Assigned = "Route", Rejected = "Eject" } )
|
A2GUnitProcess:AddProcess ( "Planned", "Accept", ACT_ASSIGN_ACCEPT:New( "Attack the Area" ), { Assigned = "Route", Rejected = "Eject" } )
|
||||||
Fsm:AddProcess ( "Assigned", "Route", ACT_ROUTE_ZONE:New( self.TargetZone ), { Arrived = "Update" } )
|
A2GUnitProcess:AddProcess ( "Assigned", "Route", ACT_ROUTE_ZONE:New( self.TargetZone ), { Arrived = "Update" } )
|
||||||
Fsm:AddTransition( "Rejected", "Eject", "Planned" )
|
A2GUnitProcess:AddTransition( "Rejected", "Eject", "Planned" )
|
||||||
Fsm:AddTransition( "Arrived", "Update", "Updated" )
|
A2GUnitProcess:AddTransition( "Arrived", "Update", "Updated" )
|
||||||
Fsm:AddProcess ( "Updated", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, "Attack" ), { Accounted = "Success" } )
|
A2GUnitProcess:AddProcess ( "Updated", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, "Attack" ), { Accounted = "Success" } )
|
||||||
Fsm:AddProcess ( "Updated", "Smoke", ACT_ASSIST_SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone ) )
|
A2GUnitProcess:AddProcess ( "Updated", "Smoke", ACT_ASSIST_SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone ) )
|
||||||
--Fsm:AddProcess ( "Updated", "JTAC", PROCESS_JTAC:New( self, TaskUnit, self.TargetSetUnit, self.FACUnit ) )
|
--Fsm:AddProcess ( "Updated", "JTAC", PROCESS_JTAC:New( self, TaskUnit, self.TargetSetUnit, self.FACUnit ) )
|
||||||
Fsm:AddTransition( "Accounted", "Success", "Success" )
|
A2GUnitProcess:AddTransition( "Accounted", "Success", "Success" )
|
||||||
Fsm:AddTransition( "Failed", "Fail", "Failed" )
|
A2GUnitProcess:AddTransition( "Failed", "Fail", "Failed" )
|
||||||
|
|
||||||
function Fsm:onenterUpdated( TaskUnit )
|
function A2GUnitProcess:onenterUpdated( TaskUnit )
|
||||||
self:E( { self } )
|
self:E( { self } )
|
||||||
self:Account()
|
self:Account()
|
||||||
self:Smoke()
|
self:Smoke()
|
||||||
|
|||||||
@ -210,6 +210,13 @@ function IDENTIFIABLE:GetDesc()
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Gets the CallSign of the IDENTIFIABLE, which is a blank by default.
|
||||||
|
-- @param #IDENTIFIABLE self
|
||||||
|
-- @return #string The CallSign of the IDENTIFIABLE.
|
||||||
|
function IDENTIFIABLE:GetCallsign()
|
||||||
|
return ''
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -280,12 +280,14 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
-- @return Core.Message#MESSAGE
|
-- @return Core.Message#MESSAGE
|
||||||
function POSITIONABLE:GetMessage( Message, Duration )
|
function POSITIONABLE:GetMessage( Message, Duration, Name )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")" )
|
Name = Name or self:GetTypeName()
|
||||||
|
return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. Name .. ")" )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -296,12 +298,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToAll( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToAll( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToAll()
|
self:GetMessage( Message, Duration, Name ):ToAll()
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -312,12 +315,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToCoalition( Message, Duration, MessageCoalition )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToCoalition( Message, Duration, MessageCoalition, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToCoalition( MessageCoalition )
|
self:GetMessage( Message, Duration, Name ):ToCoalition( MessageCoalition )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -329,12 +333,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToRed( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToRed( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToRed()
|
self:GetMessage( Message, Duration, Name ):ToRed()
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -345,12 +350,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToBlue( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToBlue( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToBlue()
|
self:GetMessage( Message, Duration, Name ):ToBlue()
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -362,12 +368,13 @@ end
|
|||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
-- @param Wrapper.Client#CLIENT Client The client object receiving the message.
|
-- @param Wrapper.Client#CLIENT Client The client object receiving the message.
|
||||||
function POSITIONABLE:MessageToClient( Message, Duration, Client )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToClient( Message, Duration, Client, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToClient( Client )
|
self:GetMessage( Message, Duration, Name ):ToClient( Client )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -379,13 +386,14 @@ end
|
|||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
-- @param Wrapper.Group#GROUP MessageGroup The GROUP object receiving the message.
|
-- @param Wrapper.Group#GROUP MessageGroup The GROUP object receiving the message.
|
||||||
function POSITIONABLE:MessageToGroup( Message, Duration, MessageGroup )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToGroup( Message, Duration, MessageGroup, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
if DCSObject:isExist() then
|
if DCSObject:isExist() then
|
||||||
self:GetMessage( Message, Duration ):ToGroup( MessageGroup )
|
self:GetMessage( Message, Duration, Name ):ToGroup( MessageGroup )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -397,12 +405,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:Message( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:Message( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToGroup( self )
|
self:GetMessage( Message, Duration, Name ):ToGroup( self )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
|
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
|
||||||
env.info( 'Moose Generation Timestamp: 20161218_0608' )
|
env.info( 'Moose Generation Timestamp: 20161218_1138' )
|
||||||
local base = _G
|
local base = _G
|
||||||
|
|
||||||
Include = {}
|
Include = {}
|
||||||
@ -11160,6 +11160,8 @@ do -- FSM_PROCESS
|
|||||||
return self:GetTask():GetMission():GetCommandCenter()
|
return self:GetTask():GetMission():GetCommandCenter()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- TODO: Need to check and fix that an FSM_PROCESS is only for a UNIT. Not for a GROUP.
|
||||||
|
|
||||||
--- Send a message of the @{Task} to the Group of the Unit.
|
--- Send a message of the @{Task} to the Group of the Unit.
|
||||||
-- @param #FSM_PROCESS self
|
-- @param #FSM_PROCESS self
|
||||||
function FSM_PROCESS:Message( Message )
|
function FSM_PROCESS:Message( Message )
|
||||||
@ -11168,6 +11170,12 @@ function FSM_PROCESS:Message( Message )
|
|||||||
local CC = self:GetCommandCenter()
|
local CC = self:GetCommandCenter()
|
||||||
local TaskGroup = self.Controllable:GetGroup()
|
local TaskGroup = self.Controllable:GetGroup()
|
||||||
|
|
||||||
|
local PlayerName = self.Controllable:GetPlayerName() -- Only for a unit
|
||||||
|
PlayerName = PlayerName and " (" .. PlayerName .. ")" or "" -- If PlayerName is nil, then keep it nil, otherwise add brackets.
|
||||||
|
local Callsign = self.Controllable:GetCallsign()
|
||||||
|
local Prefix = Callsign and " @ " .. Callsign .. PlayerName or ""
|
||||||
|
|
||||||
|
Message = Prefix .. ": " .. Message
|
||||||
CC:MessageToGroup( Message, TaskGroup )
|
CC:MessageToGroup( Message, TaskGroup )
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -11638,6 +11646,13 @@ function IDENTIFIABLE:GetDesc()
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Gets the CallSign of the IDENTIFIABLE, which is a blank by default.
|
||||||
|
-- @param #IDENTIFIABLE self
|
||||||
|
-- @return #string The CallSign of the IDENTIFIABLE.
|
||||||
|
function IDENTIFIABLE:GetCallsign()
|
||||||
|
return ''
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -11928,12 +11943,14 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
-- @return Core.Message#MESSAGE
|
-- @return Core.Message#MESSAGE
|
||||||
function POSITIONABLE:GetMessage( Message, Duration )
|
function POSITIONABLE:GetMessage( Message, Duration, Name )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")" )
|
Name = Name or self:GetTypeName()
|
||||||
|
return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. Name .. ")" )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -11944,12 +11961,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToAll( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToAll( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToAll()
|
self:GetMessage( Message, Duration, Name ):ToAll()
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -11960,12 +11978,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToCoalition( Message, Duration, MessageCoalition )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToCoalition( Message, Duration, MessageCoalition, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToCoalition( MessageCoalition )
|
self:GetMessage( Message, Duration, Name ):ToCoalition( MessageCoalition )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -11977,12 +11996,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToRed( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToRed( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToRed()
|
self:GetMessage( Message, Duration, Name ):ToRed()
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -11993,12 +12013,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToBlue( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToBlue( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToBlue()
|
self:GetMessage( Message, Duration, Name ):ToBlue()
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -12010,12 +12031,13 @@ end
|
|||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
-- @param Wrapper.Client#CLIENT Client The client object receiving the message.
|
-- @param Wrapper.Client#CLIENT Client The client object receiving the message.
|
||||||
function POSITIONABLE:MessageToClient( Message, Duration, Client )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToClient( Message, Duration, Client, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToClient( Client )
|
self:GetMessage( Message, Duration, Name ):ToClient( Client )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -12027,13 +12049,14 @@ end
|
|||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
-- @param Wrapper.Group#GROUP MessageGroup The GROUP object receiving the message.
|
-- @param Wrapper.Group#GROUP MessageGroup The GROUP object receiving the message.
|
||||||
function POSITIONABLE:MessageToGroup( Message, Duration, MessageGroup )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToGroup( Message, Duration, MessageGroup, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
if DCSObject:isExist() then
|
if DCSObject:isExist() then
|
||||||
self:GetMessage( Message, Duration ):ToGroup( MessageGroup )
|
self:GetMessage( Message, Duration, Name ):ToGroup( MessageGroup )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -12045,12 +12068,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:Message( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:Message( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToGroup( self )
|
self:GetMessage( Message, Duration, Name ):ToGroup( self )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -25858,13 +25882,15 @@ do -- ACT_ROUTE
|
|||||||
-- @param #string From
|
-- @param #string From
|
||||||
-- @param #string To
|
-- @param #string To
|
||||||
function ACT_ROUTE:onbeforeRoute( ProcessUnit, Event, From, To )
|
function ACT_ROUTE:onbeforeRoute( ProcessUnit, Event, From, To )
|
||||||
|
self:F( { "BeforeRoute 1", self.DisplayCount, self.DisplayInterval } )
|
||||||
|
|
||||||
if ProcessUnit:IsAlive() then
|
if ProcessUnit:IsAlive() then
|
||||||
|
self:F( "BeforeRoute 2" )
|
||||||
local HasArrived = self:onfuncHasArrived( ProcessUnit ) -- Polymorphic
|
local HasArrived = self:onfuncHasArrived( ProcessUnit ) -- Polymorphic
|
||||||
if self.DisplayCount >= self.DisplayInterval then
|
if self.DisplayCount >= self.DisplayInterval then
|
||||||
self:T( { HasArrived = HasArrived } )
|
self:T( { HasArrived = HasArrived } )
|
||||||
if not HasArrived then
|
if not HasArrived then
|
||||||
self:__Report( 1 )
|
self:Report()
|
||||||
end
|
end
|
||||||
self.DisplayCount = 1
|
self.DisplayCount = 1
|
||||||
else
|
else
|
||||||
@ -25922,6 +25948,7 @@ do -- ACT_ROUTE_ZONE
|
|||||||
function ACT_ROUTE_ZONE:Init( FsmRoute )
|
function ACT_ROUTE_ZONE:Init( FsmRoute )
|
||||||
|
|
||||||
self.TargetZone = FsmRoute.TargetZone
|
self.TargetZone = FsmRoute.TargetZone
|
||||||
|
|
||||||
self.DisplayInterval = 30
|
self.DisplayInterval = 30
|
||||||
self.DisplayCount = 30
|
self.DisplayCount = 30
|
||||||
self.DisplayMessage = true
|
self.DisplayMessage = true
|
||||||
@ -26498,7 +26525,7 @@ function COMMANDCENTER:New( CommandCenterPositionable, CommandCenterName )
|
|||||||
self.CommandCenterName = CommandCenterName or CommandCenterPositionable:GetName()
|
self.CommandCenterName = CommandCenterName or CommandCenterPositionable:GetName()
|
||||||
self.CommandCenterCoalition = CommandCenterPositionable:GetCoalition()
|
self.CommandCenterCoalition = CommandCenterPositionable:GetCoalition()
|
||||||
|
|
||||||
self.Missions = setmetatable( {}, { __mode = "v" } )
|
self.Missions = {}
|
||||||
|
|
||||||
self:EventOnBirth(
|
self:EventOnBirth(
|
||||||
--- @param #COMMANDCENTER self
|
--- @param #COMMANDCENTER self
|
||||||
@ -26576,7 +26603,7 @@ end
|
|||||||
-- @return #string
|
-- @return #string
|
||||||
function COMMANDCENTER:GetName()
|
function COMMANDCENTER:GetName()
|
||||||
|
|
||||||
return self.HQName
|
return self.CommandCenterName
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Gets the POSITIONABLE of the HQ command center.
|
--- Gets the POSITIONABLE of the HQ command center.
|
||||||
@ -26622,7 +26649,7 @@ end
|
|||||||
function COMMANDCENTER:SetMenu()
|
function COMMANDCENTER:SetMenu()
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
self.CommandCenterMenu = self.CommandCenterMenu or MENU_COALITION:New( self.CommandCenterCoalition, "HQ" )
|
self.CommandCenterMenu = self.CommandCenterMenu or MENU_COALITION:New( self.CommandCenterCoalition, "Command Center (" .. self:GetName() .. ")" )
|
||||||
|
|
||||||
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
|
||||||
@ -26657,9 +26684,14 @@ end
|
|||||||
|
|
||||||
--- Send a CC message to a GROUP.
|
--- Send a CC message to a GROUP.
|
||||||
-- @param #COMMANDCENTER self
|
-- @param #COMMANDCENTER self
|
||||||
function COMMANDCENTER:MessageToGroup( Message, TaskGroup )
|
-- @param #string Message
|
||||||
|
-- @param Wrapper.Group#GROUP TaskGroup
|
||||||
|
-- @param #sring Name (optional) The name of the Group used as a prefix for the message to the Group. If not provided, there will be nothing shown.
|
||||||
|
function COMMANDCENTER:MessageToGroup( Message, TaskGroup, Name )
|
||||||
|
|
||||||
self:GetPositionable():MessageToGroup( Message , 20, TaskGroup )
|
local Prefix = Name and "@ Group (" .. Name .. "): " or ''
|
||||||
|
Message = Prefix .. Message
|
||||||
|
self:GetPositionable():MessageToGroup( Message , 20, TaskGroup, self:GetName() )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -28100,7 +28132,8 @@ function TASK:MessageToGroups( Message )
|
|||||||
local CC = Mission:GetCommandCenter()
|
local CC = Mission:GetCommandCenter()
|
||||||
|
|
||||||
for TaskGroupName, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
for TaskGroupName, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
CC:MessageToGroup( Message, TaskGroup )
|
local TaskGroup = TaskGroup -- Wrapper.Group#GROUP
|
||||||
|
CC:MessageToGroup( Message, TaskGroup, TaskGroup:GetName() )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -28533,7 +28566,7 @@ function TASK:onenterAssigned( Event, From, To )
|
|||||||
|
|
||||||
self:E("Task Assigned")
|
self:E("Task Assigned")
|
||||||
|
|
||||||
self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned!" )
|
self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned to your group." )
|
||||||
self:GetMission():__Start()
|
self:GetMission():__Start()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -29047,7 +29080,6 @@ do -- DETECTION_DISPATCHER
|
|||||||
if Task then
|
if Task then
|
||||||
if Task:IsStatePlanned() and DetectedArea.Changed == true then
|
if Task:IsStatePlanned() and DetectedArea.Changed == true then
|
||||||
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
||||||
Mission:RemoveTaskMenu( Task )
|
|
||||||
Task = Mission:RemoveTask( Task )
|
Task = Mission:RemoveTask( Task )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -29151,7 +29183,7 @@ do -- DETECTION_DISPATCHER
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- TODO set menus using the HQ coordinator
|
-- TODO set menus using the HQ coordinator
|
||||||
Mission:SetMenu()
|
Mission:GetCommandCenter():SetMenu()
|
||||||
|
|
||||||
if #AreaMsg > 0 then
|
if #AreaMsg > 0 then
|
||||||
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
@ -29296,19 +29328,19 @@ do -- TASK_A2G
|
|||||||
self.TargetZone = TargetZone
|
self.TargetZone = TargetZone
|
||||||
self.FACUnit = FACUnit
|
self.FACUnit = FACUnit
|
||||||
|
|
||||||
local Fsm = self:GetUnitProcess()
|
local A2GUnitProcess = self:GetUnitProcess()
|
||||||
|
|
||||||
Fsm:AddProcess ( "Planned", "Accept", ACT_ASSIGN_ACCEPT:New( "Attack the Area" ), { Assigned = "Route", Rejected = "Eject" } )
|
A2GUnitProcess:AddProcess ( "Planned", "Accept", ACT_ASSIGN_ACCEPT:New( "Attack the Area" ), { Assigned = "Route", Rejected = "Eject" } )
|
||||||
Fsm:AddProcess ( "Assigned", "Route", ACT_ROUTE_ZONE:New( self.TargetZone ), { Arrived = "Update" } )
|
A2GUnitProcess:AddProcess ( "Assigned", "Route", ACT_ROUTE_ZONE:New( self.TargetZone ), { Arrived = "Update" } )
|
||||||
Fsm:AddTransition( "Rejected", "Eject", "Planned" )
|
A2GUnitProcess:AddTransition( "Rejected", "Eject", "Planned" )
|
||||||
Fsm:AddTransition( "Arrived", "Update", "Updated" )
|
A2GUnitProcess:AddTransition( "Arrived", "Update", "Updated" )
|
||||||
Fsm:AddProcess ( "Updated", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, "Attack" ), { Accounted = "Success" } )
|
A2GUnitProcess:AddProcess ( "Updated", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, "Attack" ), { Accounted = "Success" } )
|
||||||
Fsm:AddProcess ( "Updated", "Smoke", ACT_ASSIST_SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone ) )
|
A2GUnitProcess:AddProcess ( "Updated", "Smoke", ACT_ASSIST_SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone ) )
|
||||||
--Fsm:AddProcess ( "Updated", "JTAC", PROCESS_JTAC:New( self, TaskUnit, self.TargetSetUnit, self.FACUnit ) )
|
--Fsm:AddProcess ( "Updated", "JTAC", PROCESS_JTAC:New( self, TaskUnit, self.TargetSetUnit, self.FACUnit ) )
|
||||||
Fsm:AddTransition( "Accounted", "Success", "Success" )
|
A2GUnitProcess:AddTransition( "Accounted", "Success", "Success" )
|
||||||
Fsm:AddTransition( "Failed", "Fail", "Failed" )
|
A2GUnitProcess:AddTransition( "Failed", "Fail", "Failed" )
|
||||||
|
|
||||||
function Fsm:onenterUpdated( TaskUnit )
|
function A2GUnitProcess:onenterUpdated( TaskUnit )
|
||||||
self:E( { self } )
|
self:E( { self } )
|
||||||
self:Account()
|
self:Account()
|
||||||
self:Smoke()
|
self:Smoke()
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
|
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
|
||||||
env.info( 'Moose Generation Timestamp: 20161218_0608' )
|
env.info( 'Moose Generation Timestamp: 20161218_1138' )
|
||||||
local base = _G
|
local base = _G
|
||||||
|
|
||||||
Include = {}
|
Include = {}
|
||||||
@ -11160,6 +11160,8 @@ do -- FSM_PROCESS
|
|||||||
return self:GetTask():GetMission():GetCommandCenter()
|
return self:GetTask():GetMission():GetCommandCenter()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- TODO: Need to check and fix that an FSM_PROCESS is only for a UNIT. Not for a GROUP.
|
||||||
|
|
||||||
--- Send a message of the @{Task} to the Group of the Unit.
|
--- Send a message of the @{Task} to the Group of the Unit.
|
||||||
-- @param #FSM_PROCESS self
|
-- @param #FSM_PROCESS self
|
||||||
function FSM_PROCESS:Message( Message )
|
function FSM_PROCESS:Message( Message )
|
||||||
@ -11168,6 +11170,12 @@ function FSM_PROCESS:Message( Message )
|
|||||||
local CC = self:GetCommandCenter()
|
local CC = self:GetCommandCenter()
|
||||||
local TaskGroup = self.Controllable:GetGroup()
|
local TaskGroup = self.Controllable:GetGroup()
|
||||||
|
|
||||||
|
local PlayerName = self.Controllable:GetPlayerName() -- Only for a unit
|
||||||
|
PlayerName = PlayerName and " (" .. PlayerName .. ")" or "" -- If PlayerName is nil, then keep it nil, otherwise add brackets.
|
||||||
|
local Callsign = self.Controllable:GetCallsign()
|
||||||
|
local Prefix = Callsign and " @ " .. Callsign .. PlayerName or ""
|
||||||
|
|
||||||
|
Message = Prefix .. ": " .. Message
|
||||||
CC:MessageToGroup( Message, TaskGroup )
|
CC:MessageToGroup( Message, TaskGroup )
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -11638,6 +11646,13 @@ function IDENTIFIABLE:GetDesc()
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Gets the CallSign of the IDENTIFIABLE, which is a blank by default.
|
||||||
|
-- @param #IDENTIFIABLE self
|
||||||
|
-- @return #string The CallSign of the IDENTIFIABLE.
|
||||||
|
function IDENTIFIABLE:GetCallsign()
|
||||||
|
return ''
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -11928,12 +11943,14 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
-- @return Core.Message#MESSAGE
|
-- @return Core.Message#MESSAGE
|
||||||
function POSITIONABLE:GetMessage( Message, Duration )
|
function POSITIONABLE:GetMessage( Message, Duration, Name )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")" )
|
Name = Name or self:GetTypeName()
|
||||||
|
return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. Name .. ")" )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -11944,12 +11961,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToAll( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToAll( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToAll()
|
self:GetMessage( Message, Duration, Name ):ToAll()
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -11960,12 +11978,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToCoalition( Message, Duration, MessageCoalition )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToCoalition( Message, Duration, MessageCoalition, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToCoalition( MessageCoalition )
|
self:GetMessage( Message, Duration, Name ):ToCoalition( MessageCoalition )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -11977,12 +11996,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTYpes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToRed( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToRed( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToRed()
|
self:GetMessage( Message, Duration, Name ):ToRed()
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -11993,12 +12013,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:MessageToBlue( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToBlue( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToBlue()
|
self:GetMessage( Message, Duration, Name ):ToBlue()
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -12010,12 +12031,13 @@ end
|
|||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
-- @param Wrapper.Client#CLIENT Client The client object receiving the message.
|
-- @param Wrapper.Client#CLIENT Client The client object receiving the message.
|
||||||
function POSITIONABLE:MessageToClient( Message, Duration, Client )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToClient( Message, Duration, Client, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToClient( Client )
|
self:GetMessage( Message, Duration, Name ):ToClient( Client )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -12027,13 +12049,14 @@ end
|
|||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
-- @param Wrapper.Group#GROUP MessageGroup The GROUP object receiving the message.
|
-- @param Wrapper.Group#GROUP MessageGroup The GROUP object receiving the message.
|
||||||
function POSITIONABLE:MessageToGroup( Message, Duration, MessageGroup )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:MessageToGroup( Message, Duration, MessageGroup, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
if DCSObject:isExist() then
|
if DCSObject:isExist() then
|
||||||
self:GetMessage( Message, Duration ):ToGroup( MessageGroup )
|
self:GetMessage( Message, Duration, Name ):ToGroup( MessageGroup )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -12045,12 +12068,13 @@ end
|
|||||||
-- @param #POSITIONABLE self
|
-- @param #POSITIONABLE self
|
||||||
-- @param #string Message The message text
|
-- @param #string Message The message text
|
||||||
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
-- @param Dcs.DCSTypes#Duration Duration The duration of the message.
|
||||||
function POSITIONABLE:Message( Message, Duration )
|
-- @param #string Name (optional) The Name of the sender. If not provided, the Name is the type of the Positionable.
|
||||||
|
function POSITIONABLE:Message( Message, Duration, Name )
|
||||||
self:F2( { Message, Duration } )
|
self:F2( { Message, Duration } )
|
||||||
|
|
||||||
local DCSObject = self:GetDCSObject()
|
local DCSObject = self:GetDCSObject()
|
||||||
if DCSObject then
|
if DCSObject then
|
||||||
self:GetMessage( Message, Duration ):ToGroup( self )
|
self:GetMessage( Message, Duration, Name ):ToGroup( self )
|
||||||
end
|
end
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -25858,13 +25882,15 @@ do -- ACT_ROUTE
|
|||||||
-- @param #string From
|
-- @param #string From
|
||||||
-- @param #string To
|
-- @param #string To
|
||||||
function ACT_ROUTE:onbeforeRoute( ProcessUnit, Event, From, To )
|
function ACT_ROUTE:onbeforeRoute( ProcessUnit, Event, From, To )
|
||||||
|
self:F( { "BeforeRoute 1", self.DisplayCount, self.DisplayInterval } )
|
||||||
|
|
||||||
if ProcessUnit:IsAlive() then
|
if ProcessUnit:IsAlive() then
|
||||||
|
self:F( "BeforeRoute 2" )
|
||||||
local HasArrived = self:onfuncHasArrived( ProcessUnit ) -- Polymorphic
|
local HasArrived = self:onfuncHasArrived( ProcessUnit ) -- Polymorphic
|
||||||
if self.DisplayCount >= self.DisplayInterval then
|
if self.DisplayCount >= self.DisplayInterval then
|
||||||
self:T( { HasArrived = HasArrived } )
|
self:T( { HasArrived = HasArrived } )
|
||||||
if not HasArrived then
|
if not HasArrived then
|
||||||
self:__Report( 1 )
|
self:Report()
|
||||||
end
|
end
|
||||||
self.DisplayCount = 1
|
self.DisplayCount = 1
|
||||||
else
|
else
|
||||||
@ -25922,6 +25948,7 @@ do -- ACT_ROUTE_ZONE
|
|||||||
function ACT_ROUTE_ZONE:Init( FsmRoute )
|
function ACT_ROUTE_ZONE:Init( FsmRoute )
|
||||||
|
|
||||||
self.TargetZone = FsmRoute.TargetZone
|
self.TargetZone = FsmRoute.TargetZone
|
||||||
|
|
||||||
self.DisplayInterval = 30
|
self.DisplayInterval = 30
|
||||||
self.DisplayCount = 30
|
self.DisplayCount = 30
|
||||||
self.DisplayMessage = true
|
self.DisplayMessage = true
|
||||||
@ -26498,7 +26525,7 @@ function COMMANDCENTER:New( CommandCenterPositionable, CommandCenterName )
|
|||||||
self.CommandCenterName = CommandCenterName or CommandCenterPositionable:GetName()
|
self.CommandCenterName = CommandCenterName or CommandCenterPositionable:GetName()
|
||||||
self.CommandCenterCoalition = CommandCenterPositionable:GetCoalition()
|
self.CommandCenterCoalition = CommandCenterPositionable:GetCoalition()
|
||||||
|
|
||||||
self.Missions = setmetatable( {}, { __mode = "v" } )
|
self.Missions = {}
|
||||||
|
|
||||||
self:EventOnBirth(
|
self:EventOnBirth(
|
||||||
--- @param #COMMANDCENTER self
|
--- @param #COMMANDCENTER self
|
||||||
@ -26576,7 +26603,7 @@ end
|
|||||||
-- @return #string
|
-- @return #string
|
||||||
function COMMANDCENTER:GetName()
|
function COMMANDCENTER:GetName()
|
||||||
|
|
||||||
return self.HQName
|
return self.CommandCenterName
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Gets the POSITIONABLE of the HQ command center.
|
--- Gets the POSITIONABLE of the HQ command center.
|
||||||
@ -26622,7 +26649,7 @@ end
|
|||||||
function COMMANDCENTER:SetMenu()
|
function COMMANDCENTER:SetMenu()
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
self.CommandCenterMenu = self.CommandCenterMenu or MENU_COALITION:New( self.CommandCenterCoalition, "HQ" )
|
self.CommandCenterMenu = self.CommandCenterMenu or MENU_COALITION:New( self.CommandCenterCoalition, "Command Center (" .. self:GetName() .. ")" )
|
||||||
|
|
||||||
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
|
||||||
@ -26657,9 +26684,14 @@ end
|
|||||||
|
|
||||||
--- Send a CC message to a GROUP.
|
--- Send a CC message to a GROUP.
|
||||||
-- @param #COMMANDCENTER self
|
-- @param #COMMANDCENTER self
|
||||||
function COMMANDCENTER:MessageToGroup( Message, TaskGroup )
|
-- @param #string Message
|
||||||
|
-- @param Wrapper.Group#GROUP TaskGroup
|
||||||
|
-- @param #sring Name (optional) The name of the Group used as a prefix for the message to the Group. If not provided, there will be nothing shown.
|
||||||
|
function COMMANDCENTER:MessageToGroup( Message, TaskGroup, Name )
|
||||||
|
|
||||||
self:GetPositionable():MessageToGroup( Message , 20, TaskGroup )
|
local Prefix = Name and "@ Group (" .. Name .. "): " or ''
|
||||||
|
Message = Prefix .. Message
|
||||||
|
self:GetPositionable():MessageToGroup( Message , 20, TaskGroup, self:GetName() )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -28100,7 +28132,8 @@ function TASK:MessageToGroups( Message )
|
|||||||
local CC = Mission:GetCommandCenter()
|
local CC = Mission:GetCommandCenter()
|
||||||
|
|
||||||
for TaskGroupName, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
for TaskGroupName, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
CC:MessageToGroup( Message, TaskGroup )
|
local TaskGroup = TaskGroup -- Wrapper.Group#GROUP
|
||||||
|
CC:MessageToGroup( Message, TaskGroup, TaskGroup:GetName() )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -28533,7 +28566,7 @@ function TASK:onenterAssigned( Event, From, To )
|
|||||||
|
|
||||||
self:E("Task Assigned")
|
self:E("Task Assigned")
|
||||||
|
|
||||||
self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned!" )
|
self:MessageToGroups( "Task " .. self:GetName() .. " has been assigned to your group." )
|
||||||
self:GetMission():__Start()
|
self:GetMission():__Start()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -29047,7 +29080,6 @@ do -- DETECTION_DISPATCHER
|
|||||||
if Task then
|
if Task then
|
||||||
if Task:IsStatePlanned() and DetectedArea.Changed == true then
|
if Task:IsStatePlanned() and DetectedArea.Changed == true then
|
||||||
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
||||||
Mission:RemoveTaskMenu( Task )
|
|
||||||
Task = Mission:RemoveTask( Task )
|
Task = Mission:RemoveTask( Task )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -29151,7 +29183,7 @@ do -- DETECTION_DISPATCHER
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- TODO set menus using the HQ coordinator
|
-- TODO set menus using the HQ coordinator
|
||||||
Mission:SetMenu()
|
Mission:GetCommandCenter():SetMenu()
|
||||||
|
|
||||||
if #AreaMsg > 0 then
|
if #AreaMsg > 0 then
|
||||||
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
@ -29296,19 +29328,19 @@ do -- TASK_A2G
|
|||||||
self.TargetZone = TargetZone
|
self.TargetZone = TargetZone
|
||||||
self.FACUnit = FACUnit
|
self.FACUnit = FACUnit
|
||||||
|
|
||||||
local Fsm = self:GetUnitProcess()
|
local A2GUnitProcess = self:GetUnitProcess()
|
||||||
|
|
||||||
Fsm:AddProcess ( "Planned", "Accept", ACT_ASSIGN_ACCEPT:New( "Attack the Area" ), { Assigned = "Route", Rejected = "Eject" } )
|
A2GUnitProcess:AddProcess ( "Planned", "Accept", ACT_ASSIGN_ACCEPT:New( "Attack the Area" ), { Assigned = "Route", Rejected = "Eject" } )
|
||||||
Fsm:AddProcess ( "Assigned", "Route", ACT_ROUTE_ZONE:New( self.TargetZone ), { Arrived = "Update" } )
|
A2GUnitProcess:AddProcess ( "Assigned", "Route", ACT_ROUTE_ZONE:New( self.TargetZone ), { Arrived = "Update" } )
|
||||||
Fsm:AddTransition( "Rejected", "Eject", "Planned" )
|
A2GUnitProcess:AddTransition( "Rejected", "Eject", "Planned" )
|
||||||
Fsm:AddTransition( "Arrived", "Update", "Updated" )
|
A2GUnitProcess:AddTransition( "Arrived", "Update", "Updated" )
|
||||||
Fsm:AddProcess ( "Updated", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, "Attack" ), { Accounted = "Success" } )
|
A2GUnitProcess:AddProcess ( "Updated", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, "Attack" ), { Accounted = "Success" } )
|
||||||
Fsm:AddProcess ( "Updated", "Smoke", ACT_ASSIST_SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone ) )
|
A2GUnitProcess:AddProcess ( "Updated", "Smoke", ACT_ASSIST_SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone ) )
|
||||||
--Fsm:AddProcess ( "Updated", "JTAC", PROCESS_JTAC:New( self, TaskUnit, self.TargetSetUnit, self.FACUnit ) )
|
--Fsm:AddProcess ( "Updated", "JTAC", PROCESS_JTAC:New( self, TaskUnit, self.TargetSetUnit, self.FACUnit ) )
|
||||||
Fsm:AddTransition( "Accounted", "Success", "Success" )
|
A2GUnitProcess:AddTransition( "Accounted", "Success", "Success" )
|
||||||
Fsm:AddTransition( "Failed", "Fail", "Failed" )
|
A2GUnitProcess:AddTransition( "Failed", "Fail", "Failed" )
|
||||||
|
|
||||||
function Fsm:onenterUpdated( TaskUnit )
|
function A2GUnitProcess:onenterUpdated( TaskUnit )
|
||||||
self:E( { self } )
|
self:E( { self } )
|
||||||
self:Account()
|
self:Account()
|
||||||
self:Smoke()
|
self:Smoke()
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
local HQ = GROUP:FindByName( "HQ", "Bravo HQ" )
|
local HQ = GROUP:FindByName( "HQ", "Bravo HQ" )
|
||||||
|
|
||||||
local CommandCenter = COMMANDCENTER:New( HQ )
|
local CommandCenter = COMMANDCENTER:New( HQ, "Lima" )
|
||||||
|
|
||||||
local Scoring = SCORING:New( "Detect Demo" )
|
local Scoring = SCORING:New( "Detect Demo" )
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user