mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Fixed issue #480
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
-- @extends Core.Base#BASE
|
-- @extends Core.Base#BASE
|
||||||
REPORT = {
|
REPORT = {
|
||||||
ClassName = "REPORT",
|
ClassName = "REPORT",
|
||||||
|
Title = "",
|
||||||
}
|
}
|
||||||
|
|
||||||
--- Create a new REPORT.
|
--- Create a new REPORT.
|
||||||
@@ -20,13 +21,24 @@ function REPORT:New( Title )
|
|||||||
local self = BASE:Inherit( self, BASE:New() ) -- #REPORT
|
local self = BASE:Inherit( self, BASE:New() ) -- #REPORT
|
||||||
|
|
||||||
self.Report = {}
|
self.Report = {}
|
||||||
|
|
||||||
|
Title = Title or ""
|
||||||
if Title then
|
if Title then
|
||||||
self.Report[#self.Report+1] = Title
|
self.Title = Title
|
||||||
end
|
end
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Has the REPORT Text?
|
||||||
|
-- @param #REPORT self
|
||||||
|
-- @return #boolean
|
||||||
|
function REPORT:HasText() --R2.1
|
||||||
|
|
||||||
|
return #self.Report > 0
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Set indent of a REPORT.
|
--- Set indent of a REPORT.
|
||||||
-- @param #REPORT self
|
-- @param #REPORT self
|
||||||
-- @param #number Indent
|
-- @param #number Indent
|
||||||
@@ -61,7 +73,7 @@ end
|
|||||||
-- @return #string The report text.
|
-- @return #string The report text.
|
||||||
function REPORT:Text( Delimiter )
|
function REPORT:Text( Delimiter )
|
||||||
Delimiter = Delimiter or "\n"
|
Delimiter = Delimiter or "\n"
|
||||||
local ReportText = table.concat( self.Report, Delimiter ) or ""
|
local ReportText = ( self.Title ~= "" and self.Title .. Delimiter or self.Title ) .. table.concat( self.Report, Delimiter ) or ""
|
||||||
return ReportText
|
return ReportText
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
ClassName = "TASK_A2G_DISPATCHER",
|
ClassName = "TASK_A2G_DISPATCHER",
|
||||||
Mission = nil,
|
Mission = nil,
|
||||||
Detection = nil,
|
Detection = nil,
|
||||||
|
Tasks = {},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -181,14 +182,16 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
-- @param #TASK_A2G_DISPATCHER self
|
-- @param #TASK_A2G_DISPATCHER self
|
||||||
-- @param Tasking.Mission#MISSION Mission
|
-- @param Tasking.Mission#MISSION Mission
|
||||||
-- @param Tasking.Task#TASK Task
|
-- @param Tasking.Task#TASK Task
|
||||||
-- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem
|
-- @param #boolean DetectedItemID
|
||||||
|
-- @param #boolean DetectedItemChange
|
||||||
-- @return Tasking.Task#TASK
|
-- @return Tasking.Task#TASK
|
||||||
function TASK_A2G_DISPATCHER:EvaluateRemoveTask( Mission, Task, DetectedItem )
|
function TASK_A2G_DISPATCHER:EvaluateRemoveTask( Mission, Task, DetectedItemID, DetectedItemChanged )
|
||||||
|
|
||||||
if Task then
|
if Task then
|
||||||
if Task:IsStatePlanned() and DetectedItem.Changed == true then
|
if Task:IsStatePlanned() and DetectedItemChanged == true then
|
||||||
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
self:E( "Removing Tasking: " .. Task:GetTaskName() )
|
||||||
Task = Mission:RemoveTask( Task )
|
Mission:RemoveTask( Task )
|
||||||
|
self.Tasks[DetectedItemID] = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -222,74 +225,60 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
self:E( { "Targets in DetectedItem", DetectedItem.ItemID, DetectedSet:Count(), tostring( DetectedItem ) } )
|
self:E( { "Targets in DetectedItem", DetectedItem.ItemID, DetectedSet:Count(), tostring( DetectedItem ) } )
|
||||||
DetectedSet:Flush()
|
DetectedSet:Flush()
|
||||||
|
|
||||||
local ItemID = DetectedItem.ID
|
local DetectedItemID = DetectedItem.ID
|
||||||
|
local DetectedItemChanged = DetectedItem.Changed
|
||||||
|
|
||||||
-- Evaluate SEAD Tasking
|
local Task = self.Tasks[DetectedItemID]
|
||||||
local SEADTask = Mission:GetTask( string.format( "SEAD.%03d", ItemID ) )
|
Task = self:EvaluateRemoveTask( Mission, Task, DetectedItemID, DetectedItemChanged ) -- Task will be removed if it is planned and changed.
|
||||||
SEADTask = self:EvaluateRemoveTask( Mission, SEADTask, DetectedItem )
|
|
||||||
if not SEADTask then
|
-- Evaluate SEAD
|
||||||
|
if not Task then
|
||||||
local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
||||||
if TargetSetUnit then
|
if TargetSetUnit then
|
||||||
local Task = TASK_SEAD:New( Mission, self.SetGroup, string.format( "SEAD.%03d", ItemID ), TargetSetUnit )
|
Task = TASK_SEAD:New( Mission, self.SetGroup, string.format( "SEAD.%03d", DetectedItemID ), TargetSetUnit )
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Evaluate CAS
|
||||||
|
if not Task then
|
||||||
|
local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be CASed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
Task = TASK_CAS:New( Mission, self.SetGroup, string.format( "CAS.%03d", DetectedItemID ), TargetSetUnit )
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Evaluate BAI
|
||||||
|
if not Task then
|
||||||
|
local TargetSetUnit = self:EvaluateBAI( DetectedItem, self.Mission:GetCommandCenter():GetPositionable():GetCoalition() ) -- Returns a SetUnit if there are targets to be BAIed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
Task = TASK_BAI:New( Mission, self.SetGroup, string.format( "BAI.%03d", DetectedItemID ), TargetSetUnit )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if Task then
|
||||||
|
self.Tasks[DetectedItemID] = Task
|
||||||
Task:SetTargetZone( DetectedZone )
|
Task:SetTargetZone( DetectedZone )
|
||||||
Task:SetDispatcher( self )
|
Task:SetDispatcher( self )
|
||||||
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
||||||
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
||||||
SEADTask = Mission:AddTask( Task )
|
Mission:AddTask( Task )
|
||||||
TaskReport:Add( Task:GetName() )
|
else
|
||||||
|
self:E("This should not happen")
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Evaluate CAS Tasking
|
TaskReport:Add( Task:GetName() )
|
||||||
local CASTask = Mission:GetTask( string.format( "CAS.%03d", ItemID ) )
|
|
||||||
CASTask = self:EvaluateRemoveTask( Mission, CASTask, DetectedItem )
|
|
||||||
if not CASTask then
|
|
||||||
local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
|
||||||
if TargetSetUnit then
|
|
||||||
local Task = TASK_CAS:New( Mission, self.SetGroup, string.format( "CAS.%03d", ItemID ), TargetSetUnit )
|
|
||||||
Task:SetTargetZone( DetectedZone )
|
|
||||||
Task:SetDispatcher( self )
|
|
||||||
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
|
||||||
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
|
||||||
CASTask = Mission:AddTask( Task )
|
|
||||||
TaskReport:Add( Task:GetName() )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Evaluate BAI Tasking
|
|
||||||
local BAITask = Mission:GetTask( string.format( "BAI.%03d", ItemID ) )
|
|
||||||
BAITask = self:EvaluateRemoveTask( Mission, BAITask, DetectedItem )
|
|
||||||
if not BAITask then
|
|
||||||
local TargetSetUnit = self:EvaluateBAI( DetectedItem, self.Mission:GetCommandCenter():GetPositionable():GetCoalition() ) -- Returns a SetUnit if there are targets to be SEADed...
|
|
||||||
if TargetSetUnit then
|
|
||||||
local Task = TASK_BAI:New( Mission, self.SetGroup, string.format( "BAI.%03d", ItemID ), TargetSetUnit )
|
|
||||||
Task:SetTargetZone( DetectedZone )
|
|
||||||
Task:SetDispatcher( self )
|
|
||||||
Task:SetInfo( "Detection", Detection:DetectedItemReportSummary( DetectedItemID ) )
|
|
||||||
Task:SetInfo( "Changes", Detection:GetChangeText( DetectedItem ) )
|
|
||||||
BAITask = Mission:AddTask( Task )
|
|
||||||
TaskReport:Add( Task:GetName() )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- OK, so the tasking has been done, now delete the changes reported for the area.
|
-- OK, so the tasking has been done, now delete the changes reported for the area.
|
||||||
Detection:AcceptChanges( DetectedItem )
|
Detection:AcceptChanges( DetectedItem )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- TODO set menus using the HQ coordinator
|
-- TODO set menus using the HQ coordinator
|
||||||
Mission:GetCommandCenter():SetMenu()
|
Mission:GetCommandCenter():SetMenu()
|
||||||
|
|
||||||
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
Mission:GetCommandCenter():MessageToGroup( string.format( "New task(s) %s for mission *%s*. Subscribe to a task using the Mission *Overlord* radio menu.", TaskReport:Text(", "), Mission:GetName() ), TaskGroup )
|
|
||||||
if not TaskGroup:GetState( TaskGroup, "Assigned" ) then
|
if not TaskGroup:GetState( TaskGroup, "Assigned" ) then
|
||||||
-- Mission:GetCommandCenter():MessageToGroup(
|
Mission:GetCommandCenter():MessageToGroup( string.format( "Mission *%s* has tasks %s. Subscribe to a task using the Mission *Overlord* radio menu.", Mission:GetName(), TaskReport:Text(", ") ), TaskGroup )
|
||||||
-- string.format( "HQ Reporting - Planned tasks for mission '%s':\n\n%s\n",
|
|
||||||
-- self.Mission:GetName(),
|
|
||||||
-- string.format( "%s\n\n%s\n\n%s\n\n%s", ReportSEAD:Text(), ReportCAS:Text(), ReportBAI:Text(), ReportChanges:Text()
|
|
||||||
-- )
|
|
||||||
-- ), TaskGroup
|
|
||||||
-- )
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user