mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Progress
This commit is contained in:
parent
3924d2d8fc
commit
c3ee9306f3
@ -155,7 +155,6 @@ do -- ACT_ACCOUNT_DEADS
|
|||||||
-- @extends #ACT_ACCOUNT
|
-- @extends #ACT_ACCOUNT
|
||||||
ACT_ACCOUNT_DEADS = {
|
ACT_ACCOUNT_DEADS = {
|
||||||
ClassName = "ACT_ACCOUNT_DEADS",
|
ClassName = "ACT_ACCOUNT_DEADS",
|
||||||
TargetSetUnit = nil,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -163,13 +162,10 @@ do -- ACT_ACCOUNT_DEADS
|
|||||||
-- @param #ACT_ACCOUNT_DEADS self
|
-- @param #ACT_ACCOUNT_DEADS self
|
||||||
-- @param Set#SET_UNIT TargetSetUnit
|
-- @param Set#SET_UNIT TargetSetUnit
|
||||||
-- @param #string TaskName
|
-- @param #string TaskName
|
||||||
function ACT_ACCOUNT_DEADS:New( TargetSetUnit, TaskName )
|
function ACT_ACCOUNT_DEADS:New()
|
||||||
-- Inherits from BASE
|
-- Inherits from BASE
|
||||||
local self = BASE:Inherit( self, ACT_ACCOUNT:New() ) -- #ACT_ACCOUNT_DEADS
|
local self = BASE:Inherit( self, ACT_ACCOUNT:New() ) -- #ACT_ACCOUNT_DEADS
|
||||||
|
|
||||||
self.TargetSetUnit = TargetSetUnit
|
|
||||||
self.TaskName = TaskName
|
|
||||||
|
|
||||||
self.DisplayInterval = 30
|
self.DisplayInterval = 30
|
||||||
self.DisplayCount = 30
|
self.DisplayCount = 30
|
||||||
self.DisplayMessage = true
|
self.DisplayMessage = true
|
||||||
@ -181,8 +177,8 @@ do -- ACT_ACCOUNT_DEADS
|
|||||||
|
|
||||||
function ACT_ACCOUNT_DEADS:Init( FsmAccount )
|
function ACT_ACCOUNT_DEADS:Init( FsmAccount )
|
||||||
|
|
||||||
self.TargetSetUnit = FsmAccount.TargetSetUnit
|
self.Task = self:GetTask()
|
||||||
self.TaskName = FsmAccount.TaskName
|
self.TaskName = self.Task:GetName()
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Process Events
|
--- Process Events
|
||||||
@ -196,7 +192,7 @@ do -- ACT_ACCOUNT_DEADS
|
|||||||
function ACT_ACCOUNT_DEADS:onenterReport( ProcessUnit, Task, From, Event, To )
|
function ACT_ACCOUNT_DEADS:onenterReport( ProcessUnit, Task, From, Event, To )
|
||||||
self:E( { ProcessUnit, From, Event, To } )
|
self:E( { ProcessUnit, From, Event, To } )
|
||||||
|
|
||||||
self:Message( "Your group with assigned " .. self.TaskName .. " task has " .. self.TargetSetUnit:GetUnitTypesText() .. " targets left to be destroyed." )
|
self:Message( "Your group with assigned " .. self.TaskName .. " task has " .. Task.TargetSetUnit:GetUnitTypesText() .. " targets left to be destroyed." )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -211,7 +207,7 @@ do -- ACT_ACCOUNT_DEADS
|
|||||||
function ACT_ACCOUNT_DEADS:onafterEvent( ProcessClient, Task, From, Event, To, EventData )
|
function ACT_ACCOUNT_DEADS:onafterEvent( ProcessClient, Task, From, Event, To, EventData )
|
||||||
self:T( { ProcessClient:GetName(), Task:GetName(), From, Event, To, EventData } )
|
self:T( { ProcessClient:GetName(), Task:GetName(), From, Event, To, EventData } )
|
||||||
|
|
||||||
if self.TargetSetUnit:FindUnit( EventData.IniUnitName ) then
|
if Task.TargetSetUnit:FindUnit( EventData.IniUnitName ) then
|
||||||
local PlayerName = ProcessClient:GetPlayerName()
|
local PlayerName = ProcessClient:GetPlayerName()
|
||||||
local PlayerHit = self.PlayerHits and self.PlayerHits[EventData.IniUnitName]
|
local PlayerHit = self.PlayerHits and self.PlayerHits[EventData.IniUnitName]
|
||||||
if PlayerHit == PlayerName then
|
if PlayerHit == PlayerName then
|
||||||
@ -235,13 +231,13 @@ do -- ACT_ACCOUNT_DEADS
|
|||||||
|
|
||||||
local TaskGroup = ProcessClient:GetGroup()
|
local TaskGroup = ProcessClient:GetGroup()
|
||||||
|
|
||||||
self.TargetSetUnit:Remove( EventData.IniUnitName )
|
Task.TargetSetUnit:Remove( EventData.IniUnitName )
|
||||||
self:Message( "You have destroyed a target. Your group assigned with task " .. self.TaskName .. " has " .. self.TargetSetUnit:Count() .. " targets ( " .. self.TargetSetUnit:GetUnitTypesText() .. " ) left to be destroyed." )
|
self:Message( "You have destroyed a target.\nYour group assigned with task " .. self.TaskName .. " has\n" .. Task.TargetSetUnit:Count() .. " targets ( " .. Task.TargetSetUnit:GetUnitTypesText() .. " ) left to be destroyed." )
|
||||||
|
|
||||||
local PlayerName = ProcessClient:GetPlayerName()
|
local PlayerName = ProcessClient:GetPlayerName()
|
||||||
Task:AddProgress( PlayerName, "Destroyed " .. EventData.IniTypeName, timer.getTime(), 1 )
|
Task:AddProgress( PlayerName, "Destroyed " .. EventData.IniTypeName, timer.getTime(), 1 )
|
||||||
|
|
||||||
if self.TargetSetUnit:Count() > 0 then
|
if Task.TargetSetUnit:Count() > 0 then
|
||||||
self:__More( 1 )
|
self:__More( 1 )
|
||||||
else
|
else
|
||||||
self:__NoMore( 1 )
|
self:__NoMore( 1 )
|
||||||
@ -260,10 +256,10 @@ do -- ACT_ACCOUNT_DEADS
|
|||||||
self:T( { ProcessClient:GetName(), Task:GetName(), From, Event, To, EventData } )
|
self:T( { ProcessClient:GetName(), Task:GetName(), From, Event, To, EventData } )
|
||||||
|
|
||||||
local TaskGroup = ProcessClient:GetGroup()
|
local TaskGroup = ProcessClient:GetGroup()
|
||||||
self.TargetSetUnit:Remove( EventData.IniUnitName )
|
Task.TargetSetUnit:Remove( EventData.IniUnitName )
|
||||||
self:Message( "One of the task targets has been destroyed. Your group assigned with task " .. self.TaskName .. " has " .. self.TargetSetUnit:Count() .. " targets ( " .. self.TargetSetUnit:GetUnitTypesText() .. " ) left to be destroyed." )
|
self:Message( "One of the task targets has been destroyed.\nYour group assigned with task " .. self.TaskName .. " has\n" .. Task.TargetSetUnit:Count() .. " targets ( " .. Task.TargetSetUnit:GetUnitTypesText() .. " ) left to be destroyed." )
|
||||||
|
|
||||||
if self.TargetSetUnit:Count() > 0 then
|
if Task.TargetSetUnit:Count() > 0 then
|
||||||
self:__More( 1 )
|
self:__More( 1 )
|
||||||
else
|
else
|
||||||
self:__NoMore( 1 )
|
self:__NoMore( 1 )
|
||||||
|
|||||||
@ -302,7 +302,7 @@ do -- DETECTION_BASE
|
|||||||
-- @field Core.Zone#ZONE_UNIT Zone -- The Zone of the detected area.
|
-- @field Core.Zone#ZONE_UNIT Zone -- The Zone of the detected area.
|
||||||
-- @field #boolean Changed Documents if the detected area has changes.
|
-- @field #boolean Changed Documents if the detected area has changes.
|
||||||
-- @field #table Changes A list of the changes reported on the detected area. (It is up to the user of the detected area to consume those changes).
|
-- @field #table Changes A list of the changes reported on the detected area. (It is up to the user of the detected area to consume those changes).
|
||||||
-- @field #number ItemID -- The identifier of the detected area.
|
-- @field #number ID -- The identifier of the detected area.
|
||||||
-- @field #boolean FriendliesNearBy Indicates if there are friendlies within the detected area.
|
-- @field #boolean FriendliesNearBy Indicates if there are friendlies within the detected area.
|
||||||
-- @field Wrapper.Unit#UNIT NearestFAC The nearest FAC near the Area.
|
-- @field Wrapper.Unit#UNIT NearestFAC The nearest FAC near the Area.
|
||||||
|
|
||||||
@ -1073,14 +1073,14 @@ do -- DETECTION_BASE
|
|||||||
function DETECTION_BASE:AddChangeItem( DetectedItem, ChangeCode, ItemUnitType )
|
function DETECTION_BASE:AddChangeItem( DetectedItem, ChangeCode, ItemUnitType )
|
||||||
|
|
||||||
DetectedItem.Changed = true
|
DetectedItem.Changed = true
|
||||||
local ItemID = DetectedItem.ItemID
|
local ID = DetectedItem.ID
|
||||||
|
|
||||||
DetectedItem.Changes = DetectedItem.Changes or {}
|
DetectedItem.Changes = DetectedItem.Changes or {}
|
||||||
DetectedItem.Changes[ChangeCode] = DetectedItem.Changes[ChangeCode] or {}
|
DetectedItem.Changes[ChangeCode] = DetectedItem.Changes[ChangeCode] or {}
|
||||||
DetectedItem.Changes[ChangeCode].ItemID = ItemID
|
DetectedItem.Changes[ChangeCode].ID = ID
|
||||||
DetectedItem.Changes[ChangeCode].ItemUnitType = ItemUnitType
|
DetectedItem.Changes[ChangeCode].ItemUnitType = ItemUnitType
|
||||||
|
|
||||||
self:T( { "Change on Detection Item:", DetectedItem.ItemID, ChangeCode, ItemUnitType } )
|
self:T( { "Change on Detection Item:", DetectedItem.ID, ChangeCode, ItemUnitType } )
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
@ -1095,15 +1095,15 @@ do -- DETECTION_BASE
|
|||||||
function DETECTION_BASE:AddChangeUnit( DetectedItem, ChangeCode, ChangeUnitType )
|
function DETECTION_BASE:AddChangeUnit( DetectedItem, ChangeCode, ChangeUnitType )
|
||||||
|
|
||||||
DetectedItem.Changed = true
|
DetectedItem.Changed = true
|
||||||
local ItemID = DetectedItem.ItemID
|
local ID = DetectedItem.ID
|
||||||
|
|
||||||
DetectedItem.Changes = DetectedItem.Changes or {}
|
DetectedItem.Changes = DetectedItem.Changes or {}
|
||||||
DetectedItem.Changes[ChangeCode] = DetectedItem.Changes[ChangeCode] or {}
|
DetectedItem.Changes[ChangeCode] = DetectedItem.Changes[ChangeCode] or {}
|
||||||
DetectedItem.Changes[ChangeCode][ChangeUnitType] = DetectedItem.Changes[ChangeCode][ChangeUnitType] or 0
|
DetectedItem.Changes[ChangeCode][ChangeUnitType] = DetectedItem.Changes[ChangeCode][ChangeUnitType] or 0
|
||||||
DetectedItem.Changes[ChangeCode][ChangeUnitType] = DetectedItem.Changes[ChangeCode][ChangeUnitType] + 1
|
DetectedItem.Changes[ChangeCode][ChangeUnitType] = DetectedItem.Changes[ChangeCode][ChangeUnitType] + 1
|
||||||
DetectedItem.Changes[ChangeCode].ItemID = ItemID
|
DetectedItem.Changes[ChangeCode].ID = ID
|
||||||
|
|
||||||
self:T( { "Change on Detection Item:", DetectedItem.ItemID, ChangeCode, ChangeUnitType } )
|
self:T( { "Change on Detection Item:", DetectedItem.ID, ChangeCode, ChangeUnitType } )
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
@ -1628,7 +1628,7 @@ do -- DETECTION_UNITS
|
|||||||
if ChangeCode == "AU" then
|
if ChangeCode == "AU" then
|
||||||
local MTUT = {}
|
local MTUT = {}
|
||||||
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
||||||
if ChangeUnitType ~= "ItemID" then
|
if ChangeUnitType ~= "ID" then
|
||||||
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1638,7 +1638,7 @@ do -- DETECTION_UNITS
|
|||||||
if ChangeCode == "RU" then
|
if ChangeCode == "RU" then
|
||||||
local MTUT = {}
|
local MTUT = {}
|
||||||
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
||||||
if ChangeUnitType ~= "ItemID" then
|
if ChangeUnitType ~= "ID" then
|
||||||
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1915,7 +1915,7 @@ do -- DETECTION_TYPES
|
|||||||
if ChangeCode == "AU" then
|
if ChangeCode == "AU" then
|
||||||
local MTUT = {}
|
local MTUT = {}
|
||||||
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
||||||
if ChangeUnitType ~= "ItemID" then
|
if ChangeUnitType ~= "ID" then
|
||||||
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1925,7 +1925,7 @@ do -- DETECTION_TYPES
|
|||||||
if ChangeCode == "RU" then
|
if ChangeCode == "RU" then
|
||||||
local MTUT = {}
|
local MTUT = {}
|
||||||
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
||||||
if ChangeUnitType ~= "ItemID" then
|
if ChangeUnitType ~= "ID" then
|
||||||
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -2376,39 +2376,39 @@ do -- DETECTION_AREAS
|
|||||||
for ChangeCode, ChangeData in pairs( DetectedItem.Changes ) do
|
for ChangeCode, ChangeData in pairs( DetectedItem.Changes ) do
|
||||||
|
|
||||||
if ChangeCode == "AA" then
|
if ChangeCode == "AA" then
|
||||||
MT[#MT+1] = "Detected new area " .. ChangeData.ItemID .. ". The center target is a " .. ChangeData.ItemUnitType .. "."
|
MT[#MT+1] = "Detected new area " .. ChangeData.ID .. ". The center target is a " .. ChangeData.ItemUnitType .. "."
|
||||||
end
|
end
|
||||||
|
|
||||||
if ChangeCode == "RAU" then
|
if ChangeCode == "RAU" then
|
||||||
MT[#MT+1] = "Changed area " .. ChangeData.ItemID .. ". Removed the center target."
|
MT[#MT+1] = "Changed area " .. ChangeData.ID .. ". Removed the center target."
|
||||||
end
|
end
|
||||||
|
|
||||||
if ChangeCode == "AAU" then
|
if ChangeCode == "AAU" then
|
||||||
MT[#MT+1] = "Changed area " .. ChangeData.ItemID .. ". The new center target is a " .. ChangeData.ItemUnitType .. "."
|
MT[#MT+1] = "Changed area " .. ChangeData.ID .. ". The new center target is a " .. ChangeData.ItemUnitType .. "."
|
||||||
end
|
end
|
||||||
|
|
||||||
if ChangeCode == "RA" then
|
if ChangeCode == "RA" then
|
||||||
MT[#MT+1] = "Removed old area " .. ChangeData.ItemID .. ". No more targets in this area."
|
MT[#MT+1] = "Removed old area " .. ChangeData.ID .. ". No more targets in this area."
|
||||||
end
|
end
|
||||||
|
|
||||||
if ChangeCode == "AU" then
|
if ChangeCode == "AU" then
|
||||||
local MTUT = {}
|
local MTUT = {}
|
||||||
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
||||||
if ChangeUnitType ~= "ItemID" then
|
if ChangeUnitType ~= "ID" then
|
||||||
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
MT[#MT+1] = "Detected for area " .. ChangeData.ItemID .. " new target(s) " .. table.concat( MTUT, ", " ) .. "."
|
MT[#MT+1] = "Detected for area " .. ChangeData.ID .. " new target(s) " .. table.concat( MTUT, ", " ) .. "."
|
||||||
end
|
end
|
||||||
|
|
||||||
if ChangeCode == "RU" then
|
if ChangeCode == "RU" then
|
||||||
local MTUT = {}
|
local MTUT = {}
|
||||||
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do
|
||||||
if ChangeUnitType ~= "ItemID" then
|
if ChangeUnitType ~= "ID" then
|
||||||
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
MT[#MT+1] = "Removed for area " .. ChangeData.ItemID .. " invisible or destroyed target(s) " .. table.concat( MTUT, ", " ) .. "."
|
MT[#MT+1] = "Removed for area " .. ChangeData.ID .. " invisible or destroyed target(s) " .. table.concat( MTUT, ", " ) .. "."
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -2559,7 +2559,7 @@ do -- DETECTION_AREAS
|
|||||||
|
|
||||||
local DetectedItem = DetectedItemData -- #DETECTION_BASE.DetectedItem
|
local DetectedItem = DetectedItemData -- #DETECTION_BASE.DetectedItem
|
||||||
if DetectedItem then
|
if DetectedItem then
|
||||||
self:T( "Detection Area #" .. DetectedItem.ItemID )
|
self:T( "Detection Area #" .. DetectedItem.ID )
|
||||||
local DetectedSet = DetectedItem.Set
|
local DetectedSet = DetectedItem.Set
|
||||||
if not self:IsDetectedObjectIdentified( DetectedObject ) and DetectedUnit:IsInZone( DetectedItem.Zone ) then
|
if not self:IsDetectedObjectIdentified( DetectedObject ) and DetectedUnit:IsInZone( DetectedItem.Zone ) then
|
||||||
self:IdentifyDetectedObject( DetectedObject )
|
self:IdentifyDetectedObject( DetectedObject )
|
||||||
@ -2607,7 +2607,7 @@ do -- DETECTION_AREAS
|
|||||||
--- @param Wrapper.Unit#UNIT DetectedUnit
|
--- @param Wrapper.Unit#UNIT DetectedUnit
|
||||||
function( DetectedUnit )
|
function( DetectedUnit )
|
||||||
if DetectedUnit:IsAlive() then
|
if DetectedUnit:IsAlive() then
|
||||||
--self:T( "Detected Set #" .. DetectedItem.ItemID .. ":" .. DetectedUnit:GetName() )
|
--self:T( "Detected Set #" .. DetectedItem.ID .. ":" .. DetectedUnit:GetName() )
|
||||||
if DETECTION_AREAS._FlareDetectedUnits or self._FlareDetectedUnits then
|
if DETECTION_AREAS._FlareDetectedUnits or self._FlareDetectedUnits then
|
||||||
DetectedUnit:FlareGreen()
|
DetectedUnit:FlareGreen()
|
||||||
end
|
end
|
||||||
|
|||||||
@ -75,7 +75,7 @@ do -- TASK_A2A
|
|||||||
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "Engage", "Engaging" )
|
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "Engage", "Engaging" )
|
||||||
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "HoldAtRendezVous", "HoldingAtRendezVous" )
|
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "HoldAtRendezVous", "HoldingAtRendezVous" )
|
||||||
|
|
||||||
Fsm:AddProcess ( "Engaging", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, self.TaskType ), {} )
|
Fsm:AddProcess ( "Engaging", "Account", ACT_ACCOUNT_DEADS:New(), {} )
|
||||||
Fsm:AddTransition( "Engaging", "RouteToTarget", "Engaging" )
|
Fsm:AddTransition( "Engaging", "RouteToTarget", "Engaging" )
|
||||||
Fsm:AddProcess( "Engaging", "RouteToTargetZone", ACT_ROUTE_ZONE:New(), {} )
|
Fsm:AddProcess( "Engaging", "RouteToTargetZone", ACT_ROUTE_ZONE:New(), {} )
|
||||||
Fsm:AddProcess( "Engaging", "RouteToTargetPoint", ACT_ROUTE_POINT:New(), {} )
|
Fsm:AddProcess( "Engaging", "RouteToTargetPoint", ACT_ROUTE_POINT:New(), {} )
|
||||||
|
|||||||
@ -75,7 +75,7 @@ do -- TASK_A2G
|
|||||||
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "Engage", "Engaging" )
|
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "Engage", "Engaging" )
|
||||||
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "HoldAtRendezVous", "HoldingAtRendezVous" )
|
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "HoldAtRendezVous", "HoldingAtRendezVous" )
|
||||||
|
|
||||||
Fsm:AddProcess ( "Engaging", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, self.TaskType ), {} )
|
Fsm:AddProcess ( "Engaging", "Account", ACT_ACCOUNT_DEADS:New(), {} )
|
||||||
Fsm:AddTransition( "Engaging", "RouteToTarget", "Engaging" )
|
Fsm:AddTransition( "Engaging", "RouteToTarget", "Engaging" )
|
||||||
Fsm:AddProcess( "Engaging", "RouteToTargetZone", ACT_ROUTE_ZONE:New(), {} )
|
Fsm:AddProcess( "Engaging", "RouteToTargetZone", ACT_ROUTE_ZONE:New(), {} )
|
||||||
Fsm:AddProcess( "Engaging", "RouteToTargetPoint", ACT_ROUTE_POINT:New(), {} )
|
Fsm:AddProcess( "Engaging", "RouteToTargetPoint", ACT_ROUTE_POINT:New(), {} )
|
||||||
@ -165,6 +165,15 @@ do -- TASK_A2G
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @param #TASK_A2G self
|
||||||
|
-- @param Core.Set#SET_UNIT TargetSetUnit The set of targets.
|
||||||
|
function TASK_A2G:SetTargetSetUnit( TargetSetUnit )
|
||||||
|
|
||||||
|
self.TargetSetUnit = TargetSetUnit
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- @param #TASK_A2G self
|
--- @param #TASK_A2G self
|
||||||
function TASK_A2G:GetPlannedMenuText()
|
function TASK_A2G:GetPlannedMenuText()
|
||||||
@ -319,17 +328,23 @@ do -- TASK_A2G_SEAD
|
|||||||
"Execute a Suppression of Enemy Air Defenses.\n"
|
"Execute a Suppression of Enemy Air Defenses.\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
local TargetCoordinate = TargetSetUnit:GetFirst():GetCoordinate()
|
self:UpdateTaskInfo()
|
||||||
self:SetInfo( "Coordinates", TargetCoordinate, 10 )
|
|
||||||
|
|
||||||
self:SetInfo( "Threat", "[" .. string.rep( "■", TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 )
|
|
||||||
local DetectedItemsCount = TargetSetUnit:Count()
|
|
||||||
local DetectedItemsTypes = TargetSetUnit:GetTypeNames()
|
|
||||||
self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 )
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function TASK_A2G_SEAD:UpdateTaskInfo()
|
||||||
|
|
||||||
|
local TargetCoordinate = self.TargetSetUnit:GetFirst():GetCoordinate()
|
||||||
|
self:SetInfo( "Coordinates", TargetCoordinate, 10 )
|
||||||
|
|
||||||
|
self:SetInfo( "Threat", "[" .. string.rep( "■", self.TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 )
|
||||||
|
local DetectedItemsCount = self.TargetSetUnit:Count()
|
||||||
|
local DetectedItemsTypes = self.TargetSetUnit:GetTypeNames()
|
||||||
|
self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 )
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
function TASK_A2G_SEAD:ReportOrder( ReportGroup )
|
function TASK_A2G_SEAD:ReportOrder( ReportGroup )
|
||||||
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
|
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
|
||||||
local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate )
|
local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate )
|
||||||
@ -440,16 +455,22 @@ do -- TASK_A2G_BAI
|
|||||||
"Execute a Battlefield Air Interdiction of a group of enemy targets.\n"
|
"Execute a Battlefield Air Interdiction of a group of enemy targets.\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
local TargetCoordinate = TargetSetUnit:GetFirst():GetCoordinate()
|
self:UpdateTaskInfo()
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function TASK_A2G_BAI:UpdateTaskInfo()
|
||||||
|
|
||||||
|
local TargetCoordinate = self.TargetSetUnit:GetFirst():GetCoordinate()
|
||||||
self:SetInfo( "Coordinates", TargetCoordinate, 10 )
|
self:SetInfo( "Coordinates", TargetCoordinate, 10 )
|
||||||
|
|
||||||
self:SetInfo( "Threat", "[" .. string.rep( "■", TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 )
|
self:SetInfo( "Threat", "[" .. string.rep( "■", self.TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 )
|
||||||
local DetectedItemsCount = TargetSetUnit:Count()
|
local DetectedItemsCount = self.TargetSetUnit:Count()
|
||||||
local DetectedItemsTypes = TargetSetUnit:GetTypeNames()
|
local DetectedItemsTypes = self.TargetSetUnit:GetTypeNames()
|
||||||
self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 )
|
self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 )
|
||||||
|
|
||||||
return self
|
end
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function TASK_A2G_BAI:ReportOrder( ReportGroup )
|
function TASK_A2G_BAI:ReportOrder( ReportGroup )
|
||||||
@ -562,16 +583,22 @@ do -- TASK_A2G_CAS
|
|||||||
"Beware of friendlies at the vicinity!\n"
|
"Beware of friendlies at the vicinity!\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
local TargetCoordinate = TargetSetUnit:GetFirst():GetCoordinate()
|
self:UpdateTaskInfo()
|
||||||
self:SetInfo( "Coordinates", TargetCoordinate, 10 )
|
|
||||||
|
|
||||||
self:SetInfo( "Threat", "[" .. string.rep( "■", TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 )
|
|
||||||
local DetectedItemsCount = TargetSetUnit:Count()
|
|
||||||
local DetectedItemsTypes = TargetSetUnit:GetTypeNames()
|
|
||||||
self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 )
|
|
||||||
|
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function TASK_A2G_CAS:UpdateTaskInfo()
|
||||||
|
|
||||||
|
local TargetCoordinate = self.TargetSetUnit:GetFirst():GetCoordinate()
|
||||||
|
self:SetInfo( "Coordinates", TargetCoordinate, 10 )
|
||||||
|
|
||||||
|
self:SetInfo( "Threat", "[" .. string.rep( "■", self.TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 )
|
||||||
|
local DetectedItemsCount = self.TargetSetUnit:Count()
|
||||||
|
local DetectedItemsTypes = self.TargetSetUnit:GetTypeNames()
|
||||||
|
self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 )
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
function TASK_A2G_CAS:ReportOrder( ReportGroup )
|
function TASK_A2G_CAS:ReportOrder( ReportGroup )
|
||||||
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
|
local Coordinate = self.TaskInfo.Coordinates.TaskInfoText
|
||||||
|
|||||||
@ -81,7 +81,7 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
--- Creates a SEAD task when there are targets for it.
|
--- Creates a SEAD task when there are targets for it.
|
||||||
-- @param #TASK_A2G_DISPATCHER self
|
-- @param #TASK_A2G_DISPATCHER self
|
||||||
-- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem
|
-- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem
|
||||||
-- @return Set#SET_UNIT TargetSetUnit: The target set of units.
|
-- @return Core.Set#SET_UNIT TargetSetUnit: The target set of units.
|
||||||
-- @return #nil If there are no targets to be set.
|
-- @return #nil If there are no targets to be set.
|
||||||
function TASK_A2G_DISPATCHER:EvaluateSEAD( DetectedItem )
|
function TASK_A2G_DISPATCHER:EvaluateSEAD( DetectedItem )
|
||||||
self:F( { DetectedItem.ItemID } )
|
self:F( { DetectedItem.ItemID } )
|
||||||
@ -109,7 +109,8 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
--- Creates a CAS task when there are targets for it.
|
--- Creates a CAS task when there are targets for it.
|
||||||
-- @param #TASK_A2G_DISPATCHER self
|
-- @param #TASK_A2G_DISPATCHER self
|
||||||
-- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem
|
-- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem
|
||||||
-- @return Tasking.Task#TASK
|
-- @return Core.Set#SET_UNIT TargetSetUnit: The target set of units.
|
||||||
|
-- @return #nil If there are no targets to be set.
|
||||||
function TASK_A2G_DISPATCHER:EvaluateCAS( DetectedItem )
|
function TASK_A2G_DISPATCHER:EvaluateCAS( DetectedItem )
|
||||||
self:F( { DetectedItem.ItemID } )
|
self:F( { DetectedItem.ItemID } )
|
||||||
|
|
||||||
@ -137,7 +138,8 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
--- Creates a BAI task when there are targets for it.
|
--- Creates a BAI task when there are targets for it.
|
||||||
-- @param #TASK_A2G_DISPATCHER self
|
-- @param #TASK_A2G_DISPATCHER self
|
||||||
-- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem
|
-- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem
|
||||||
-- @return Tasking.Task#TASK
|
-- @return Core.Set#SET_UNIT TargetSetUnit: The target set of units.
|
||||||
|
-- @return #nil If there are no targets to be set.
|
||||||
function TASK_A2G_DISPATCHER:EvaluateBAI( DetectedItem, FriendlyCoalition )
|
function TASK_A2G_DISPATCHER:EvaluateBAI( DetectedItem, FriendlyCoalition )
|
||||||
self:F( { DetectedItem.ItemID } )
|
self:F( { DetectedItem.ItemID } )
|
||||||
|
|
||||||
@ -230,7 +232,8 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
local TaskIndex = DetectedItem.Index
|
local TaskIndex = DetectedItem.Index
|
||||||
local DetectedItemChanged = DetectedItem.Changed
|
local DetectedItemChanged = DetectedItem.Changed
|
||||||
|
|
||||||
local Task = self.Tasks[TaskIndex]
|
local Task = self.Tasks[TaskIndex] -- Tasking.Task_A2G#TASK_A2A
|
||||||
|
|
||||||
Task = self:EvaluateRemoveTask( Mission, Task, TaskIndex, DetectedItemChanged ) -- Task will be removed if it is planned and changed.
|
Task = self:EvaluateRemoveTask( Mission, Task, TaskIndex, DetectedItemChanged ) -- Task will be removed if it is planned and changed.
|
||||||
|
|
||||||
-- Evaluate SEAD
|
-- Evaluate SEAD
|
||||||
@ -266,7 +269,46 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
else
|
else
|
||||||
self:E("This should not happen")
|
self:E("This should not happen")
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
-- If there is a Task and the task was assigned, then we check if the task was changed ... If it was, we need to reevaluate the targets.
|
||||||
|
if Task:IsStateAssigned() then
|
||||||
|
if DetectedItemChanged == true then -- The detection has changed, thus a new TargetSet is to be evaluated and set
|
||||||
|
local TargetsReport = REPORT:New()
|
||||||
|
if Task:IsInstanceOf( TASK_A2G_SEAD ) then
|
||||||
|
local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
Task:SetTargetSetUnit( TargetSetUnit )
|
||||||
|
Task:UpdateTaskInfo()
|
||||||
|
TargetsReport:Add( Detection:GetChangeText( DetectedItem ) )
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if Task:IsInstanceOf( TASK_A2G_CAS ) then
|
||||||
|
local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be CASed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
Task:SetTargetSetUnit( TargetSetUnit )
|
||||||
|
Task:UpdateTaskInfo()
|
||||||
|
TargetsReport:Add( Detection:GetChangeText( DetectedItem ) )
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if Task:IsInstanceOf( TASK_A2G_BAI ) then
|
||||||
|
local TargetSetUnit = self:EvaluateBAI( DetectedItem ) -- Returns a SetUnit if there are targets to be BAIed...
|
||||||
|
if TargetSetUnit then
|
||||||
|
Task:SetTargetSetUnit( TargetSetUnit )
|
||||||
|
Task:UpdateTaskInfo()
|
||||||
|
TargetsReport:Add( Detection:GetChangeText( DetectedItem ) )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- Now we send to each group the changes.
|
||||||
|
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
|
local TargetsText = TargetsReport:Text(", ")
|
||||||
|
if ( Mission:IsGroupAssigned(TaskGroup) ) and TargetsText ~= "" then
|
||||||
|
Mission:GetCommandCenter():MessageToGroup( string.format( "Task %s has change of targets:\n %s", Task:GetName(), TargetsText ), TaskGroup )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -278,7 +320,6 @@ do -- TASK_A2G_DISPATCHER
|
|||||||
Mission:GetCommandCenter():SetMenu()
|
Mission:GetCommandCenter():SetMenu()
|
||||||
|
|
||||||
local TaskText = TaskReport:Text(", ")
|
local TaskText = TaskReport:Text(", ")
|
||||||
|
|
||||||
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do
|
||||||
if ( not Mission:IsGroupAssigned(TaskGroup) ) and TaskText ~= "" then
|
if ( not Mission:IsGroupAssigned(TaskGroup) ) and TaskText ~= "" then
|
||||||
Mission:GetCommandCenter():MessageToGroup( string.format( "%s has tasks %s. Subscribe to a task using the radio menu.", Mission:GetName(), TaskText ), TaskGroup )
|
Mission:GetCommandCenter():MessageToGroup( string.format( "%s has tasks %s. Subscribe to a task using the radio menu.", Mission:GetName(), TaskText ), TaskGroup )
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user