This commit is contained in:
FlightControl 2016-07-05 06:24:35 +02:00
parent 376b0d08a5
commit 06b2ba007e
7 changed files with 83 additions and 51 deletions

View File

@ -819,7 +819,7 @@ end
-- @param #string Message The message text -- @param #string Message The message text
-- @param DCSTypes#Duration Duration The duration of the message. -- @param DCSTypes#Duration Duration The duration of the message.
-- @return Message#MESSAGE -- @return Message#MESSAGE
function GROUP:Message( Message, Duration ) function GROUP:GetMessage( Message, Duration )
self:F2( { Message, Duration } ) self:F2( { Message, Duration } )
local DCSGroup = self:GetDCSObject() local DCSGroup = self:GetDCSObject()
@ -840,7 +840,7 @@ function GROUP:MessageToAll( Message, Duration )
local DCSGroup = self:GetDCSObject() local DCSGroup = self:GetDCSObject()
if DCSGroup then if DCSGroup then
self:Message( Message, Duration ):ToAll() self:GetMessage( Message, Duration ):ToAll()
end end
return nil return nil
@ -856,7 +856,7 @@ function GROUP:MessageToRed( Message, Duration )
local DCSGroup = self:GetDCSObject() local DCSGroup = self:GetDCSObject()
if DCSGroup then if DCSGroup then
self:Message( Message, Duration ):ToRed() self:GetMessage( Message, Duration ):ToRed()
end end
return nil return nil
@ -872,7 +872,7 @@ function GROUP:MessageToBlue( Message, Duration )
local DCSGroup = self:GetDCSObject() local DCSGroup = self:GetDCSObject()
if DCSGroup then if DCSGroup then
self:Message( Message, Duration ):ToBlue() self:GetMessage( Message, Duration ):ToBlue()
end end
return nil return nil
@ -889,7 +889,23 @@ function GROUP:MessageToClient( Message, Duration, Client )
local DCSGroup = self:GetDCSObject() local DCSGroup = self:GetDCSObject()
if DCSGroup then if DCSGroup then
self:Message( Message, Duration ):ToClient( Client ) self:GetMessage( Message, Duration ):ToClient( Client )
end
return nil
end
--- Send a message to the players in the @{Group}.
-- The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.
-- @param #GROUP self
-- @param #string Message The message text
-- @param DCSTypes#Duration Duration The duration of the message.
function GROUP:Message( Message, Duration )
self:F2( { Message, Duration } )
local DCSGroup = self:GetDCSObject()
if DCSGroup then
self:GetMessage( Message, Duration ):ToGroup( self )
end end
return nil return nil

View File

@ -253,11 +253,11 @@ MENU_COALITION = {
--- Creates a new coalition menu item --- Creates a new coalition menu item
-- @param #MENU_COALITION self -- @param #MENU_COALITION self
-- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu. -- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu. -- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu. -- @param #table ParentMenu The parent menu.
-- @return #MENU_COALITION self -- @return #MENU_COALITION self
function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu ) function MENU_COALITION:New( Coalition, MenuText, ParentMenu )
-- Arrange meta tables -- Arrange meta tables
local MenuParentPath = {} local MenuParentPath = {}
@ -266,9 +266,9 @@ function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu )
end end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) ) local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self:F( { MenuCoalition, MenuText, ParentMenu } ) self:F( { Coalition, MenuText, ParentMenu } )
self.MenuCoalition = MenuCoalition self.Coalition = Coalition
self.MenuParentPath = MenuParentPath self.MenuParentPath = MenuParentPath
self.MenuText = MenuText self.MenuText = MenuText
self.ParentMenu = ParentMenu self.ParentMenu = ParentMenu
@ -277,7 +277,7 @@ function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu )
self:T( { MenuParentPath, MenuText } ) self:T( { MenuParentPath, MenuText } )
self.MenuPath = missionCommands.addSubMenuForCoalition( self.MenuCoalition, MenuText, MenuParentPath ) self.MenuPath = missionCommands.addSubMenuForCoalition( self.Coalition, MenuText, MenuParentPath )
self:T( { self.MenuPath } ) self:T( { self.MenuPath } )

View File

