mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Merge pull request #588 from FlightControl-Master/585-TASK-A2A-DISPATCHER
585 task a2a dispatcher
This commit is contained in:
commit
fa77ba3f48
@ -46,6 +46,7 @@ function MISSION:New( CommandCenter, MissionName, MissionPriority, MissionBriefi
|
|||||||
self.MissionCoalition = MissionCoalition
|
self.MissionCoalition = MissionCoalition
|
||||||
|
|
||||||
self.Tasks = {}
|
self.Tasks = {}
|
||||||
|
self.PlayerNames = {} -- These are the players that achieved progress in the mission.
|
||||||
|
|
||||||
self:SetStartState( "IDLE" )
|
self:SetStartState( "IDLE" )
|
||||||
|
|
||||||
@ -501,7 +502,8 @@ function MISSION:GetMenu( TaskGroup ) -- R2.1 -- Changed Menu Structure
|
|||||||
Menu.ReportFailedTasksMenu = Menu.ReportFailedTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Failed Tasks", Menu.TaskReportsMenu, self.MenuReportTasksPerStatus, self, TaskGroup, "Failed" )
|
Menu.ReportFailedTasksMenu = Menu.ReportFailedTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Failed Tasks", Menu.TaskReportsMenu, self.MenuReportTasksPerStatus, self, TaskGroup, "Failed" )
|
||||||
Menu.ReportHeldTasksMenu = Menu.ReportHeldTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Held Tasks", Menu.TaskReportsMenu, self.MenuReportTasksPerStatus, self, TaskGroup, "Hold" )
|
Menu.ReportHeldTasksMenu = Menu.ReportHeldTasksMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Held Tasks", Menu.TaskReportsMenu, self.MenuReportTasksPerStatus, self, TaskGroup, "Hold" )
|
||||||
|
|
||||||
Menu.PlayerReportsMenu = Menu.PlayerReportsMenu or MENU_GROUP:New( TaskGroup, "Player Reports", Menu.MainMenu )
|
Menu.PlayerReportsMenu = Menu.PlayerReportsMenu or MENU_GROUP:New( TaskGroup, "Statistics Reports", Menu.MainMenu )
|
||||||
|
Menu.ReportMissionHistory = Menu.ReportPlayersHistory or MENU_GROUP_COMMAND:New( TaskGroup, "Report Mission Progress", Menu.PlayerReportsMenu, self.MenuReportPlayersProgress, self, TaskGroup )
|
||||||
Menu.ReportPlayersPerTaskMenu = Menu.ReportPlayersPerTaskMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Players per Task", Menu.PlayerReportsMenu, self.MenuReportPlayersPerTask, self, TaskGroup )
|
Menu.ReportPlayersPerTaskMenu = Menu.ReportPlayersPerTaskMenu or MENU_GROUP_COMMAND:New( TaskGroup, "Report Players per Task", Menu.PlayerReportsMenu, self.MenuReportPlayersPerTask, self, TaskGroup )
|
||||||
|
|
||||||
return Menu.MainMenu
|
return Menu.MainMenu
|
||||||
@ -661,6 +663,18 @@ function MISSION:GetTaskTypes()
|
|||||||
return TaskTypeList
|
return TaskTypeList
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function MISSION:AddPlayerName( PlayerName )
|
||||||
|
self.PlayerNames = self.PlayerNames or {}
|
||||||
|
self.PlayerNames[PlayerName] = PlayerName
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function MISSION:GetPlayerNames()
|
||||||
|
return self.PlayerNames
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Create a briefing report of the Mission.
|
--- Create a briefing report of the Mission.
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
-- @return #string
|
-- @return #string
|
||||||
@ -736,6 +750,7 @@ function MISSION:ReportStatus()
|
|||||||
return Report:Text()
|
return Report:Text()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Create an active player report of the Mission.
|
--- Create an active player report of the Mission.
|
||||||
-- This reports provides a one liner of the mission status. It indicates how many players and how many Tasks.
|
-- This reports provides a one liner of the mission status. It indicates how many players and how many Tasks.
|
||||||
--
|
--
|
||||||
@ -777,6 +792,56 @@ function MISSION:ReportPlayersPerTask( ReportGroup )
|
|||||||
return Report:Text()
|
return Report:Text()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Create an Mission Progress report of the Mission.
|
||||||
|
-- This reports provides a one liner per player of the mission achievements per task.
|
||||||
|
--
|
||||||
|
-- Mission "<MissionName>" - <MissionStatus> - Active Players Report
|
||||||
|
-- - Player <PlayerName>: Task <TaskName> <TaskStatus>: <Progress>
|
||||||
|
-- - Player <PlayerName>: Task <TaskName> <TaskStatus>: <Progress>
|
||||||
|
-- - ..
|
||||||
|
--
|
||||||
|
-- @param #MISSION self
|
||||||
|
-- @return #string
|
||||||
|
function MISSION:ReportPlayersProgress( ReportGroup )
|
||||||
|
|
||||||
|
local Report = REPORT:New()
|
||||||
|
|
||||||
|
-- List the name of the mission.
|
||||||
|
local Name = self:GetName()
|
||||||
|
|
||||||
|
-- Determine the status of the mission.
|
||||||
|
local Status = self:GetState()
|
||||||
|
|
||||||
|
Report:Add( string.format( '%s - %s - Players per Task Progress Report', Name, Status ) )
|
||||||
|
|
||||||
|
local PlayerList = {}
|
||||||
|
|
||||||
|
-- Determine how many tasks are remaining.
|
||||||
|
for TaskID, Task in pairs( self:GetTasks() ) do
|
||||||
|
local Task = Task -- Tasking.Task#TASK
|
||||||
|
local TaskGoalTotal = Task:GetGoalTotal() or 0
|
||||||
|
local TaskName = Task:GetName()
|
||||||
|
PlayerList[TaskName] = PlayerList[TaskName] or {}
|
||||||
|
if TaskGoalTotal ~= 0 then
|
||||||
|
local PlayerNames = self:GetPlayerNames()
|
||||||
|
for PlayerName, PlayerData in pairs( PlayerNames ) do
|
||||||
|
PlayerList[TaskName][PlayerName] = string.format( 'Player (%s): Task "%s": %d%%', PlayerName, TaskName, Task:GetPlayerProgress( PlayerName ) * 100 / TaskGoalTotal )
|
||||||
|
end
|
||||||
|
else
|
||||||
|
PlayerList[TaskName]["_"] = string.format( 'Player (---): Task "%s": %d%%', TaskName, 0 )
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
for TaskName, TaskData in pairs( PlayerList ) do
|
||||||
|
for PlayerName, TaskText in pairs( TaskData ) do
|
||||||
|
Report:Add( string.format( ' - %s', TaskText ) )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return Report:Text()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Create a summary report of the Mission (one line).
|
--- Create a summary report of the Mission (one line).
|
||||||
-- @param #MISSION self
|
-- @param #MISSION self
|
||||||
@ -902,6 +967,15 @@ function MISSION:MenuReportPlayersPerTask( ReportGroup )
|
|||||||
self:GetCommandCenter():MessageToGroup( Report, ReportGroup )
|
self:GetCommandCenter():MessageToGroup( Report, ReportGroup )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @param #MISSION self
|
||||||
|
-- @param Wrapper.Group#GROUP ReportGroup
|
||||||
|
function MISSION:MenuReportPlayersProgress( ReportGroup )
|
||||||
|
|
||||||
|
local Report = self:ReportPlayersProgress()
|
||||||
|
|
||||||
|
self:GetCommandCenter():MessageToGroup( Report, ReportGroup )
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1183,6 +1183,11 @@ function TASK:onenterAssigned( From, Event, To, PlayerUnit, PlayerName )
|
|||||||
|
|
||||||
if From ~= "Assigned" then
|
if From ~= "Assigned" then
|
||||||
self:GetMission():GetCommandCenter():MessageToCoalition( "Task " .. self:GetName() .. " is assigned." )
|
self:GetMission():GetCommandCenter():MessageToCoalition( "Task " .. self:GetName() .. " is assigned." )
|
||||||
|
|
||||||
|
-- Set the total Progress to be achieved.
|
||||||
|
|
||||||
|
self:SetGoalTotal() -- Polymorphic to set the initial goal total!
|
||||||
|
|
||||||
if self.Dispatcher then
|
if self.Dispatcher then
|
||||||
self:E( "Firing Assign event " )
|
self:E( "Firing Assign event " )
|
||||||
self.Dispatcher:Assign( self, PlayerUnit, PlayerName )
|
self.Dispatcher:Assign( self, PlayerUnit, PlayerName )
|
||||||
@ -1485,9 +1490,20 @@ do -- Additional Task Scoring and Task Progress
|
|||||||
self.TaskProgress[ProgressTime].PlayerName = PlayerName
|
self.TaskProgress[ProgressTime].PlayerName = PlayerName
|
||||||
self.TaskProgress[ProgressTime].ProgressText = ProgressText
|
self.TaskProgress[ProgressTime].ProgressText = ProgressText
|
||||||
self.TaskProgress[ProgressTime].ProgressPoints = ProgressPoints
|
self.TaskProgress[ProgressTime].ProgressPoints = ProgressPoints
|
||||||
|
self:GetMission():AddPlayerName( PlayerName )
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function TASK:GetPlayerProgress( PlayerName )
|
||||||
|
local ProgressPlayer = 0
|
||||||
|
for ProgressTime, ProgressData in pairs( self.TaskProgress ) do
|
||||||
|
if PlayerName == ProgressData.PlayerName then
|
||||||
|
ProgressPlayer = ProgressPlayer + ProgressData.ProgressPoints
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ProgressPlayer
|
||||||
|
end
|
||||||
|
|
||||||
--- Set a score when progress has been made by the player.
|
--- Set a score when progress has been made by the player.
|
||||||
-- @param #TASK self
|
-- @param #TASK self
|
||||||
-- @param #string PlayerName The name of the player.
|
-- @param #string PlayerName The name of the player.
|
||||||
|
|||||||
@ -267,6 +267,18 @@ do -- TASK_A2A
|
|||||||
return ActRouteTarget:GetZone()
|
return ActRouteTarget:GetZone()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function TASK_A2A:SetGoalTotal()
|
||||||
|
|
||||||
|
self.GoalTotal = self.TargetSetUnit:Count()
|
||||||
|
end
|
||||||
|
|
||||||
|
function TASK_A2A:GetGoalTotal()
|
||||||
|
|
||||||
|
return self.GoalTotal
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -388,7 +400,6 @@ do -- TASK_A2A_INTERCEPT
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -267,6 +267,16 @@ do -- TASK_A2G
|
|||||||
return ActRouteTarget:GetZone()
|
return ActRouteTarget:GetZone()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function TASK_A2G:SetGoalTotal()
|
||||||
|
|
||||||
|
self.GoalTotal = self.TargetSetUnit:Count()
|
||||||
|
end
|
||||||
|
|
||||||
|
function TASK_A2G:GetGoalTotal()
|
||||||
|
|
||||||
|
return self.GoalTotal
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user