Tuning A2A AI dispatcher to work with new sound speech system.

This commit is contained in:
FlightControl 2019-09-15 18:36:27 +02:00
parent b309c25619
commit 8c54b7298d
2 changed files with 41 additions and 39 deletions

View File

@ -3100,31 +3100,31 @@ do -- AI_A2A_DISPATCHER
self:SetDefenderTask( SquadronName, DefenderCAP, "CAP", Fsm ) self:SetDefenderTask( SquadronName, DefenderCAP, "CAP", Fsm )
function Fsm:onafterTakeoff( Defender, From, Event, To ) function Fsm:onafterTakeoff( DefenderGroup, From, Event, To )
self:F({"CAP Birth", Defender:GetName()}) self:F({"CAP Birth", DefenderGroup:GetName()})
--self:GetParent(self).onafterBirth( self, Defender, From, Event, To ) --self:GetParent(self).onafterBirth( self, Defender, From, Event, To )
local DefenderName = Defender:GetCallsign() local DefenderName = DefenderGroup:GetCallsign()
local Dispatcher = Fsm:GetDispatcher() -- #AI_A2A_DISPATCHER local Dispatcher = Fsm:GetDispatcher() -- #AI_A2A_DISPATCHER
local Squadron = Dispatcher:GetSquadronFromDefender( Defender ) local Squadron = Dispatcher:GetSquadronFromDefender( DefenderGroup )
if Squadron then if Squadron then
Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " airborne. Starting Patrol." ) Dispatcher:MessageToPlayers( DefenderName .. " Wheels up.", DefenderGroup )
Fsm:__Patrol( 2 ) -- Start Patrolling Fsm:__Patrol( 2 ) -- Start Patrolling
end end
end end
function Fsm:onafterRTB( Defender, From, Event, To ) function Fsm:onafterRTB( DefenderGroup, From, Event, To )
self:F({"CAP RTB", Defender:GetName()}) self:F({"CAP RTB", DefenderGroup:GetName()})
self:GetParent(self).onafterRTB( self, Defender, From, Event, To ) self:GetParent(self).onafterRTB( self, DefenderGroup, From, Event, To )
local DefenderName = Defender:GetCallsign() local DefenderName = DefenderGroup:GetCallsign()
local Dispatcher = self:GetDispatcher() -- #AI_A2A_DISPATCHER local Dispatcher = self:GetDispatcher() -- #AI_A2A_DISPATCHER
local Squadron = Dispatcher:GetSquadronFromDefender( Defender ) local Squadron = Dispatcher:GetSquadronFromDefender( DefenderGroup )
Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " returning." ) Dispatcher:MessageToPlayers( DefenderName .. " returning to base.", DefenderGroup )
Dispatcher:ClearDefenderTaskTarget( Defender ) Dispatcher:ClearDefenderTaskTarget( DefenderGroup )
end end
--- @param #AI_A2A_DISPATCHER self --- @param #AI_A2A_DISPATCHER self
@ -3295,30 +3295,30 @@ do -- AI_A2A_DISPATCHER
self:SetDefenderTask( ClosestDefenderSquadronName, DefenderGCI, "GCI", Fsm, AttackerDetection ) self:SetDefenderTask( ClosestDefenderSquadronName, DefenderGCI, "GCI", Fsm, AttackerDetection )
function Fsm:onafterTakeoff( Defender, From, Event, To ) function Fsm:onafterTakeoff( DefenderGroup, From, Event, To )
self:F({"GCI Birth", Defender:GetName()}) self:F({"GCI Birth", DefenderGroup:GetName()})
--self:GetParent(self).onafterBirth( self, Defender, From, Event, To ) --self:GetParent(self).onafterBirth( self, Defender, From, Event, To )
local DefenderName = Defender:GetCallsign() local DefenderName = DefenderGroup:GetCallsign()
local Dispatcher = Fsm:GetDispatcher() -- #AI_A2A_DISPATCHER local Dispatcher = Fsm:GetDispatcher() -- #AI_A2A_DISPATCHER
local Squadron = Dispatcher:GetSquadronFromDefender( Defender ) local Squadron = Dispatcher:GetSquadronFromDefender( DefenderGroup )
local DefenderTarget = Dispatcher:GetDefenderTaskTarget( Defender ) local DefenderTarget = Dispatcher:GetDefenderTaskTarget( DefenderGroup )
if DefenderTarget then if DefenderTarget then
Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " airborne. Engaging target!" ) Dispatcher:MessageToPlayers( DefenderName .. " wheels up.", DefenderGroup )
Fsm:__Engage( 2, DefenderTarget.Set ) -- Engage on the TargetSetUnit Fsm:__Engage( 2, DefenderTarget.Set ) -- Engage on the TargetSetUnit
end end
end end
function Fsm:onafterRTB( Defender, From, Event, To ) function Fsm:onafterRTB( DefenderGroup, From, Event, To )
self:F({"GCI RTB", Defender:GetName()}) self:F({"GCI RTB", DefenderGroup:GetName()})
self:GetParent(self).onafterRTB( self, Defender, From, Event, To ) self:GetParent(self).onafterRTB( self, DefenderGroup, From, Event, To )
local DefenderName = Defender:GetCallsign() local DefenderName = DefenderGroup:GetCallsign()
local Dispatcher = self:GetDispatcher() -- #AI_A2A_DISPATCHER local Dispatcher = self:GetDispatcher() -- #AI_A2A_DISPATCHER
local Squadron = Dispatcher:GetSquadronFromDefender( Defender ) local Squadron = Dispatcher:GetSquadronFromDefender( DefenderGroup )
Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " returning." ) Dispatcher:MessageToPlayers( DefenderName .. " returning to base.", DefenderGroup )
Dispatcher:ClearDefenderTaskTarget( Defender ) Dispatcher:ClearDefenderTaskTarget( DefenderGroup )
end end
--- @param #AI_A2A_DISPATCHER self --- @param #AI_A2A_DISPATCHER self
@ -3335,24 +3335,24 @@ do -- AI_A2A_DISPATCHER
end end
--- @param #AI_A2A_DISPATCHER self --- @param #AI_A2A_DISPATCHER self
function Fsm:onafterHome( Defender, From, Event, To, Action ) function Fsm:onafterHome( DefenderGroup, From, Event, To, Action )
self:F({"GCI Home", Defender:GetName()}) self:F({"GCI Home", DefenderGroup:GetName()})
self:GetParent(self).onafterHome( self, Defender, From, Event, To ) self:GetParent(self).onafterHome( self, DefenderGroup, From, Event, To )
local DefenderName = Defender:GetCallsign() local DefenderName = DefenderGroup:GetCallsign()
local Dispatcher = self:GetDispatcher() -- #AI_A2A_DISPATCHER local Dispatcher = self:GetDispatcher() -- #AI_A2A_DISPATCHER
local Squadron = Dispatcher:GetSquadronFromDefender( Defender ) local Squadron = Dispatcher:GetSquadronFromDefender( DefenderGroup )
Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " landing." ) Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " landing at base.", DefenderGroup )
if Action and Action == "Destroy" then if Action and Action == "Destroy" then
Dispatcher:RemoveDefenderFromSquadron( Squadron, Defender ) Dispatcher:RemoveDefenderFromSquadron( Squadron, DefenderGroup )
Defender:Destroy() DefenderGroup:Destroy()
end end
if Dispatcher:GetSquadronLanding( Squadron.Name ) == AI_A2A_DISPATCHER.Landing.NearAirbase then if Dispatcher:GetSquadronLanding( Squadron.Name ) == AI_A2A_DISPATCHER.Landing.NearAirbase then
Dispatcher:RemoveDefenderFromSquadron( Squadron, Defender ) Dispatcher:RemoveDefenderFromSquadron( Squadron, DefenderGroup )
Defender:Destroy() DefenderGroup:Destroy()
Dispatcher:ParkDefender( Squadron ) Dispatcher:ParkDefender( Squadron )
end end
end end

View File

@ -312,11 +312,13 @@ do -- DETECTION MANAGER
-- Here we handle the transmission of the voice over. -- Here we handle the transmission of the voice over.
-- If for a certain reason the Defender does not exist, we use the coordinate of the airbase to send the message from. -- If for a certain reason the Defender does not exist, we use the coordinate of the airbase to send the message from.
local RadioQueue = self.RadioQueue -- Core.RadioQueue#RADIOQUEUE local RadioQueue = self.RadioQueue -- Core.RadioQueue#RADIOQUEUE
if RadioQueue then
local DefenderUnit = DefenderGroup:GetUnit(1) local DefenderUnit = DefenderGroup:GetUnit(1)
if DefenderUnit and DefenderUnit:IsAlive() then if DefenderUnit and DefenderUnit:IsAlive() then
RadioQueue:SetSenderUnitName( DefenderUnit:GetName() ) RadioQueue:SetSenderUnitName( DefenderUnit:GetName() )
end end
RadioQueue:Speak( Message ) RadioQueue:Speak( Message )
end
return self return self
end end