From 8c54b7298d28b55a5586286f223cfc27c7a1c828 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Sun, 15 Sep 2019 18:36:27 +0200 Subject: [PATCH] Tuning A2A AI dispatcher to work with new sound speech system. --- .../Moose/AI/AI_A2A_Dispatcher.lua | 70 +++++++++---------- .../Moose/Tasking/DetectionManager.lua | 10 +-- 2 files changed, 41 insertions(+), 39 deletions(-) diff --git a/Moose Development/Moose/AI/AI_A2A_Dispatcher.lua b/Moose Development/Moose/AI/AI_A2A_Dispatcher.lua index eb7c8d004..cf59ef0fa 100644 --- a/Moose Development/Moose/AI/AI_A2A_Dispatcher.lua +++ b/Moose Development/Moose/AI/AI_A2A_Dispatcher.lua @@ -3100,31 +3100,31 @@ do -- AI_A2A_DISPATCHER self:SetDefenderTask( SquadronName, DefenderCAP, "CAP", Fsm ) - function Fsm:onafterTakeoff( Defender, From, Event, To ) - self:F({"CAP Birth", Defender:GetName()}) + function Fsm:onafterTakeoff( DefenderGroup, From, Event, To ) + self:F({"CAP Birth", DefenderGroup:GetName()}) --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 Squadron = Dispatcher:GetSquadronFromDefender( Defender ) + local Squadron = Dispatcher:GetSquadronFromDefender( DefenderGroup ) if Squadron then - Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " airborne. Starting Patrol." ) + Dispatcher:MessageToPlayers( DefenderName .. " Wheels up.", DefenderGroup ) Fsm:__Patrol( 2 ) -- Start Patrolling 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 Squadron = Dispatcher:GetSquadronFromDefender( Defender ) - Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " returning." ) - Dispatcher:ClearDefenderTaskTarget( Defender ) + local Squadron = Dispatcher:GetSquadronFromDefender( DefenderGroup ) + Dispatcher:MessageToPlayers( DefenderName .. " returning to base.", DefenderGroup ) + Dispatcher:ClearDefenderTaskTarget( DefenderGroup ) end --- @param #AI_A2A_DISPATCHER self @@ -3295,30 +3295,30 @@ do -- AI_A2A_DISPATCHER self:SetDefenderTask( ClosestDefenderSquadronName, DefenderGCI, "GCI", Fsm, AttackerDetection ) - function Fsm:onafterTakeoff( Defender, From, Event, To ) - self:F({"GCI Birth", Defender:GetName()}) + function Fsm:onafterTakeoff( DefenderGroup, From, Event, To ) + self:F({"GCI Birth", DefenderGroup:GetName()}) --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 Squadron = Dispatcher:GetSquadronFromDefender( Defender ) - local DefenderTarget = Dispatcher:GetDefenderTaskTarget( Defender ) + local Squadron = Dispatcher:GetSquadronFromDefender( DefenderGroup ) + local DefenderTarget = Dispatcher:GetDefenderTaskTarget( DefenderGroup ) 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 end end - function Fsm:onafterRTB( Defender, From, Event, To ) - self:F({"GCI RTB", Defender:GetName()}) - self:GetParent(self).onafterRTB( self, Defender, From, Event, To ) + function Fsm:onafterRTB( DefenderGroup, From, Event, To ) + self:F({"GCI RTB", DefenderGroup:GetName()}) + 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 Squadron = Dispatcher:GetSquadronFromDefender( Defender ) - Dispatcher:MessageToPlayers( "Squadron " .. Squadron.Name .. ", " .. DefenderName .. " returning." ) - Dispatcher:ClearDefenderTaskTarget( Defender ) + local Squadron = Dispatcher:GetSquadronFromDefender( DefenderGroup ) + Dispatcher:MessageToPlayers( DefenderName .. " returning to base.", DefenderGroup ) + Dispatcher:ClearDefenderTaskTarget( DefenderGroup ) end --- @param #AI_A2A_DISPATCHER self @@ -3335,24 +3335,24 @@ do -- AI_A2A_DISPATCHER end --- @param #AI_A2A_DISPATCHER self - function Fsm:onafterHome( Defender, From, Event, To, Action ) - self:F({"GCI Home", Defender:GetName()}) - self:GetParent(self).onafterHome( self, Defender, From, Event, To ) + function Fsm:onafterHome( DefenderGroup, From, Event, To, Action ) + self:F({"GCI Home", DefenderGroup:GetName()}) + 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 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 - Dispatcher:RemoveDefenderFromSquadron( Squadron, Defender ) - Defender:Destroy() + Dispatcher:RemoveDefenderFromSquadron( Squadron, DefenderGroup ) + DefenderGroup:Destroy() end if Dispatcher:GetSquadronLanding( Squadron.Name ) == AI_A2A_DISPATCHER.Landing.NearAirbase then - Dispatcher:RemoveDefenderFromSquadron( Squadron, Defender ) - Defender:Destroy() + Dispatcher:RemoveDefenderFromSquadron( Squadron, DefenderGroup ) + DefenderGroup:Destroy() Dispatcher:ParkDefender( Squadron ) end end diff --git a/Moose Development/Moose/Tasking/DetectionManager.lua b/Moose Development/Moose/Tasking/DetectionManager.lua index de21616bd..e40121654 100644 --- a/Moose Development/Moose/Tasking/DetectionManager.lua +++ b/Moose Development/Moose/Tasking/DetectionManager.lua @@ -312,11 +312,13 @@ do -- DETECTION MANAGER -- 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. local RadioQueue = self.RadioQueue -- Core.RadioQueue#RADIOQUEUE - local DefenderUnit = DefenderGroup:GetUnit(1) - if DefenderUnit and DefenderUnit:IsAlive() then - RadioQueue:SetSenderUnitName( DefenderUnit:GetName() ) + if RadioQueue then + local DefenderUnit = DefenderGroup:GetUnit(1) + if DefenderUnit and DefenderUnit:IsAlive() then + RadioQueue:SetSenderUnitName( DefenderUnit:GetName() ) + end + RadioQueue:Speak( Message ) end - RadioQueue:Speak( Message ) return self end