@ -102,6 +102,21 @@ function MESSAGE:ToClient( Client )
return self return self
end end
--- Sends a MESSAGE to a Group.
-- @param #MESSAGE self
-- @param Group#GROUP Group is the Group.
-- @return #MESSAGE
function MESSAGE:ToGroup( Group )
self:F( Group.GroupName )
if Group then
self:T( self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$","") .. " / " .. self.MessageDuration )
trigger.action.outTextForGroup( Group:GetID(), self.MessageCategory .. self.MessageText:gsub("\n$",""):gsub("\n$",""), self.MessageDuration )
end
return self
end
--- Sends a MESSAGE to the Blue coalition. --- Sends a MESSAGE to the Blue coalition.
-- @param #MESSAGE self -- @param #MESSAGE self
-- @return #MESSAGE -- @return #MESSAGE

View File

@ -3,7 +3,7 @@
--- The TASK2 class --- The TASK2 class
-- @type TASK2 -- @type TASK2
-- @field Scheduler#SCHEDULER TaskScheduler -- @field Scheduler#SCHEDULER TaskScheduler
-- @field Client#CLIENT Client -- @field Unit#UNIT TaskUnit
-- @field Mission#MISSION Mission -- @field Mission#MISSION Mission
-- @field StateMachine#STATEMACHINE_TASK Fsm -- @field StateMachine#STATEMACHINE_TASK Fsm
-- @extends Base#BASE -- @extends Base#BASE
@ -16,12 +16,13 @@ TASK2 = {
--- Instantiates a new TASK Base. Should never be used. Interface Class. --- Instantiates a new TASK Base. Should never be used. Interface Class.
-- @param #TASK2 self -- @param #TASK2 self
-- @param Unit#UNIT TaskUnit
-- @return #TASK2 self -- @return #TASK2 self
function TASK2:New( Mission, Client ) function TASK2:New( Mission, TaskUnit )
local self = BASE:Inherit( self, BASE:New() ) local self = BASE:Inherit( self, BASE:New() )
self:F() self:F()
self.Client = Client self.TaskUnit = TaskUnit
self.Mission = Mission self.Mission = Mission
return self return self
@ -31,7 +32,7 @@ end
function TASK2:NextEvent( NextEvent, ... ) function TASK2:NextEvent( NextEvent, ... )
self:E( NextEvent ) self:E( NextEvent )
self.TaskScheduler = SCHEDULER:New( self.Fsm, NextEvent, { self, self.Client, unpack( arg ) }, 1 ) self.TaskScheduler = SCHEDULER:New( self.Fsm, NextEvent, { self, self.TaskUnit, unpack( arg ) }, 1 )
end end
--- Adds a score for the TASK2 to be achieved. --- Adds a score for the TASK2 to be achieved.
@ -56,13 +57,13 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function TASK2:OnStateChange( Fsm, Event, From, To ) function TASK2:OnStateChange( Fsm, Event, From, To )
self:E( { Event, From, To, self.Client.ClientName} ) self:E( { Event, From, To, self.TaskUnit.UnitName } )
if self.Scores[To] then if self.Scores[To] then
self.Client:Message( "Score:" .. self.Scores[To].ScoreText .. " " .. To , 15 ) self.Unit:Message( "Score:" .. self.Scores[To].ScoreText .. " " .. To , 15 )
local Scoring = self.Mission:GetScoring() local Scoring = self.Mission:GetScoring()
if Scoring then if Scoring then
Scoring:_AddMissionTaskScore( self.Client, self.Mission:GetName(), self.Scores[To].Score ) Scoring:_AddMissionTaskScore( self.TaskUnit, self.Mission:GetName(), self.Scores[To].Score )
end end
end end
end end

View File

@ -2,9 +2,9 @@
--- TASK2_MENU_CLIENT class --- TASK2_MENU_CLIENT class
-- @type TASK2_MENU_CLIENT -- @type TASK2_MENU_CLIENT
-- @field Client#CLIENT Client -- @field Unit#UNIT TaskUnit
-- @field Set#SET_UNIT TargetSet -- @field Set#SET_UNIT TargetSet
-- @field Menu#MENU_CLIENT_COMMAND MenuSEAD -- @field Menu#MENU_CLIENT_COMMAND MenuTask
-- @extends Task2#TASK2 -- @extends Task2#TASK2
TASK2_MENU_CLIENT = { TASK2_MENU_CLIENT = {
ClassName = "TASK2_MENU_CLIENT", ClassName = "TASK2_MENU_CLIENT",
@ -15,13 +15,13 @@ TASK2_MENU_CLIENT = {
--- Creates a new MENU handling machine. --- Creates a new MENU handling machine.
-- @param #TASK2_MENU_CLIENT self -- @param #TASK2_MENU_CLIENT self
-- @param Mission#MISSION Mission -- @param Mission#MISSION Mission
-- @param Client#CLIENT Client -- @param Unit#UNIT TaskUnit
-- @param #string MenuText The text of the menu item. -- @param #string MenuText The text of the menu item.
-- @return #TASK2_MENU_CLIENT self -- @return #TASK2_MENU_CLIENT self
function TASK2_MENU_CLIENT:New( Mission, Client, MenuText ) function TASK2_MENU_CLIENT:New( Mission, TaskUnit, MenuText )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, TASK2:New( Mission, Client ) ) -- #TASK2_MENU_CLIENT local self = BASE:Inherit( self, TASK2:New( Mission, TaskUnit ) ) -- #TASK2_MENU_CLIENT
self.MenuText = MenuText self.MenuText = MenuText
@ -52,11 +52,11 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function TASK2_MENU_CLIENT:OnMenu( Fsm, Event, From, To ) function TASK2_MENU_CLIENT:OnMenu( Fsm, Event, From, To )
self:E( { Event, From, To, self.Client.ClientName} ) self:E( { Event, From, To, self.TaskUnit.UnitName} )
self.Client:Message( "Press F10 for task menu", 15 ) self.TaskUnit:Message( "Press F10 for task menu", 15 )
self.Menu = MENU_CLIENT:New( self.Client, self.Mission:GetName(), nil ) self.Menu = MENU_CLIENT:New( self.TaskUnit, self.Mission:GetName(), nil )
self.MenuTask = MENU_CLIENT_COMMAND:New( self.Client, self.MenuText, self.Menu, self.MenuAssign, self ) self.MenuTask = MENU_CLIENT_COMMAND:New( self.TaskUnit, self.MenuText, self.Menu, self.MenuAssign, self )
end end
--- Menu function. --- Menu function.
@ -64,7 +64,7 @@ end
function TASK2_MENU_CLIENT:MenuAssign() function TASK2_MENU_CLIENT:MenuAssign()
self:E( ) self:E( )
self.Client:Message( "Menu Assign", 15 ) self.TaskUnit:Message( "Menu Assign", 15 )
self:NextEvent( self.Fsm.Assign ) self:NextEvent( self.Fsm.Assign )
end end
@ -76,9 +76,9 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function TASK2_MENU_CLIENT:OnAssign( Fsm, Event, From, To ) function TASK2_MENU_CLIENT:OnAssign( Fsm, Event, From, To )
self:E( { Event, From, To, self.Client.ClientName} ) self:E( { Event, From, To, self.TaskUnit.UnitName} )
self.Client:Message( "Assign Task", 15 ) self.TaskUnit:Message( "Assign Task", 15 )
self.MenuTask:Remove() self.MenuTask:Remove()
end end

View File

@ -3,7 +3,7 @@
--- TASK2_ROUTE_CLIENT class --- TASK2_ROUTE_CLIENT class
-- @type TASK2_ROUTE_CLIENT -- @type TASK2_ROUTE_CLIENT
-- @field Mission#MISSION Mission -- @field Mission#MISSION Mission
-- @field Client#CLIENT Client -- @field Unit#UNIT TaskUnit
-- @field Zone#ZONE_BASE TargetZone -- @field Zone#ZONE_BASE TargetZone
-- @extends Task2#TASK2 -- @extends Task2#TASK2
TASK2_ROUTE_CLIENT = { TASK2_ROUTE_CLIENT = {
@ -14,12 +14,12 @@ TASK2_ROUTE_CLIENT = {
--- Creates a new routing state machine. The task will route a CLIENT to a ZONE until the CLIENT is within that ZONE. --- Creates a new routing state machine. The task will route a CLIENT to a ZONE until the CLIENT is within that ZONE.
-- @param #TASK2_ROUTE_CLIENT self -- @param #TASK2_ROUTE_CLIENT self
-- @param Mission#MISSION Mission -- @param Mission#MISSION Mission
-- @param Client#CLIENT Client -- @param Unit#UNIT Unit
-- @return #TASK2_ROUTE_CLIENT self -- @return #TASK2_ROUTE_CLIENT self
function TASK2_ROUTE_CLIENT:New( Mission, Client, TargetZone ) function TASK2_ROUTE_CLIENT:New( Mission, TaskUnit, TargetZone )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, TASK2:New( Mission, Client ) ) -- #TASK2_ROUTE_CLIENT local self = BASE:Inherit( self, TASK2:New( Mission, TaskUnit ) ) -- #TASK2_ROUTE_CLIENT
self.TargetZone = TargetZone self.TargetZone = TargetZone
self.DisplayInterval = 30 self.DisplayInterval = 30
@ -55,18 +55,18 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function TASK2_ROUTE_CLIENT:OnLeaveUnArrived( Fsm, Event, From, To ) function TASK2_ROUTE_CLIENT:OnLeaveUnArrived( Fsm, Event, From, To )
self:E( { Event, From, To, self.Client.ClientName } ) self:E( { Event, From, To, self.TaskUnit.UnitName } )
local IsInZone = self.Client:IsInZone( self.TargetZone ) local IsInZone = self.TaskUnit:IsInZone( self.TargetZone )
if self.DisplayCount >= self.DisplayInterval then if self.DisplayCount >= self.DisplayInterval then
if not IsInZone then if not IsInZone then
local ZoneVec2 = self.TargetZone:GetVec2() local ZoneVec2 = self.TargetZone:GetVec2()
local ZonePointVec2 = POINT_VEC2:New( ZoneVec2.x, ZoneVec2.y ) local ZonePointVec2 = POINT_VEC2:New( ZoneVec2.x, ZoneVec2.y )
local ClientVec2 = self.Client:GetVec2() local TaskUnitVec2 = self.TaskUnit:GetVec2()
local ClientPointVec2 = POINT_VEC2:New( ClientVec2.x, ClientVec2.y ) local TaskUnitPointVec2 = POINT_VEC2:New( TaskUnitVec2.x, TaskUnitVec2.y )
local RouteText = ClientPointVec2:GetBRText( ZonePointVec2 ) local RouteText = TaskUnitPointVec2:GetBRText( ZonePointVec2 )
self.Client:Message( RouteText, self.DisplayTime, self.DisplayCategory ) self.TaskUnit:Message( RouteText, self.DisplayTime, self.DisplayCategory )
end end
self.DisplayCount = 1 self.DisplayCount = 1
else else

View File

@ -2,7 +2,7 @@
--- TASK2_SEAD_CLIENT class --- TASK2_SEAD_CLIENT class
-- @type TASK2_SEAD_CLIENT -- @type TASK2_SEAD_CLIENT
-- @field Client#CLIENT Client -- @field Unit#UNIT TaskUnit
-- @field Set#SET_UNIT TargetSet -- @field Set#SET_UNIT TargetSet
-- @field Menu#MENU_CLIENT_COMMAND MenuSEAD -- @field Menu#MENU_CLIENT_COMMAND MenuSEAD
-- @extends Task2#TASK2 -- @extends Task2#TASK2
@ -16,13 +16,13 @@ TASK2_SEAD_CLIENT = {
--- Creates a new SEAD task. --- Creates a new SEAD task.
-- @param #TASK2_SEAD_CLIENT self -- @param #TASK2_SEAD_CLIENT self
-- @param Mission#MISSION Mission -- @param Mission#MISSION Mission
-- @param Client#CLIENT Client -- @param Unit#UNIT TaskUnit
-- @param Set#SET_UNIT TargetSet -- @param Set#SET_UNIT TargetSet
-- @return #TASK2_SEAD_CLIENT self -- @return #TASK2_SEAD_CLIENT self
function TASK2_SEAD_CLIENT:New( Mission, Client, TargetSet ) function TASK2_SEAD_CLIENT:New( Mission, TaskUnit, TargetSet )
-- Inherits from BASE -- Inherits from BASE
local self = BASE:Inherit( self, TASK2:New( Mission, Client ) ) -- #TASK2_SEAD_CLIENT local self = BASE:Inherit( self, TASK2:New( Mission, TaskUnit ) ) -- #TASK2_SEAD_CLIENT
self.TargetSet = TargetSet self.TargetSet = TargetSet
@ -64,9 +64,9 @@ end
-- @param #string From -- @param #string From
-- @param #string To -- @param #string To
function TASK2_SEAD_CLIENT:OnAwait( Fsm, Event, From, To ) function TASK2_SEAD_CLIENT:OnAwait( Fsm, Event, From, To )
self:E( { Event, From, To, self.Client.ClientName} ) self:E( { Event, From, To, self.TaskUnit.UnitName} )
self.Client:Message( "Waiting", 15 ) self.TaskUnit:Message( "Waiting", 15 )
self:NextEvent( Fsm.Await ) self:NextEvent( Fsm.Await )
end end
@ -79,7 +79,7 @@ end
-- @param Event#EVENTDATA Event -- @param Event#EVENTDATA Event
function TASK2_SEAD_CLIENT:OnHitTarget( Fsm, Event, From, To, Event ) function TASK2_SEAD_CLIENT:OnHitTarget( Fsm, Event, From, To, Event )
self.Client:Message( "Hit Target", 15 ) self.TaskUnit:Message( "Hit Target", 15 )
if self.TargetSet:Count() > 0 then if self.TargetSet:Count() > 0 then
self:NextEvent( Fsm.MoreTargets ) self:NextEvent( Fsm.MoreTargets )
else else
@ -95,7 +95,7 @@ end
-- @param #string To -- @param #string To
function TASK2_SEAD_CLIENT:OnMoreTargets( Fsm, Event, From, To ) function TASK2_SEAD_CLIENT:OnMoreTargets( Fsm, Event, From, To )
self.Client:Message( "More Targets", 15 ) self.TaskUnit:Message( "More Targets", 15 )
end end
@ -108,7 +108,7 @@ end
-- @param Event#EVENTDATA DCSEvent -- @param Event#EVENTDATA DCSEvent
function TASK2_SEAD_CLIENT:OnKilled( Fsm, Event, From, To ) function TASK2_SEAD_CLIENT:OnKilled( Fsm, Event, From, To )
self.Client:Message( "Player got killed", 15 ) self.TaskUnit:Message( "Player got killed", 15 )
self:NextEvent( Fsm.Restart ) self:NextEvent( Fsm.Restart )
end end
@ -121,7 +121,7 @@ end
-- @param #string To -- @param #string To
function TASK2_SEAD_CLIENT:OnRestart( Fsm, Event, From, To ) function TASK2_SEAD_CLIENT:OnRestart( Fsm, Event, From, To )
self.Client:Message( "Restart SEAD Task", 15 ) self.TaskUnit:Message( "Restart SEAD Task", 15 )
self:NextEvent( Fsm.Menu ) self:NextEvent( Fsm.Menu )
end end
@ -134,7 +134,7 @@ end
-- @param #string To -- @param #string To
function TASK2_SEAD_CLIENT:OnDestroyed( Fsm, Event, From, To ) function TASK2_SEAD_CLIENT:OnDestroyed( Fsm, Event, From, To )
self.Client:Message( "Destroyed", 15 ) self.TaskUnit:Message( "Destroyed", 15 )
end end
@ -154,7 +154,7 @@ end
function TASK2_SEAD_CLIENT:EventKilled( Event ) function TASK2_SEAD_CLIENT:EventKilled( Event )
if Event.IniUnit then if Event.IniUnit then
if Event.IniUnitName == self.Client.ClientName then if Event.IniUnitName == self.TaskUnit.UnitName then
self:NextEvent( self.Fsm.Killed, Event ) self:NextEvent( self.Fsm.Killed, Event )
end end
end end