mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
This pull request enhances Airboss class functionality to provide with the
1) Inbound calls both from Players requesting marshal and AI sent to marshal: "Marshal, [MODEX], marking mom's [BEARING] for [DISTANCE], angels [HEIGHT], state [FUEL_STATE] 2) Commencing call and voiceover (both AI and Players) For that, two boolean fields have been added to Airboss class to trigger or not extra voice overs: xtVoiceOvers xtVoiceOversAI These fields can be modified trough methods: AIRBOSS:SetExtraVoiceOvers(true/false) AIRBOSS:SetExtraVoiceOversAI(true/false) Note. At the moment both methods initialize to "false" at Airboss:NEW, so in case you want to have this functionality activated, you need to call the methods with (true) when initializing your Airboss class. The new methods in charge of creating the radio calls are AIRBOSS:_MarshalAI: for AI flights send to marshal AIRBOSS:_RequestMarshal: for player flighs requesting marshal from F10 menu 2) AIRBOSS:_CommencingCall(unit, modex), which is called from AIRBOSS:_ClearForLanding: for AI flights cleared for landing AIRBOSS:_RequestCommence: for player flights requesting commencing from F10 menu (disregarding if the player call is right or not) This enhacement of the Airboss class requires 5 new sound files (.ogg) to be included to folder "\Airboss Soundfiles" in your .miz file: PILOT-Angels.ogg PILOT-For.ogg PILOT-MarkingMoms.ogg PILOT-Marshal.ogg PILOT-State.ogg PILOT-Commencing.ogg
This commit is contained in:
parent
eab28abc86
commit
397ab77105
@ -1201,8 +1201,8 @@ AIRBOSS = {
|
|||||||
NmaxSection = nil,
|
NmaxSection = nil,
|
||||||
NmaxStack = nil,
|
NmaxStack = nil,
|
||||||
handleai = nil,
|
handleai = nil,
|
||||||
inbRadioCall = nil,
|
xtVoiceOvers = nil,
|
||||||
inbRadioCallAI = nil,
|
xtVoiceOversAI = nil,
|
||||||
tanker = nil,
|
tanker = nil,
|
||||||
Corientation = nil,
|
Corientation = nil,
|
||||||
Corientlast = nil,
|
Corientlast = nil,
|
||||||
@ -1902,11 +1902,11 @@ function AIRBOSS:New(carriername, alias)
|
|||||||
-- Set AI handling On.
|
-- Set AI handling On.
|
||||||
self:SetHandleAION()
|
self:SetHandleAION()
|
||||||
|
|
||||||
-- No Inbound messages from Player by default
|
-- No extra voiceover/calls from player by default
|
||||||
self:SetInboundMessagesPlayer(false)
|
self:SetExtraVoiceOvers(false)
|
||||||
|
|
||||||
-- No Inbound messages from AI by default
|
-- No extra voiceover/calls from AI by default
|
||||||
self:SetInboundMessagesAI(false)
|
self:SetExtraVoiceOversAI(false)
|
||||||
|
|
||||||
-- Airboss is a nice guy.
|
-- Airboss is a nice guy.
|
||||||
self:SetAirbossNiceGuy()
|
self:SetAirbossNiceGuy()
|
||||||
@ -3223,21 +3223,21 @@ function AIRBOSS:SetHandleAION()
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Will simulate the inbound call from the player when requesteing marshal
|
--- Will play the inbound calls, commencing, initial, etc. from the player when requesteing marshal
|
||||||
-- @param #AIRBOSS self
|
-- @param #AIRBOSS self
|
||||||
-- @param #AIRBOSS status Boolean to activate (true) / deactivate (false) the radio inbound calls (default is ON)
|
-- @param #AIRBOSS status Boolean to activate (true) / deactivate (false) the radio inbound calls (default is ON)
|
||||||
-- @return #AIRBOSS self
|
-- @return #AIRBOSS self
|
||||||
function AIRBOSS:SetInboundMessagesPlayer(status)
|
function AIRBOSS:SetExtraVoiceOvers(status)
|
||||||
self.inbRadioCall=status
|
self.xtVoiceOvers=status
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Will simulate the inbound call from the AI when sending to marshal (as if they have called for it)
|
--- Will simulate the inbound call, commencing, initial, etc from the AI when requested by Airboss
|
||||||
-- @param #AIRBOSS self
|
-- @param #AIRBOSS self
|
||||||
-- @param #AIRBOSS status Boolean to activate (true) / deactivate (false) the radio inbound calls (default is ON)
|
-- @param #AIRBOSS status Boolean to activate (true) / deactivate (false) the radio inbound calls (default is ON)
|
||||||
-- @return #AIRBOSS self
|
-- @return #AIRBOSS self
|
||||||
function AIRBOSS:SetInboundMessagesAI(status)
|
function AIRBOSS:SetExtraVoiceOversAI(status)
|
||||||
self.inbRadioCallAI=status
|
self.xtVoiceOversAI=status
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -5360,6 +5360,13 @@ function AIRBOSS:_InitVoiceOvers()
|
|||||||
subtitle="",
|
subtitle="",
|
||||||
duration=0.40,
|
duration=0.40,
|
||||||
},
|
},
|
||||||
|
COMMENCING={
|
||||||
|
file="PILOT-Commencing",
|
||||||
|
suffix="ogg",
|
||||||
|
loud=false,
|
||||||
|
subtitle="",
|
||||||
|
duration=0.45,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-------------------
|
-------------------
|
||||||
@ -6235,6 +6242,12 @@ function AIRBOSS:_ClearForLanding(flight)
|
|||||||
-- Cleared for Case X recovery.
|
-- Cleared for Case X recovery.
|
||||||
self:_MarshalCallClearedForRecovery(flight.onboard, flight.case)
|
self:_MarshalCallClearedForRecovery(flight.onboard, flight.case)
|
||||||
|
|
||||||
|
-- Voice over of the commencing simulated call from AI
|
||||||
|
if self.xtVoiceOversAI then
|
||||||
|
local leader = flight.group:GetUnits()[1]
|
||||||
|
self:_CommencingCall(leader, flight.onboard)
|
||||||
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
-- Cleared for Case X recovery.
|
-- Cleared for Case X recovery.
|
||||||
@ -6607,7 +6620,7 @@ function AIRBOSS:_MarshalAI(flight, nstack, respawn)
|
|||||||
-- Check if flight is already in Marshal queue.
|
-- Check if flight is already in Marshal queue.
|
||||||
if not self:_InQueue(self.Qmarshal,flight.group) then
|
if not self:_InQueue(self.Qmarshal,flight.group) then
|
||||||
-- Simulate inbound call
|
-- Simulate inbound call
|
||||||
if self.inbRadioCallAI then
|
if self.xtVoiceOversAI then
|
||||||
local leader = flight.group:GetUnits()[1]
|
local leader = flight.group:GetUnits()[1]
|
||||||
self:_MarshallInboundCall(leader, flight.onboard)
|
self:_MarshallInboundCall(leader, flight.onboard)
|
||||||
end
|
end
|
||||||
@ -15788,7 +15801,7 @@ function AIRBOSS:_Number2Radio(radio, number, delay, interval, pilotcall)
|
|||||||
return wait
|
return wait
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Aircraft request marshal (Inbound call).
|
--- Aircraft request marshal (Inbound call both for players and AI).
|
||||||
-- @param #AIRBOSS self
|
-- @param #AIRBOSS self
|
||||||
-- @return Wrapper.Unit#UNIT Unit of player or nil.
|
-- @return Wrapper.Unit#UNIT Unit of player or nil.
|
||||||
-- @param #string modex Tail number.
|
-- @param #string modex Tail number.
|
||||||
@ -15843,6 +15856,31 @@ function AIRBOSS:_MarshallInboundCall(unit, modex)
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Aircraft commencing call (both for players and AI).
|
||||||
|
-- @param #AIRBOSS self
|
||||||
|
-- @return Wrapper.Unit#UNIT Unit of player or nil.
|
||||||
|
-- @param #string modex Tail number.
|
||||||
|
function AIRBOSS:_CommencingCall(unit, modex)
|
||||||
|
|
||||||
|
-- Pilot: "[modex], commencing"
|
||||||
|
local text=string.format("%s, commencing", modex)
|
||||||
|
-- Debug message.
|
||||||
|
self:I(self.lid..text)
|
||||||
|
|
||||||
|
-- Create new call to display complete subtitle.
|
||||||
|
local commencingCall=self:_NewRadioCall(self.MarshalCall.CLICK, unit.UnitName:upper() , text, self.Tmessage, nil, unit.UnitName:upper())
|
||||||
|
|
||||||
|
-- Click
|
||||||
|
self:RadioTransmission(self.MarshalRadio, commencingCall)
|
||||||
|
-- Modex..
|
||||||
|
self:_Number2Radio(self.MarshalRadio, modex, nil, nil, true)
|
||||||
|
-- Commencing
|
||||||
|
self:RadioTransmission(self.MarshalRadio, self.PilotCall.COMMENCING, nil, nil, nil, nil, true)
|
||||||
|
-- CLICK!
|
||||||
|
self:RadioTransmission(self.MarshalRadio, self.MarshalRadio.CLICK, nil, nil, nil, nil, true)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
--- AI aircraft calls the ball.
|
--- AI aircraft calls the ball.
|
||||||
-- @param #AIRBOSS self
|
-- @param #AIRBOSS self
|
||||||
-- @param #string modex Tail number.
|
-- @param #string modex Tail number.
|
||||||
@ -16599,16 +16637,17 @@ function AIRBOSS:_RequestMarshal(_unitName)
|
|||||||
-- Get player unit and name.
|
-- Get player unit and name.
|
||||||
local _unit, _playername = self:_GetPlayerUnitAndName(_unitName)
|
local _unit, _playername = self:_GetPlayerUnitAndName(_unitName)
|
||||||
|
|
||||||
if self.inbRadioCall then
|
|
||||||
self:_MarshallInboundCall(_unit, "202")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Check if we have a unit which is a player.
|
-- Check if we have a unit which is a player.
|
||||||
if _unit and _playername then
|
if _unit and _playername then
|
||||||
local playerData=self.players[_playername] --#AIRBOSS.PlayerData
|
local playerData=self.players[_playername] --#AIRBOSS.PlayerData
|
||||||
|
|
||||||
if playerData then
|
if playerData then
|
||||||
|
|
||||||
|
-- Voice over of inbound call (regardless of airboss rejecting it or not)
|
||||||
|
if self.xtVoiceOvers then
|
||||||
|
self:_MarshallInboundCall(_unit, playerData.onboard)
|
||||||
|
end
|
||||||
|
|
||||||
-- Check if player is in CCA
|
-- Check if player is in CCA
|
||||||
local inCCA=playerData.unit:IsInZone(self.zoneCCA)
|
local inCCA=playerData.unit:IsInZone(self.zoneCCA)
|
||||||
|
|
||||||
@ -16857,6 +16896,11 @@ function AIRBOSS:_RequestCommence(_unitName)
|
|||||||
|
|
||||||
if playerData then
|
if playerData then
|
||||||
|
|
||||||
|
-- Voice over of Commencing call (regardless of Airboss will rejected or not)
|
||||||
|
if self.xtVoiceOvers then
|
||||||
|
self:_CommencingCall(_unit, playerData.onboard)
|
||||||
|
end
|
||||||
|
|
||||||
-- Check if unit is in CCA.
|
-- Check if unit is in CCA.
|
||||||
local text=""
|
local text=""
|
||||||
local cleared=false
|
local cleared=false
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user