mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
SRS additions
This commit is contained in:
parent
ab42e506e8
commit
fb4f7acb16
@ -107,6 +107,7 @@ __Moose.Include( 'Ops\\Awacs.lua' )
|
||||
__Moose.Include( 'Ops\\PlayerTask.lua' )
|
||||
__Moose.Include( 'Ops\\Operation.lua' )
|
||||
__Moose.Include( 'Ops\\FlightControl.lua' )
|
||||
__Moose.Include( 'Ops\\PlayerRecce.lua' )
|
||||
|
||||
__Moose.Include( 'AI\\AI_Balancer.lua' )
|
||||
__Moose.Include( 'AI\\AI_Air.lua' )
|
||||
|
||||
@ -92,6 +92,7 @@
|
||||
-- @field Sound.SRS#MSRS msrs Moose SRS object.
|
||||
-- @field #number dTQueueCheck Time interval to check the radio queue. Default 5 sec or 90 sec if SRS is used.
|
||||
-- @field #boolean ReportmBar Report mBar/hpa even if not metric, i.e. for Mirage flights
|
||||
-- @field #boolean TransmitOnlyWithPlayers For SRS - If true, only transmit if there are alive Players.
|
||||
-- @extends Core.Fsm#FSM
|
||||
|
||||
--- *It is a very sad thing that nowadays there is so little useless information.* - Oscar Wilde
|
||||
@ -346,6 +347,7 @@ ATIS = {
|
||||
markerid = nil,
|
||||
relHumidity = nil,
|
||||
ReportmBar = false,
|
||||
TransmitOnlyWithPlayers = false,
|
||||
}
|
||||
|
||||
--- NATO alphabet.
|
||||
@ -780,6 +782,18 @@ function ATIS:SetTowerFrequencies( freqs )
|
||||
return self
|
||||
end
|
||||
|
||||
--- For SRS - Switch to only transmit if there are players on the server.
|
||||
-- @param #ATIS self
|
||||
-- @param #boolean Switch If true, only send SRS if there are alive Players.
|
||||
-- @return #ATIS self
|
||||
function ATIS:SetTransmitOnlyWithPlayers(Switch)
|
||||
self.TransmitOnlyWithPlayers = Switch
|
||||
if self.msrsQ then
|
||||
self.msrsQ:SetTransmitOnlyWithPlayers(Switch)
|
||||
end
|
||||
return self
|
||||
end
|
||||
|
||||
--- Set active runway for **landing** operations. This can be used if the automatic runway determination via the wind direction gives incorrect results.
|
||||
-- For example, use this if there are two runways with the same directions.
|
||||
-- @param #ATIS self
|
||||
@ -1195,6 +1209,7 @@ function ATIS:SetSRS(PathToSRS, Gender, Culture, Voice, Port, GoogleKey)
|
||||
self.msrs:SetLabel("ATIS")
|
||||
self.msrs:SetGoogle(GoogleKey)
|
||||
self.msrsQ = MSRSQUEUE:New("ATIS")
|
||||
self.msrsQ:SetTransmitOnlyWithPlayers(self.TransmitOnlyWithPlayers)
|
||||
if self.dTQueueCheck<=10 then
|
||||
self:SetQueueUpdateTime(90)
|
||||
end
|
||||
|
||||
@ -724,7 +724,7 @@ function PLAYERRECCE:_BuildMenus()
|
||||
local group = client:GetGroup()
|
||||
if not self.ClientMenus[playername] then
|
||||
local canlase = self.CanLase[client:GetTypeName()]
|
||||
self.ClientMenus[playername] = MENU_GROUP:New(group,self.Name or "RECCE")
|
||||
self.ClientMenus[playername] = MENU_GROUP:New(group,self.MenuName or self.Name or "RECCE")
|
||||
local txtonstation = self.OnStation[playername] and "ON" or "OFF"
|
||||
local text = string.format("Switch On-Station (%s)",txtonstation)
|
||||
local onstationmenu = MENU_GROUP_COMMAND:New(group,text,self.ClientMenus[playername],self._SwitchOnStation,self,client,group,playername)
|
||||
@ -785,6 +785,58 @@ function PLAYERRECCE:_CheckNewTargets(targetset,client,playername)
|
||||
return self
|
||||
end
|
||||
|
||||
--- [User] Set SRS TTS details - see @{Sound.SRS} for details
|
||||
-- @param #PLAYERRECCE self
|
||||
-- @param #number Frequency Frequency to be used. Can also be given as a table of multiple frequencies, e.g. 271 or {127,251}. There needs to be exactly the same number of modulations!
|
||||
-- @param #number Modulation Modulation to be used. Can also be given as a table of multiple modulations, e.g. radio.modulation.AM or {radio.modulation.FM,radio.modulation.AM}. There needs to be exactly the same number of frequencies!
|
||||
-- @param #string PathToSRS Defaults to "C:\\Program Files\\DCS-SimpleRadio-Standalone"
|
||||
-- @param #string Gender (Optional) Defaults to "male"
|
||||
-- @param #string Culture (Optional) Defaults to "en-US"
|
||||
-- @param #number Port (Optional) Defaults to 5002
|
||||
-- @param #string Voice (Optional) Use a specifc voice with the @{Sound.SRS.SetVoice} function, e.g, `:SetVoice("Microsoft Hedda Desktop")`.
|
||||
-- Note that this must be installed on your windows system. Can also be Google voice types, if you are using Google TTS.
|
||||
-- @param #number Volume (Optional) Volume - between 0.0 (silent) and 1.0 (loudest)
|
||||
-- @param #string PathToGoogleKey (Optional) Path to your google key if you want to use google TTS
|
||||
-- @return #PLAYERRECCE self
|
||||
function PLAYERRECCE:SetSRS(Frequency,Modulation,PathToSRS,Gender,Culture,Port,Voice,Volume,PathToGoogleKey)
|
||||
self:I(self.lid.."SetSRS")
|
||||
self.PathToSRS = PathToSRS or "C:\\Program Files\\DCS-SimpleRadio-Standalone" --
|
||||
self.Gender = Gender or "male" --
|
||||
self.Culture = Culture or "en-US" --
|
||||
self.Port = Port or 5002 --
|
||||
self.Voice = Voice --
|
||||
self.PathToGoogleKey = PathToGoogleKey --
|
||||
self.Volume = Volume or 1.0 --
|
||||
self.UseSRS = true
|
||||
self.Frequency = Frequency or {127,251} --
|
||||
self.BCFrequency = self.Frequency
|
||||
self.Modulation = Modulation or {radio.modulation.FM,radio.modulation.AM} --
|
||||
self.BCModulation = self.Modulation
|
||||
-- set up SRS
|
||||
self.SRS=MSRS:New(self.PathToSRS,self.Frequency,self.Modulation,self.Volume)
|
||||
self.SRS:SetCoalition(self.Coalition)
|
||||
self.SRS:SetLabel(self.MenuName or self.Name)
|
||||
self.SRS:SetGender(self.Gender)
|
||||
self.SRS:SetCulture(self.Culture)
|
||||
self.SRS:SetPort(self.Port)
|
||||
self.SRS:SetVoice(self.Voice)
|
||||
if self.PathToGoogleKey then
|
||||
self.SRS:SetGoogle(self.PathToGoogleKey)
|
||||
end
|
||||
self.SRSQueue = MSRSQUEUE:New(self.MenuName or self.Name)
|
||||
return self
|
||||
end
|
||||
|
||||
--- [User] Set the top menu name to a custom string.
|
||||
-- @param #PLAYERRECCE self
|
||||
-- @param #string Name The name to use as the top menu designation.
|
||||
-- @return #PLAYERRECCE self
|
||||
function PLAYERRECCE:SetMenuName(Name)
|
||||
self:T(self.lid.."SetMenuName: "..Name)
|
||||
self.MenuName = Name
|
||||
return self
|
||||
end
|
||||
|
||||
--- [Internal]
|
||||
-- @param #PLAYERRECCE self
|
||||
-- @param #string From
|
||||
@ -1033,10 +1085,3 @@ function PLAYERRECCE:onafterStop(From, Event, To)
|
||||
self:UnHandleEvent(EVENTS.PlayerEnterAircraft)
|
||||
return self
|
||||
end
|
||||
|
||||
--[[
|
||||
local PlayerSet = SET_CLIENT:New():FilterCoalitions("blue"):FilterActive(true):FilterCategories("helicopter"):FilterStart()
|
||||
local Attackers = SET_CLIENT:New():FilterCoalitions("blue"):FilterActive(true):FilterPrefixes({"CAS","BAI"}):FilterStart()
|
||||
local myrecce = PLAYERRECCE:New("1st Forward FACA",coalition.side.BLUE,PlayerSet)
|
||||
myrecce:SetAttackSet(Attackers)
|
||||
--]]
|
||||
@ -882,6 +882,8 @@ MSRSQUEUE = {
|
||||
-- @field #boolean isplaying If true, transmission is currently playing.
|
||||
-- @field #number Tplay Mission time (abs) in seconds when the transmission should be played.
|
||||
-- @field #number interval Interval in seconds before next transmission.
|
||||
-- @field #boolean TransmitOnlyWithPlayers If true, only transmit if there are alive Players.
|
||||
-- @field Core.Set#SET_CLIENT PlayerSet PlayerSet created when TransmitOnlyWithPlayers == true
|
||||
|
||||
--- Create a new MSRSQUEUE object for a given radio frequency/modulation.
|
||||
-- @param #MSRSQUEUE self
|
||||
@ -932,6 +934,23 @@ function MSRSQUEUE:AddTransmission(transmission)
|
||||
return self
|
||||
end
|
||||
|
||||
--- Switch to only transmit if there are players on the server.
|
||||
-- @param #MSRSQUEUE self
|
||||
-- @param #boolean Switch If true, only send SRS if there are alive Players.
|
||||
-- @return #MSRSQUEUE self
|
||||
function MSRSQUEUE:SetTransmitOnlyWithPlayers(Switch)
|
||||
self.TransmitOnlyWithPlayers = Switch
|
||||
if Switch == false or Switch==nil then
|
||||
if self.PlayerSet then
|
||||
self.PlayerSet:FilterStop()
|
||||
end
|
||||
self.PlayerSet = nil
|
||||
else
|
||||
self.PlayerSet = SET_CLIENT:New():FilterStart()
|
||||
end
|
||||
return self
|
||||
end
|
||||
|
||||
--- Create a new transmission and add it to the radio queue.
|
||||
-- @param #MSRSQUEUE self
|
||||
-- @param #string text Text to play.
|
||||
@ -946,7 +965,13 @@ end
|
||||
-- @param #number modulation Radio modulation if other then MSRS default.
|
||||
-- @return #MSRSQUEUE.Transmission Radio transmission table.
|
||||
function MSRSQUEUE:NewTransmission(text, duration, msrs, tstart, interval, subgroups, subtitle, subduration, frequency, modulation)
|
||||
|
||||
|
||||
if self.TransmitOnlyWithPlayers then
|
||||
if self.PlayerSet and self.PlayerSet:CountAlive() == 0 then
|
||||
return self
|
||||
end
|
||||
end
|
||||
|
||||
-- Sanity checks.
|
||||
if not text then
|
||||
self:E(self.lid.."ERROR: No text specified.")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user