mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
commit
2a56da4bb3
@ -147,8 +147,8 @@
|
|||||||
-- @image Escorting.JPG
|
-- @image Escorting.JPG
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
--- @type AI_ESCORT
|
-- @type AI_ESCORT
|
||||||
-- @extends AI.AI_Formation#AI_FORMATION
|
-- @extends AI.AI_Formation#AI_FORMATION
|
||||||
|
|
||||||
|
|
||||||
@ -168,11 +168,14 @@
|
|||||||
--
|
--
|
||||||
-- -- First find the GROUP object and the CLIENT object.
|
-- -- First find the GROUP object and the CLIENT object.
|
||||||
-- local EscortUnit = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor.
|
-- local EscortUnit = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor.
|
||||||
-- local EscortGroup = GROUP:FindByName( "Group Name" ) -- The Group Name is the name of the group that will escort the Escort Client.
|
-- local EscortGroup = SET_GROUP:New():FilterPrefixes("Escort"):FilterOnce() -- The the group name of the escorts contains "Escort".
|
||||||
--
|
--
|
||||||
-- -- Now use these 2 objects to construct the new EscortPlanes object.
|
-- -- Now use these 2 objects to construct the new EscortPlanes object.
|
||||||
-- EscortPlanes = AI_ESCORT:New( EscortUnit, EscortGroup, "Desert", "Welcome to the mission. You are escorted by a plane with code name 'Desert', which can be instructed through the F10 radio menu." )
|
-- EscortPlanes = AI_ESCORT:New( EscortUnit, EscortGroup, "Desert", "Welcome to the mission. You are escorted by a plane with code name 'Desert', which can be instructed through the F10 radio menu." )
|
||||||
--
|
-- EscortPlanes:MenusAirplanes() -- create menus for airplanes
|
||||||
|
-- EscortPlanes:__Start(2)
|
||||||
|
--
|
||||||
|
--
|
||||||
-- @field #AI_ESCORT
|
-- @field #AI_ESCORT
|
||||||
AI_ESCORT = {
|
AI_ESCORT = {
|
||||||
ClassName = "AI_ESCORT",
|
ClassName = "AI_ESCORT",
|
||||||
@ -189,7 +192,7 @@ AI_ESCORT = {
|
|||||||
TaskPoints = {}
|
TaskPoints = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
--- @field Functional.Detection#DETECTION_AREAS
|
-- @field Functional.Detection#DETECTION_AREAS
|
||||||
AI_ESCORT.Detection = nil
|
AI_ESCORT.Detection = nil
|
||||||
|
|
||||||
--- MENUPARAM type
|
--- MENUPARAM type
|
||||||
@ -211,10 +214,14 @@ AI_ESCORT.Detection = nil
|
|||||||
--
|
--
|
||||||
-- -- First find the GROUP object and the CLIENT object.
|
-- -- First find the GROUP object and the CLIENT object.
|
||||||
-- local EscortUnit = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor.
|
-- local EscortUnit = CLIENT:FindByName( "Unit Name" ) -- The Unit Name is the name of the unit flagged with the skill Client in the mission editor.
|
||||||
-- local EscortGroup = GROUP:FindByName( "Group Name" ) -- The Group Name is the name of the group that will escort the Escort Client.
|
-- local EscortGroup = SET_GROUP:New():FilterPrefixes("Escort"):FilterOnce() -- The the group name of the escorts contains "Escort".
|
||||||
--
|
--
|
||||||
-- -- Now use these 2 objects to construct the new EscortPlanes object.
|
-- -- Now use these 2 objects to construct the new EscortPlanes object.
|
||||||
-- EscortPlanes = AI_ESCORT:New( EscortUnit, EscortGroup, "Desert", "Welcome to the mission. You are escorted by a plane with code name 'Desert', which can be instructed through the F10 radio menu." )
|
-- EscortPlanes = AI_ESCORT:New( EscortUnit, EscortGroup, "Desert", "Welcome to the mission. You are escorted by a plane with code name 'Desert', which can be instructed through the F10 radio menu." )
|
||||||
|
-- EscortPlanes:MenusAirplanes() -- create menus for airplanes
|
||||||
|
-- EscortPlanes:__Start(2)
|
||||||
|
--
|
||||||
|
--
|
||||||
function AI_ESCORT:New( EscortUnit, EscortGroupSet, EscortName, EscortBriefing )
|
function AI_ESCORT:New( EscortUnit, EscortGroupSet, EscortName, EscortBriefing )
|
||||||
|
|
||||||
local self = BASE:Inherit( self, AI_FORMATION:New( EscortUnit, EscortGroupSet, EscortName, EscortBriefing ) ) -- #AI_ESCORT
|
local self = BASE:Inherit( self, AI_FORMATION:New( EscortUnit, EscortGroupSet, EscortName, EscortBriefing ) ) -- #AI_ESCORT
|
||||||
@ -227,10 +234,17 @@ function AI_ESCORT:New( EscortUnit, EscortGroupSet, EscortName, EscortBriefing )
|
|||||||
self.EscortGroupSet = EscortGroupSet
|
self.EscortGroupSet = EscortGroupSet
|
||||||
|
|
||||||
self.EscortGroupSet:SetSomeIteratorLimit( 8 )
|
self.EscortGroupSet:SetSomeIteratorLimit( 8 )
|
||||||
|
|
||||||
self.EscortBriefing = EscortBriefing
|
self.EscortBriefing = EscortBriefing
|
||||||
|
|
||||||
self.Menu = {}
|
self.Menu = {}
|
||||||
|
self.Menu.HoldAtEscortPosition = self.Menu.HoldAtEscortPosition or {}
|
||||||
|
self.Menu.HoldAtLeaderPosition = self.Menu.HoldAtLeaderPosition or {}
|
||||||
|
self.Menu.Flare = self.Menu.Flare or {}
|
||||||
|
self.Menu.Smoke = self.Menu.Smoke or {}
|
||||||
|
self.Menu.Targets = self.Menu.Targets or {}
|
||||||
|
self.Menu.ROE = self.Menu.ROE or {}
|
||||||
|
self.Menu.ROT = self.Menu.ROT or {}
|
||||||
|
|
||||||
-- if not EscortBriefing then
|
-- if not EscortBriefing then
|
||||||
-- EscortGroup:MessageToClient( EscortGroup:GetCategoryName() .. " '" .. EscortName .. "' (" .. EscortGroup:GetCallsign() .. ") reporting! " ..
|
-- EscortGroup:MessageToClient( EscortGroup:GetCategoryName() .. " '" .. EscortName .. "' (" .. EscortGroup:GetCallsign() .. ") reporting! " ..
|
||||||
@ -250,7 +264,7 @@ function AI_ESCORT:New( EscortUnit, EscortGroupSet, EscortName, EscortBriefing )
|
|||||||
|
|
||||||
|
|
||||||
EscortGroupSet:ForEachGroup(
|
EscortGroupSet:ForEachGroup(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
-- Set EscortGroup known at EscortUnit.
|
-- Set EscortGroup known at EscortUnit.
|
||||||
if not self.PlayerUnit._EscortGroups then
|
if not self.PlayerUnit._EscortGroups then
|
||||||
@ -325,14 +339,14 @@ function AI_ESCORT:_InitEscortRoute( EscortGroup )
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- @param #AI_ESCORT self
|
-- @param #AI_ESCORT self
|
||||||
-- @param Core.Set#SET_GROUP EscortGroupSet
|
-- @param Core.Set#SET_GROUP EscortGroupSet
|
||||||
function AI_ESCORT:onafterStart( EscortGroupSet )
|
function AI_ESCORT:onafterStart( EscortGroupSet )
|
||||||
|
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
EscortGroupSet:ForEachGroup(
|
EscortGroupSet:ForEachGroup(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
EscortGroup:WayPointInitialize()
|
EscortGroup:WayPointInitialize()
|
||||||
|
|
||||||
@ -370,7 +384,7 @@ function AI_ESCORT:onafterStart( EscortGroupSet )
|
|||||||
self:_InitFlightMenus()
|
self:_InitFlightMenus()
|
||||||
|
|
||||||
self.EscortGroupSet:ForSomeGroupAlive(
|
self.EscortGroupSet:ForSomeGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
|
|
||||||
self:_InitEscortMenus( EscortGroup )
|
self:_InitEscortMenus( EscortGroup )
|
||||||
@ -378,7 +392,7 @@ function AI_ESCORT:onafterStart( EscortGroupSet )
|
|||||||
|
|
||||||
self:SetFlightModeFormation( EscortGroup )
|
self:SetFlightModeFormation( EscortGroup )
|
||||||
|
|
||||||
--- @param #AI_ESCORT self
|
-- @param #AI_ESCORT self
|
||||||
-- @param Core.Event#EVENTDATA EventData
|
-- @param Core.Event#EVENTDATA EventData
|
||||||
function EscortGroup:OnEventDeadOrCrash( EventData )
|
function EscortGroup:OnEventDeadOrCrash( EventData )
|
||||||
self:F( { "EventDead", EventData } )
|
self:F( { "EventDead", EventData } )
|
||||||
@ -394,14 +408,14 @@ function AI_ESCORT:onafterStart( EscortGroupSet )
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- @param #AI_ESCORT self
|
-- @param #AI_ESCORT self
|
||||||
-- @param Core.Set#SET_GROUP EscortGroupSet
|
-- @param Core.Set#SET_GROUP EscortGroupSet
|
||||||
function AI_ESCORT:onafterStop( EscortGroupSet )
|
function AI_ESCORT:onafterStop( EscortGroupSet )
|
||||||
|
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
EscortGroupSet:ForEachGroup(
|
EscortGroupSet:ForEachGroup(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
EscortGroup:WayPointInitialize()
|
EscortGroup:WayPointInitialize()
|
||||||
|
|
||||||
@ -550,7 +564,7 @@ function AI_ESCORT:SetFlightMenuFormation( Formation )
|
|||||||
local MenuFlightFormationID = MENU_GROUP_COMMAND:New( self.PlayerGroup, Formation, FlightMenuFormation,
|
local MenuFlightFormationID = MENU_GROUP_COMMAND:New( self.PlayerGroup, Formation, FlightMenuFormation,
|
||||||
function ( self, Formation, ... )
|
function ( self, Formation, ... )
|
||||||
self.EscortGroupSet:ForSomeGroupAlive(
|
self.EscortGroupSet:ForSomeGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup, self, Formation, Arguments )
|
function( EscortGroup, self, Formation, Arguments )
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
self:E({FormationID=FormationID})
|
self:E({FormationID=FormationID})
|
||||||
@ -764,7 +778,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetFlightMenuHoldAtEscortPosition()
|
function AI_ESCORT:SetFlightMenuHoldAtEscortPosition()
|
||||||
|
|
||||||
for _, MenuHoldAtEscortPosition in pairs( self.Menu.HoldAtEscortPosition ) do
|
for _, MenuHoldAtEscortPosition in pairs( self.Menu.HoldAtEscortPosition or {} ) do
|
||||||
local FlightMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", self.FlightMenu )
|
local FlightMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", self.FlightMenu )
|
||||||
|
|
||||||
local FlightMenuHoldPosition = MENU_GROUP_COMMAND
|
local FlightMenuHoldPosition = MENU_GROUP_COMMAND
|
||||||
@ -785,7 +799,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetEscortMenuHoldAtEscortPosition( EscortGroup )
|
function AI_ESCORT:SetEscortMenuHoldAtEscortPosition( EscortGroup )
|
||||||
|
|
||||||
for _, HoldAtEscortPosition in pairs( self.Menu.HoldAtEscortPosition ) do
|
for _, HoldAtEscortPosition in pairs( self.Menu.HoldAtEscortPosition or {}) do
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
local EscortGroupName = EscortGroup:GetName()
|
local EscortGroupName = EscortGroup:GetName()
|
||||||
local EscortMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", EscortGroup.EscortMenu )
|
local EscortMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", EscortGroup.EscortMenu )
|
||||||
@ -853,7 +867,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetFlightMenuHoldAtLeaderPosition()
|
function AI_ESCORT:SetFlightMenuHoldAtLeaderPosition()
|
||||||
|
|
||||||
for _, MenuHoldAtLeaderPosition in pairs( self.Menu.HoldAtLeaderPosition ) do
|
for _, MenuHoldAtLeaderPosition in pairs( self.Menu.HoldAtLeaderPosition or {}) do
|
||||||
local FlightMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", self.FlightMenu )
|
local FlightMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", self.FlightMenu )
|
||||||
|
|
||||||
local FlightMenuHoldAtLeaderPosition = MENU_GROUP_COMMAND
|
local FlightMenuHoldAtLeaderPosition = MENU_GROUP_COMMAND
|
||||||
@ -874,7 +888,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetEscortMenuHoldAtLeaderPosition( EscortGroup )
|
function AI_ESCORT:SetEscortMenuHoldAtLeaderPosition( EscortGroup )
|
||||||
|
|
||||||
for _, HoldAtLeaderPosition in pairs( self.Menu.HoldAtLeaderPosition ) do
|
for _, HoldAtLeaderPosition in pairs( self.Menu.HoldAtLeaderPosition or {}) do
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
|
|
||||||
local EscortGroupName = EscortGroup:GetName()
|
local EscortGroupName = EscortGroup:GetName()
|
||||||
@ -999,7 +1013,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetFlightMenuFlare()
|
function AI_ESCORT:SetFlightMenuFlare()
|
||||||
|
|
||||||
for _, MenuFlare in pairs( self.Menu.Flare) do
|
for _, MenuFlare in pairs( self.Menu.Flare or {}) do
|
||||||
local FlightMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", self.FlightMenu )
|
local FlightMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", self.FlightMenu )
|
||||||
local FlightMenuFlare = MENU_GROUP:New( self.PlayerGroup, MenuFlare.MenuText, FlightMenuReportNavigation )
|
local FlightMenuFlare = MENU_GROUP:New( self.PlayerGroup, MenuFlare.MenuText, FlightMenuReportNavigation )
|
||||||
|
|
||||||
@ -1014,7 +1028,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetEscortMenuFlare( EscortGroup )
|
function AI_ESCORT:SetEscortMenuFlare( EscortGroup )
|
||||||
|
|
||||||
for _, MenuFlare in pairs( self.Menu.Flare) do
|
for _, MenuFlare in pairs( self.Menu.Flare or {}) do
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
|
|
||||||
local EscortGroupName = EscortGroup:GetName()
|
local EscortGroupName = EscortGroup:GetName()
|
||||||
@ -1059,7 +1073,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetFlightMenuSmoke()
|
function AI_ESCORT:SetFlightMenuSmoke()
|
||||||
|
|
||||||
for _, MenuSmoke in pairs( self.Menu.Smoke) do
|
for _, MenuSmoke in pairs( self.Menu.Smoke or {}) do
|
||||||
local FlightMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", self.FlightMenu )
|
local FlightMenuReportNavigation = MENU_GROUP:New( self.PlayerGroup, "Navigation", self.FlightMenu )
|
||||||
local FlightMenuSmoke = MENU_GROUP:New( self.PlayerGroup, MenuSmoke.MenuText, FlightMenuReportNavigation )
|
local FlightMenuSmoke = MENU_GROUP:New( self.PlayerGroup, MenuSmoke.MenuText, FlightMenuReportNavigation )
|
||||||
|
|
||||||
@ -1076,7 +1090,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetEscortMenuSmoke( EscortGroup )
|
function AI_ESCORT:SetEscortMenuSmoke( EscortGroup )
|
||||||
|
|
||||||
for _, MenuSmoke in pairs( self.Menu.Smoke) do
|
for _, MenuSmoke in pairs( self.Menu.Smoke or {}) do
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
|
|
||||||
local EscortGroupName = EscortGroup:GetName()
|
local EscortGroupName = EscortGroup:GetName()
|
||||||
@ -1169,7 +1183,7 @@ function AI_ESCORT:SetFlightMenuTargets()
|
|||||||
local FlightMenuAttackNearbyAir = MENU_GROUP_COMMAND:New( self.PlayerGroup, "Attack nearest airborne targets", self.FlightMenuAttack, AI_ESCORT._FlightAttackNearestTarget, self, self.__Enum.ReportType.Air ):SetTag( "Attack" )
|
local FlightMenuAttackNearbyAir = MENU_GROUP_COMMAND:New( self.PlayerGroup, "Attack nearest airborne targets", self.FlightMenuAttack, AI_ESCORT._FlightAttackNearestTarget, self, self.__Enum.ReportType.Air ):SetTag( "Attack" )
|
||||||
local FlightMenuAttackNearbyGround = MENU_GROUP_COMMAND:New( self.PlayerGroup, "Attack nearest ground targets", self.FlightMenuAttack, AI_ESCORT._FlightAttackNearestTarget, self, self.__Enum.ReportType.Ground ):SetTag( "Attack" )
|
local FlightMenuAttackNearbyGround = MENU_GROUP_COMMAND:New( self.PlayerGroup, "Attack nearest ground targets", self.FlightMenuAttack, AI_ESCORT._FlightAttackNearestTarget, self, self.__Enum.ReportType.Ground ):SetTag( "Attack" )
|
||||||
|
|
||||||
for _, MenuTargets in pairs( self.Menu.Targets) do
|
for _, MenuTargets in pairs( self.Menu.Targets or {}) do
|
||||||
MenuTargets.FlightReportTargetsScheduler = SCHEDULER:New( self, self._FlightReportTargetsScheduler, {}, MenuTargets.Interval, MenuTargets.Interval )
|
MenuTargets.FlightReportTargetsScheduler = SCHEDULER:New( self, self._FlightReportTargetsScheduler, {}, MenuTargets.Interval, MenuTargets.Interval )
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1179,7 +1193,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetEscortMenuTargets( EscortGroup )
|
function AI_ESCORT:SetEscortMenuTargets( EscortGroup )
|
||||||
|
|
||||||
for _, MenuTargets in pairs( self.Menu.Targets) do
|
for _, MenuTargets in pairs( self.Menu.Targets or {} or {}) do
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
local EscortGroupName = EscortGroup:GetName()
|
local EscortGroupName = EscortGroup:GetName()
|
||||||
--local EscortMenuReportTargets = MENU_GROUP:New( self.PlayerGroup, "Report targets", EscortGroup.EscortMenu )
|
--local EscortMenuReportTargets = MENU_GROUP:New( self.PlayerGroup, "Report targets", EscortGroup.EscortMenu )
|
||||||
@ -1231,7 +1245,7 @@ function AI_ESCORT:MenuAssistedAttack()
|
|||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
self.EscortGroupSet:ForSomeGroupAlive(
|
self.EscortGroupSet:ForSomeGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
if not EscortGroup:IsAir() then
|
if not EscortGroup:IsAir() then
|
||||||
-- Request assistance from other escorts.
|
-- Request assistance from other escorts.
|
||||||
@ -1246,7 +1260,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetFlightMenuROE()
|
function AI_ESCORT:SetFlightMenuROE()
|
||||||
|
|
||||||
for _, MenuROE in pairs( self.Menu.ROE) do
|
for _, MenuROE in pairs( self.Menu.ROE or {}) do
|
||||||
local FlightMenuROE = MENU_GROUP:New( self.PlayerGroup, "Rule Of Engagement", self.FlightMenu )
|
local FlightMenuROE = MENU_GROUP:New( self.PlayerGroup, "Rule Of Engagement", self.FlightMenu )
|
||||||
|
|
||||||
local FlightMenuROEHoldFire = MENU_GROUP_COMMAND:New( self.PlayerGroup, "Hold fire", FlightMenuROE, AI_ESCORT._FlightROEHoldFire, self, "Holding weapons!" )
|
local FlightMenuROEHoldFire = MENU_GROUP_COMMAND:New( self.PlayerGroup, "Hold fire", FlightMenuROE, AI_ESCORT._FlightROEHoldFire, self, "Holding weapons!" )
|
||||||
@ -1261,7 +1275,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetEscortMenuROE( EscortGroup )
|
function AI_ESCORT:SetEscortMenuROE( EscortGroup )
|
||||||
|
|
||||||
for _, MenuROE in pairs( self.Menu.ROE) do
|
for _, MenuROE in pairs( self.Menu.ROE or {}) do
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
|
|
||||||
local EscortGroupName = EscortGroup:GetName()
|
local EscortGroupName = EscortGroup:GetName()
|
||||||
@ -1302,7 +1316,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetFlightMenuROT()
|
function AI_ESCORT:SetFlightMenuROT()
|
||||||
|
|
||||||
for _, MenuROT in pairs( self.Menu.ROT) do
|
for _, MenuROT in pairs( self.Menu.ROT or {}) do
|
||||||
local FlightMenuROT = MENU_GROUP:New( self.PlayerGroup, "Reaction On Threat", self.FlightMenu )
|
local FlightMenuROT = MENU_GROUP:New( self.PlayerGroup, "Reaction On Threat", self.FlightMenu )
|
||||||
|
|
||||||
local FlightMenuROTNoReaction = MENU_GROUP_COMMAND:New( self.PlayerGroup, "Fight until death", FlightMenuROT, AI_ESCORT._FlightROTNoReaction, self, "Fighting until death!" )
|
local FlightMenuROTNoReaction = MENU_GROUP_COMMAND:New( self.PlayerGroup, "Fight until death", FlightMenuROT, AI_ESCORT._FlightROTNoReaction, self, "Fighting until death!" )
|
||||||
@ -1317,7 +1331,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:SetEscortMenuROT( EscortGroup )
|
function AI_ESCORT:SetEscortMenuROT( EscortGroup )
|
||||||
|
|
||||||
for _, MenuROT in pairs( self.Menu.ROT) do
|
for _, MenuROT in pairs( self.Menu.ROT or {}) do
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
|
|
||||||
local EscortGroupName = EscortGroup:GetName()
|
local EscortGroupName = EscortGroup:GetName()
|
||||||
@ -1375,7 +1389,7 @@ function AI_ESCORT:SetEscortMenuResumeMission( EscortGroup )
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- @param #AI_ESCORT self
|
-- @param #AI_ESCORT self
|
||||||
-- @param Wrapper.Group#GROUP OrbitGroup
|
-- @param Wrapper.Group#GROUP OrbitGroup
|
||||||
-- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
-- @param #number OrbitHeight
|
-- @param #number OrbitHeight
|
||||||
@ -1419,7 +1433,7 @@ function AI_ESCORT:_HoldPosition( OrbitGroup, EscortGroup, OrbitHeight, OrbitSec
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- @param #AI_ESCORT self
|
-- @param #AI_ESCORT self
|
||||||
-- @param Wrapper.Group#GROUP OrbitGroup
|
-- @param Wrapper.Group#GROUP OrbitGroup
|
||||||
-- @param #number OrbitHeight
|
-- @param #number OrbitHeight
|
||||||
-- @param #number OrbitSeconds
|
-- @param #number OrbitSeconds
|
||||||
@ -1428,7 +1442,7 @@ function AI_ESCORT:_FlightHoldPosition( OrbitGroup, OrbitHeight, OrbitSeconds )
|
|||||||
local EscortUnit = self.PlayerUnit
|
local EscortUnit = self.PlayerUnit
|
||||||
|
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup, OrbitGroup )
|
function( EscortGroup, OrbitGroup )
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
if OrbitGroup == nil then
|
if OrbitGroup == nil then
|
||||||
@ -1456,7 +1470,7 @@ end
|
|||||||
function AI_ESCORT:_FlightJoinUp()
|
function AI_ESCORT:_FlightJoinUp()
|
||||||
|
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
self:_JoinUp( EscortGroup )
|
self:_JoinUp( EscortGroup )
|
||||||
@ -1483,7 +1497,7 @@ end
|
|||||||
function AI_ESCORT:_FlightFormationTrail( XStart, XSpace, YStart )
|
function AI_ESCORT:_FlightFormationTrail( XStart, XSpace, YStart )
|
||||||
|
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
self:_EscortFormationTrail( EscortGroup, XStart, XSpace, YStart )
|
self:_EscortFormationTrail( EscortGroup, XStart, XSpace, YStart )
|
||||||
@ -1510,7 +1524,7 @@ end
|
|||||||
function AI_ESCORT:_FlightFormationStack( XStart, XSpace, YStart, YSpace )
|
function AI_ESCORT:_FlightFormationStack( XStart, XSpace, YStart, YSpace )
|
||||||
|
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
self:_EscortFormationStack( EscortGroup, XStart, XSpace, YStart, YSpace )
|
self:_EscortFormationStack( EscortGroup, XStart, XSpace, YStart, YSpace )
|
||||||
@ -1533,7 +1547,7 @@ end
|
|||||||
function AI_ESCORT:_FlightFlare( Color, Message )
|
function AI_ESCORT:_FlightFlare( Color, Message )
|
||||||
|
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
self:_Flare( EscortGroup, Color, Message )
|
self:_Flare( EscortGroup, Color, Message )
|
||||||
@ -1556,7 +1570,7 @@ end
|
|||||||
function AI_ESCORT:_FlightSmoke( Color, Message )
|
function AI_ESCORT:_FlightSmoke( Color, Message )
|
||||||
|
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
self:_Smoke( EscortGroup, Color, Message )
|
self:_Smoke( EscortGroup, Color, Message )
|
||||||
@ -1587,7 +1601,7 @@ end
|
|||||||
function AI_ESCORT:_FlightSwitchReportNearbyTargets( ReportTargets )
|
function AI_ESCORT:_FlightSwitchReportNearbyTargets( ReportTargets )
|
||||||
|
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
self:_EscortSwitchReportNearbyTargets( EscortGroup, ReportTargets )
|
self:_EscortSwitchReportNearbyTargets( EscortGroup, ReportTargets )
|
||||||
@ -1679,7 +1693,7 @@ function AI_ESCORT:_ScanTargets( ScanDuration )
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
-- @param #AI_ESCORT self
|
-- @param #AI_ESCORT self
|
||||||
function AI_ESCORT.___Resume( EscortGroup, self )
|
function AI_ESCORT.___Resume( EscortGroup, self )
|
||||||
|
|
||||||
@ -1701,7 +1715,7 @@ function AI_ESCORT.___Resume( EscortGroup, self )
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- @param #AI_ESCORT self
|
-- @param #AI_ESCORT self
|
||||||
-- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
-- @param #number WayPoint
|
-- @param #number WayPoint
|
||||||
function AI_ESCORT:_ResumeMission( EscortGroup, WayPoint )
|
function AI_ESCORT:_ResumeMission( EscortGroup, WayPoint )
|
||||||
@ -1723,7 +1737,7 @@ function AI_ESCORT:_ResumeMission( EscortGroup, WayPoint )
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- @param #AI_ESCORT self
|
-- @param #AI_ESCORT self
|
||||||
-- @param Wrapper.Group#GROUP EscortGroup The escort group that will attack the detected item.
|
-- @param Wrapper.Group#GROUP EscortGroup The escort group that will attack the detected item.
|
||||||
-- @param Functional.Detection#DETECTION_BASE.DetectedItem DetectedItem
|
-- @param Functional.Detection#DETECTION_BASE.DetectedItem DetectedItem
|
||||||
function AI_ESCORT:_AttackTarget( EscortGroup, DetectedItem )
|
function AI_ESCORT:_AttackTarget( EscortGroup, DetectedItem )
|
||||||
@ -1743,7 +1757,7 @@ function AI_ESCORT:_AttackTarget( EscortGroup, DetectedItem )
|
|||||||
local AttackUnitTasks = {}
|
local AttackUnitTasks = {}
|
||||||
|
|
||||||
DetectedSet:ForEachUnit(
|
DetectedSet:ForEachUnit(
|
||||||
--- @param Wrapper.Unit#UNIT DetectedUnit
|
-- @param Wrapper.Unit#UNIT DetectedUnit
|
||||||
function( DetectedUnit, Tasks )
|
function( DetectedUnit, Tasks )
|
||||||
if DetectedUnit:IsAlive() then
|
if DetectedUnit:IsAlive() then
|
||||||
AttackUnitTasks[#AttackUnitTasks+1] = EscortGroup:TaskAttackUnit( DetectedUnit )
|
AttackUnitTasks[#AttackUnitTasks+1] = EscortGroup:TaskAttackUnit( DetectedUnit )
|
||||||
@ -1767,7 +1781,7 @@ function AI_ESCORT:_AttackTarget( EscortGroup, DetectedItem )
|
|||||||
local Tasks = {}
|
local Tasks = {}
|
||||||
|
|
||||||
DetectedSet:ForEachUnit(
|
DetectedSet:ForEachUnit(
|
||||||
--- @param Wrapper.Unit#UNIT DetectedUnit
|
-- @param Wrapper.Unit#UNIT DetectedUnit
|
||||||
function( DetectedUnit, Tasks )
|
function( DetectedUnit, Tasks )
|
||||||
if DetectedUnit:IsAlive() then
|
if DetectedUnit:IsAlive() then
|
||||||
Tasks[#Tasks+1] = EscortGroup:TaskFireAtPoint( DetectedUnit:GetVec2(), 50 )
|
Tasks[#Tasks+1] = EscortGroup:TaskFireAtPoint( DetectedUnit:GetVec2(), 50 )
|
||||||
@ -1795,7 +1809,7 @@ end
|
|||||||
function AI_ESCORT:_FlightAttackTarget( DetectedItem )
|
function AI_ESCORT:_FlightAttackTarget( DetectedItem )
|
||||||
|
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Core.Group#GROUP EscortGroup
|
-- @param Core.Group#GROUP EscortGroup
|
||||||
function( EscortGroup, DetectedItem )
|
function( EscortGroup, DetectedItem )
|
||||||
if EscortGroup:IsAir() then
|
if EscortGroup:IsAir() then
|
||||||
self:_AttackTarget( EscortGroup, DetectedItem )
|
self:_AttackTarget( EscortGroup, DetectedItem )
|
||||||
@ -1842,7 +1856,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
--- @param #AI_ESCORT self
|
-- @param #AI_ESCORT self
|
||||||
-- @param Wrapper.Group#GROUP EscortGroup The escort group that will attack the detected item.
|
-- @param Wrapper.Group#GROUP EscortGroup The escort group that will attack the detected item.
|
||||||
-- @param Functional.Detection#DETECTION_BASE.DetectedItem DetectedItem
|
-- @param Functional.Detection#DETECTION_BASE.DetectedItem DetectedItem
|
||||||
function AI_ESCORT:_AssistTarget( EscortGroup, DetectedItem )
|
function AI_ESCORT:_AssistTarget( EscortGroup, DetectedItem )
|
||||||
@ -1854,7 +1868,7 @@ function AI_ESCORT:_AssistTarget( EscortGroup, DetectedItem )
|
|||||||
local Tasks = {}
|
local Tasks = {}
|
||||||
|
|
||||||
DetectedSet:ForEachUnit(
|
DetectedSet:ForEachUnit(
|
||||||
--- @param Wrapper.Unit#UNIT DetectedUnit
|
-- @param Wrapper.Unit#UNIT DetectedUnit
|
||||||
function( DetectedUnit, Tasks )
|
function( DetectedUnit, Tasks )
|
||||||
if DetectedUnit:IsAlive() then
|
if DetectedUnit:IsAlive() then
|
||||||
Tasks[#Tasks+1] = EscortGroup:TaskFireAtPoint( DetectedUnit:GetVec2(), 50 )
|
Tasks[#Tasks+1] = EscortGroup:TaskFireAtPoint( DetectedUnit:GetVec2(), 50 )
|
||||||
@ -1881,7 +1895,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:_FlightROEHoldFire( EscortROEMessage )
|
function AI_ESCORT:_FlightROEHoldFire( EscortROEMessage )
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
self:_ROE( EscortGroup, EscortGroup.OptionROEHoldFire, EscortROEMessage )
|
self:_ROE( EscortGroup, EscortGroup.OptionROEHoldFire, EscortROEMessage )
|
||||||
end
|
end
|
||||||
@ -1890,7 +1904,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:_FlightROEOpenFire( EscortROEMessage )
|
function AI_ESCORT:_FlightROEOpenFire( EscortROEMessage )
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
self:_ROE( EscortGroup, EscortGroup.OptionROEOpenFire, EscortROEMessage )
|
self:_ROE( EscortGroup, EscortGroup.OptionROEOpenFire, EscortROEMessage )
|
||||||
end
|
end
|
||||||
@ -1899,7 +1913,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:_FlightROEReturnFire( EscortROEMessage )
|
function AI_ESCORT:_FlightROEReturnFire( EscortROEMessage )
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
self:_ROE( EscortGroup, EscortGroup.OptionROEReturnFire, EscortROEMessage )
|
self:_ROE( EscortGroup, EscortGroup.OptionROEReturnFire, EscortROEMessage )
|
||||||
end
|
end
|
||||||
@ -1908,7 +1922,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:_FlightROEWeaponFree( EscortROEMessage )
|
function AI_ESCORT:_FlightROEWeaponFree( EscortROEMessage )
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
self:_ROE( EscortGroup, EscortGroup.OptionROEWeaponFree, EscortROEMessage )
|
self:_ROE( EscortGroup, EscortGroup.OptionROEWeaponFree, EscortROEMessage )
|
||||||
end
|
end
|
||||||
@ -1924,7 +1938,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:_FlightROTNoReaction( EscortROTMessage )
|
function AI_ESCORT:_FlightROTNoReaction( EscortROTMessage )
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
self:_ROT( EscortGroup, EscortGroup.OptionROTNoReaction, EscortROTMessage )
|
self:_ROT( EscortGroup, EscortGroup.OptionROTNoReaction, EscortROTMessage )
|
||||||
end
|
end
|
||||||
@ -1933,7 +1947,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:_FlightROTPassiveDefense( EscortROTMessage )
|
function AI_ESCORT:_FlightROTPassiveDefense( EscortROTMessage )
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
self:_ROT( EscortGroup, EscortGroup.OptionROTPassiveDefense, EscortROTMessage )
|
self:_ROT( EscortGroup, EscortGroup.OptionROTPassiveDefense, EscortROTMessage )
|
||||||
end
|
end
|
||||||
@ -1942,7 +1956,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:_FlightROTEvadeFire( EscortROTMessage )
|
function AI_ESCORT:_FlightROTEvadeFire( EscortROTMessage )
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
self:_ROT( EscortGroup, EscortGroup.OptionROTEvadeFire, EscortROTMessage )
|
self:_ROT( EscortGroup, EscortGroup.OptionROTEvadeFire, EscortROTMessage )
|
||||||
end
|
end
|
||||||
@ -1951,7 +1965,7 @@ end
|
|||||||
|
|
||||||
function AI_ESCORT:_FlightROTVertical( EscortROTMessage )
|
function AI_ESCORT:_FlightROTVertical( EscortROTMessage )
|
||||||
self.EscortGroupSet:ForEachGroupAlive(
|
self.EscortGroupSet:ForEachGroupAlive(
|
||||||
--- @param Wrapper.Group#GROUP EscortGroup
|
-- @param Wrapper.Group#GROUP EscortGroup
|
||||||
function( EscortGroup )
|
function( EscortGroup )
|
||||||
self:_ROT( EscortGroup, EscortGroup.OptionROTVertical, EscortROTMessage )
|
self:_ROT( EscortGroup, EscortGroup.OptionROTVertical, EscortROTMessage )
|
||||||
end
|
end
|
||||||
@ -2178,5 +2192,3 @@ function AI_ESCORT:_FlightReportTargetsScheduler()
|
|||||||
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user