diff --git a/Moose Development/Moose/Group.lua b/Moose Development/Moose/Group.lua index 91ddb61b2..99c092ffd 100644 --- a/Moose Development/Moose/Group.lua +++ b/Moose Development/Moose/Group.lua @@ -819,7 +819,7 @@ end -- @param #string Message The message text -- @param DCSTypes#Duration Duration The duration of the message. -- @return Message#MESSAGE -function GROUP:Message( Message, Duration ) +function GROUP:GetMessage( Message, Duration ) self:F2( { Message, Duration } ) local DCSGroup = self:GetDCSObject() @@ -840,7 +840,7 @@ function GROUP:MessageToAll( Message, Duration ) local DCSGroup = self:GetDCSObject() if DCSGroup then - self:Message( Message, Duration ):ToAll() + self:GetMessage( Message, Duration ):ToAll() end return nil @@ -856,7 +856,7 @@ function GROUP:MessageToRed( Message, Duration ) local DCSGroup = self:GetDCSObject() if DCSGroup then - self:Message( Message, Duration ):ToRed() + self:GetMessage( Message, Duration ):ToRed() end return nil @@ -872,7 +872,7 @@ function GROUP:MessageToBlue( Message, Duration ) local DCSGroup = self:GetDCSObject() if DCSGroup then - self:Message( Message, Duration ):ToBlue() + self:GetMessage( Message, Duration ):ToBlue() end return nil @@ -889,7 +889,23 @@ function GROUP:MessageToClient( Message, Duration, Client ) local DCSGroup = self:GetDCSObject() 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 return nil diff --git a/Moose Development/Moose/Menu.lua b/Moose Development/Moose/Menu.lua index cdad61304..7a723aff4 100644 --- a/Moose Development/Moose/Menu.lua +++ b/Moose Development/Moose/Menu.lua @@ -253,11 +253,11 @@ MENU_COALITION = { --- Creates a new coalition menu item -- @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 #table ParentMenu The parent menu. -- @return #MENU_COALITION self -function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu ) +function MENU_COALITION:New( Coalition, MenuText, ParentMenu ) -- Arrange meta tables local MenuParentPath = {} @@ -266,9 +266,9 @@ function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu ) end 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.MenuText = MenuText self.ParentMenu = ParentMenu @@ -277,7 +277,7 @@ function MENU_COALITION:New( MenuCoalition, MenuText, ParentMenu ) self:T( { MenuParentPath, MenuText } ) - self.MenuPath = missionCommands.addSubMenuForCoalition( self.MenuCoalition, MenuText, MenuParentPath ) + self.MenuPath = missionCommands.addSubMenuForCoalition( self.Coalition, MenuText, MenuParentPath ) self:T( { self.MenuPath } ) diff --git a/Moose Development/Moose/Message.lua b/Moose Development/Moose/Message.lua index b55a48c6f..03f74f190 100644 --- a/Moose Development/Moose/Message.lua +++ b/Moose Development/Moose/Message.lua @@ -102,6 +102,21 @@ function MESSAGE:ToClient( Client ) return self 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. -- @param #MESSAGE self -- @return #MESSAGE diff --git a/Moose Development/Moose/Task2.lua b/Moose Development/Moose/Task2.lua index 75a5b3627..49396e05f 100644 --- a/Moose Development/Moose/Task2.lua +++ b/Moose Development/Moose/Task2.lua @@ -3,7 +3,7 @@ --- The TASK2 class -- @type TASK2 -- @field Scheduler#SCHEDULER TaskScheduler --- @field Client#CLIENT Client +-- @field Unit#UNIT TaskUnit -- @field Mission#MISSION Mission -- @field StateMachine#STATEMACHINE_TASK Fsm -- @extends Base#BASE @@ -16,12 +16,13 @@ TASK2 = { --- Instantiates a new TASK Base. Should never be used. Interface Class. -- @param #TASK2 self +-- @param Unit#UNIT TaskUnit -- @return #TASK2 self -function TASK2:New( Mission, Client ) +function TASK2:New( Mission, TaskUnit ) local self = BASE:Inherit( self, BASE:New() ) self:F() - self.Client = Client + self.TaskUnit = TaskUnit self.Mission = Mission return self @@ -31,7 +32,7 @@ end function TASK2:NextEvent( 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 --- Adds a score for the TASK2 to be achieved. @@ -56,13 +57,13 @@ end -- @param #string From -- @param #string 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 - 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() 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 diff --git a/Moose Development/Moose/TaskMenu.lua b/Moose Development/Moose/TaskMenu.lua index 3cfc91624..75467a81a 100644 --- a/Moose Development/Moose/TaskMenu.lua +++ b/Moose Development/Moose/TaskMenu.lua @@ -2,9 +2,9 @@ --- TASK2_MENU_CLIENT class -- @type TASK2_MENU_CLIENT --- @field Client#CLIENT Client +-- @field Unit#UNIT TaskUnit -- @field Set#SET_UNIT TargetSet --- @field Menu#MENU_CLIENT_COMMAND MenuSEAD +-- @field Menu#MENU_CLIENT_COMMAND MenuTask -- @extends Task2#TASK2 TASK2_MENU_CLIENT = { ClassName = "TASK2_MENU_CLIENT", @@ -15,13 +15,13 @@ TASK2_MENU_CLIENT = { --- Creates a new MENU handling machine. -- @param #TASK2_MENU_CLIENT self -- @param Mission#MISSION Mission --- @param Client#CLIENT Client +-- @param Unit#UNIT TaskUnit -- @param #string MenuText The text of the menu item. -- @return #TASK2_MENU_CLIENT self -function TASK2_MENU_CLIENT:New( Mission, Client, MenuText ) +function TASK2_MENU_CLIENT:New( Mission, TaskUnit, MenuText ) -- 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 @@ -52,11 +52,11 @@ end -- @param #string From -- @param #string 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.Menu = MENU_CLIENT:New( self.Client, self.Mission:GetName(), nil ) - self.MenuTask = MENU_CLIENT_COMMAND:New( self.Client, self.MenuText, self.Menu, self.MenuAssign, self ) + self.TaskUnit:Message( "Press F10 for task menu", 15 ) + self.Menu = MENU_CLIENT:New( self.TaskUnit, self.Mission:GetName(), nil ) + self.MenuTask = MENU_CLIENT_COMMAND:New( self.TaskUnit, self.MenuText, self.Menu, self.MenuAssign, self ) end --- Menu function. @@ -64,7 +64,7 @@ end function TASK2_MENU_CLIENT:MenuAssign() self:E( ) - self.Client:Message( "Menu Assign", 15 ) + self.TaskUnit:Message( "Menu Assign", 15 ) self:NextEvent( self.Fsm.Assign ) end @@ -76,9 +76,9 @@ end -- @param #string From -- @param #string 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() end diff --git a/Moose Development/Moose/TaskRoute.lua b/Moose Development/Moose/TaskRoute.lua index ad2a51057..635cff0ec 100644 --- a/Moose Development/Moose/TaskRoute.lua +++ b/Moose Development/Moose/TaskRoute.lua @@ -3,7 +3,7 @@ --- TASK2_ROUTE_CLIENT class -- @type TASK2_ROUTE_CLIENT -- @field Mission#MISSION Mission --- @field Client#CLIENT Client +-- @field Unit#UNIT TaskUnit -- @field Zone#ZONE_BASE TargetZone -- @extends Task2#TASK2 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. -- @param #TASK2_ROUTE_CLIENT self -- @param Mission#MISSION Mission --- @param Client#CLIENT Client +-- @param Unit#UNIT Unit -- @return #TASK2_ROUTE_CLIENT self -function TASK2_ROUTE_CLIENT:New( Mission, Client, TargetZone ) +function TASK2_ROUTE_CLIENT:New( Mission, TaskUnit, TargetZone ) -- 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.DisplayInterval = 30 @@ -55,18 +55,18 @@ end -- @param #string From -- @param #string 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 not IsInZone then local ZoneVec2 = self.TargetZone:GetVec2() local ZonePointVec2 = POINT_VEC2:New( ZoneVec2.x, ZoneVec2.y ) - local ClientVec2 = self.Client:GetVec2() - local ClientPointVec2 = POINT_VEC2:New( ClientVec2.x, ClientVec2.y ) - local RouteText = ClientPointVec2:GetBRText( ZonePointVec2 ) - self.Client:Message( RouteText, self.DisplayTime, self.DisplayCategory ) + local TaskUnitVec2 = self.TaskUnit:GetVec2() + local TaskUnitPointVec2 = POINT_VEC2:New( TaskUnitVec2.x, TaskUnitVec2.y ) + local RouteText = TaskUnitPointVec2:GetBRText( ZonePointVec2 ) + self.TaskUnit:Message( RouteText, self.DisplayTime, self.DisplayCategory ) end self.DisplayCount = 1 else diff --git a/Moose Development/Moose/TaskSead.lua b/Moose Development/Moose/TaskSead.lua index a033f5d66..45a695c30 100644 --- a/Moose Development/Moose/TaskSead.lua +++ b/Moose Development/Moose/TaskSead.lua @@ -2,7 +2,7 @@ --- TASK2_SEAD_CLIENT class -- @type TASK2_SEAD_CLIENT --- @field Client#CLIENT Client +-- @field Unit#UNIT TaskUnit -- @field Set#SET_UNIT TargetSet -- @field Menu#MENU_CLIENT_COMMAND MenuSEAD -- @extends Task2#TASK2 @@ -16,13 +16,13 @@ TASK2_SEAD_CLIENT = { --- Creates a new SEAD task. -- @param #TASK2_SEAD_CLIENT self -- @param Mission#MISSION Mission --- @param Client#CLIENT Client +-- @param Unit#UNIT TaskUnit -- @param Set#SET_UNIT TargetSet -- @return #TASK2_SEAD_CLIENT self -function TASK2_SEAD_CLIENT:New( Mission, Client, TargetSet ) +function TASK2_SEAD_CLIENT:New( Mission, TaskUnit, TargetSet ) -- 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 @@ -64,9 +64,9 @@ end -- @param #string From -- @param #string 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 ) end @@ -79,7 +79,7 @@ end -- @param Event#EVENTDATA 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 self:NextEvent( Fsm.MoreTargets ) else @@ -95,7 +95,7 @@ end -- @param #string To function TASK2_SEAD_CLIENT:OnMoreTargets( Fsm, Event, From, To ) - self.Client:Message( "More Targets", 15 ) + self.TaskUnit:Message( "More Targets", 15 ) end @@ -108,7 +108,7 @@ end -- @param Event#EVENTDATA DCSEvent 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 ) end @@ -121,7 +121,7 @@ end -- @param #string 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 ) end @@ -134,7 +134,7 @@ end -- @param #string To function TASK2_SEAD_CLIENT:OnDestroyed( Fsm, Event, From, To ) - self.Client:Message( "Destroyed", 15 ) + self.TaskUnit:Message( "Destroyed", 15 ) end @@ -154,7 +154,7 @@ end function TASK2_SEAD_CLIENT:EventKilled( Event ) if Event.IniUnit then - if Event.IniUnitName == self.Client.ClientName then + if Event.IniUnitName == self.TaskUnit.UnitName then self:NextEvent( self.Fsm.Killed, Event ) end end