From 7df1963de48e7ad57ff497a4c0f1e9a75655ef40 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Sun, 14 May 2017 08:33:28 +0200 Subject: [PATCH] Updated the mission menu generation and task menu maintenance -- Added Mission Briefing menu showing the Mission Briefing. -- Mission menus are generated once for the groups when they belong to the SetGroup. --- .../Moose/Functional/Designate.lua | 11 ---- Moose Development/Moose/Tasking/Mission.lua | 57 +++++++++++++++++-- Moose Development/Moose/Tasking/Task.lua | 22 +++---- 3 files changed, 60 insertions(+), 30 deletions(-) diff --git a/Moose Development/Moose/Functional/Designate.lua b/Moose Development/Moose/Functional/Designate.lua index 4dd58d44f..9dd5914f7 100644 --- a/Moose Development/Moose/Functional/Designate.lua +++ b/Moose Development/Moose/Functional/Designate.lua @@ -201,7 +201,6 @@ do -- DESIGNATE self:SetStartState( "Designating" ) self:AddTransition( "*", "Detect", "*" ) - --- Detect Handler OnBefore for DESIGNATE -- @function [parent=#DESIGNATE] OnBeforeDetect -- @param #DESIGNATE self @@ -226,9 +225,7 @@ do -- DESIGNATE -- @param #DESIGNATE self -- @param #number Delay - self:AddTransition( "*", "LaseOn", "Lasing" ) - --- LaseOn Handler OnBefore for DESIGNATE -- @function [parent=#DESIGNATE ] OnBeforeLaseOn -- @param #DESIGNATE self @@ -256,7 +253,6 @@ do -- DESIGNATE self:AddTransition( "Lasing", "Lasing", "Lasing" ) self:AddTransition( "*", "LaseOff", "Designate" ) - --- LaseOff Handler OnBefore for DESIGNATE -- @function [parent=#DESIGNATE ] OnBeforeLaseOff -- @param #DESIGNATE self @@ -281,10 +277,7 @@ do -- DESIGNATE -- @param #DESIGNATE self -- @param #number Delay - - self:AddTransition( "*", "Smoke", "*" ) - --- Smoke Handler OnBefore for DESIGNATE -- @function [parent=#DESIGNATE ] OnBeforeSmoke -- @param #DESIGNATE self @@ -310,7 +303,6 @@ do -- DESIGNATE -- @param #number Delay self:AddTransition( "*", "Illuminate", "*" ) - --- Illuminate Handler OnBefore for DESIGNATE -- @function [parent=#DESIGNATE] OnBeforeIlluminate -- @param #DESIGNATE self @@ -338,7 +330,6 @@ do -- DESIGNATE self:AddTransition( "*", "Done", "*" ) self:AddTransition( "*", "Status", "*" ) - --- Status Handler OnBefore for DESIGNATE -- @function [parent=#DESIGNATE ] OnBeforeStatus -- @param #DESIGNATE self @@ -865,7 +856,6 @@ do -- DESIGNATE -- @return #DESIGNATE function DESIGNATE:onafterSmoke( From, Event, To, Index, Color ) - local TargetSetUnit = self.Detection:GetDetectedSet( Index ) local TargetSetUnitCount = TargetSetUnit:Count() @@ -900,7 +890,6 @@ do -- DESIGNATE function DESIGNATE:onafterIlluminate( From, Event, To, Index ) local TargetSetUnit = self.Detection:GetDetectedSet( Index ) - local TargetUnit = TargetSetUnit:GetFirst() if TargetUnit then diff --git a/Moose Development/Moose/Tasking/Mission.lua b/Moose Development/Moose/Tasking/Mission.lua index 3be1a3910..86f77eccf 100644 --- a/Moose Development/Moose/Tasking/Mission.lua +++ b/Moose Development/Moose/Tasking/Mission.lua @@ -220,7 +220,6 @@ function MISSION:New( CommandCenter, MissionName, MissionPriority, MissionBriefi -- @param #MISSION self -- @param #number Delay The delay in seconds. - -- Private implementations CommandCenter:SetMenu() @@ -281,6 +280,8 @@ function MISSION:JoinUnit( PlayerUnit, PlayerGroup ) end end + self:GetCommandCenter():SetMenu() + return PlayerUnitAdded end @@ -384,6 +385,7 @@ function MISSION:RemoveMenu( MenuTime ) end + do -- Group Assignment --- Returns if the @{Mission} is assigned to the Group. @@ -457,18 +459,36 @@ end --- Gets the mission menu for the coalition. -- @param #MISSION self -- @return Core.Menu#MENU_COALITION self -function MISSION:GetMenu() +function MISSION:GetMenu( TaskGroup ) -- R2.1 -- Changed Menu Structure local CommandCenter = self:GetCommandCenter() local CommandCenterMenu = CommandCenter:GetMenu() local MissionName = self:GetName() - local MissionMenu = CommandCenterMenu:GetMenu( MissionName ) + --local MissionMenu = CommandCenterMenu:GetMenu( MissionName ) - return MissionMenu + self.MissionMenu = self.MissionMenu or {} + self.MissionMenu[TaskGroup] = self.MissionMenu[TaskGroup] or {} + + local Menu = self.MissionMenu[TaskGroup] + + Menu.MainMenu = Menu.MainMenu or MENU_GROUP:New( TaskGroup, self:GetName(), CommandCenterMenu ) + Menu.BriefingMenu = Menu.BriefingMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Mission Briefing", Menu.MainMenu, self.MenuReportBriefing, self, TaskGroup ) + + Menu.ReportsMenu = Menu.ReportsMenu or MENU_GROUP:New( TaskGroup, "Reports", Menu.MainMenu ) + Menu.ReportTasksMenu = Menu.ReportTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Tasks", Menu.ReportsMenu, self.MenuReportSummary, self, TaskGroup ) + Menu.ReportPlannedTasksMenu = Menu.ReportPlannedTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Planned Tasks", Menu.ReportsMenu, self.MenuReportOverview, self, TaskGroup, "Planned" ) + Menu.ReportAssignedTasksMenu = Menu.ReportAssignedTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Assigned Tasks", Menu.ReportsMenu, self.MenuReportOverview, self, TaskGroup, "Assigned" ) + Menu.ReportSuccessTasksMenu = Menu.ReportSuccessTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Successful Tasks", Menu.ReportsMenu, self.MenuReportOverview, self, TaskGroup, "Success" ) + Menu.ReportFailedTasksMenu = Menu.ReportFailedTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Failed Tasks", Menu.ReportsMenu, self.MenuReportOverview, self, TaskGroup, "Failed" ) + Menu.ReportHeldTasksMenu = Menu.ReportHeldTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Held Tasks", Menu.ReportsMenu, self.MenuReportOverview, self, TaskGroup, "Hold" ) + + return Menu.MainMenu end + + --- Get the TASK identified by the TaskNumber from the Mission. This function is useful in GoalFunctions. -- @param #string TaskName The Name of the @{Task} within the @{Mission}. -- @return Tasking.Task#TASK The Task @@ -620,6 +640,27 @@ function MISSION:GetTaskTypes() return TaskTypeList end +--- Create a briefing report of the Mission. +-- @param #MISSION self +-- @return #string +function MISSION:ReportBriefing() + + local Report = REPORT:New() + + -- List the name of the mission. + local Name = self:GetName() + + -- Determine the status of the mission. + local Status = self:GetState() + local TasksRemaining = self:GetTasksRemaining() + + Report:Add( "Mission " .. Name .. " - " .. Status .. " - Briefing Report." ) + + Report:Add( self.MissionBriefing ) + + return Report:Text() +end + --- Create a status report of the Mission. -- This reports provides a one liner of the mission status. It indicates how many players and how many Tasks. @@ -806,6 +847,14 @@ function MISSION:GetTasks() return self.Tasks end +function MISSION:MenuReportBriefing( ReportGroup ) + + local Report = self:ReportBriefing() + + self:GetCommandCenter():MessageToGroup( Report, ReportGroup ) +end + + --- @param #MISSION self -- @param Wrapper.Group#GROUP ReportGroup function MISSION:MenuReportSummary( ReportGroup ) diff --git a/Moose Development/Moose/Tasking/Task.lua b/Moose Development/Moose/Tasking/Task.lua index 618721d0b..b5524c9f0 100644 --- a/Moose Development/Moose/Tasking/Task.lua +++ b/Moose Development/Moose/Tasking/Task.lua @@ -653,20 +653,10 @@ function TASK:SetMenu( MenuTime ) --R2.1 Mission Reports and Task Reports added. -- Set Mission Menus local Mission = self:GetMission() - local MissionMenu = Mission:GetMenu() + local MissionMenu = Mission:GetMenu( TaskGroup ) if MissionMenu then - TaskGroup.MenuReports = MENU_GROUP:New( TaskGroup, "Reports", MissionMenu ) - MENU_GROUP_COMMAND:New( TaskGroup, "Report Tasks", TaskGroup.MenuReports, Mission.MenuReportSummary, Mission, TaskGroup ) - MENU_GROUP_COMMAND:New( TaskGroup, "Report Planned Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Planned" ) - MENU_GROUP_COMMAND:New( TaskGroup, "Report Assigned Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Assigned" ) - MENU_GROUP_COMMAND:New( TaskGroup, "Report Successful Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Success" ) - MENU_GROUP_COMMAND:New( TaskGroup, "Report Failed Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Failed" ) - MENU_GROUP_COMMAND:New( TaskGroup, "Report Held Tasks", TaskGroup.MenuReports, Mission.MenuReportOverview, Mission, TaskGroup, "Hold" ) - end - --- if self:IsStatePlanned() or self:IsStateReplanned() then self:SetMenuForGroup( TaskGroup, MenuTime ) --- end + end end end end @@ -708,9 +698,10 @@ function TASK:SetPlannedMenuForGroup( TaskGroup, MenuTime ) local TaskText = string.format( "%s%s", self:GetName(), TaskPlayerString ) --, TaskThreatLevelString ) local TaskName = string.format( "%s", self:GetName() ) - local MissionMenu = MENU_GROUP:New( TaskGroup, MissionName, CommandCenterMenu ):SetTime( MenuTime ) - local MissionMenu = Mission:GetMenu( TaskGroup ) + --local MissionMenu = MENU_GROUP:New( TaskGroup, MissionName, CommandCenterMenu ):SetTime( MenuTime ) + + --local MissionMenu = Mission:GetMenu( TaskGroup ) local TaskPlannedMenu = MENU_GROUP:New( TaskGroup, "Planned Tasks", MissionMenu ):SetTime( MenuTime ) local TaskTypeMenu = MENU_GROUP:New( TaskGroup, TaskType, TaskPlannedMenu ):SetTime( MenuTime ):SetRemoveParent( true ) @@ -745,8 +736,9 @@ function TASK:SetAssignedMenuForGroup( TaskGroup, MenuTime ) local TaskText = string.format( "%s%s", self:GetName(), TaskPlayerString ) --, TaskThreatLevelString ) local TaskName = string.format( "%s", self:GetName() ) - local MissionMenu = MENU_GROUP:New( TaskGroup, MissionName, CommandCenterMenu ):SetTime( MenuTime ) local MissionMenu = Mission:GetMenu( TaskGroup ) +-- local MissionMenu = MENU_GROUP:New( TaskGroup, MissionName, CommandCenterMenu ):SetTime( MenuTime ) +-- local MissionMenu = Mission:GetMenu( TaskGroup ) local TaskAssignedMenu = MENU_GROUP:New( TaskGroup, string.format( "Assigned Task %s", TaskName ), MissionMenu ):SetTime( MenuTime ) local TaskTypeMenu = MENU_GROUP_COMMAND:New( TaskGroup, string.format( "Report Task Status" ), TaskAssignedMenu, self.MenuTaskStatus, self, TaskGroup ):SetTime( MenuTime ):SetRemoveParent( true )