From fce7b070145372a656fa2a842a78486334ac4d6e Mon Sep 17 00:00:00 2001 From: Applevangelist Date: Sat, 6 Jan 2024 18:21:35 +0100 Subject: [PATCH] Fixes for MSRS changes --- Moose Development/Moose/Core/Database.lua | 16 +++++-- Moose Development/Moose/Core/Message.lua | 58 +++++++++++++---------- Moose Development/Moose/Ops/ATIS.lua | 35 +++++++++----- 3 files changed, 69 insertions(+), 40 deletions(-) diff --git a/Moose Development/Moose/Core/Database.lua b/Moose Development/Moose/Core/Database.lua index ac290aa2f..14b99fc76 100644 --- a/Moose Development/Moose/Core/Database.lua +++ b/Moose Development/Moose/Core/Database.lua @@ -1343,9 +1343,17 @@ function DATABASE:_RegisterAirbase(airbase) -- Unique ID. local airbaseUID=airbase:GetID(true) - + + local typename = airbase:GetTypeName() + + local category = airbase.category + + if category == Airbase.Category.SHIP and typename == "FARP_SINGLE_01" then + category = Airbase.Category.HELIPAD + end + -- Debug output. - local text=string.format("Register %s: %s (UID=%d), Runways=%d, Parking=%d [", AIRBASE.CategoryName[airbase.category], tostring(DCSAirbaseName), airbaseUID, #airbase.runways, airbase.NparkingTotal) + local text=string.format("Register %s: %s (UID=%d), Runways=%d, Parking=%d [", AIRBASE.CategoryName[category], tostring(DCSAirbaseName), airbaseUID, #airbase.runways, airbase.NparkingTotal) for _,terminalType in pairs(AIRBASE.TerminalType) do if airbase.NparkingTerminal and airbase.NparkingTerminal[terminalType] then text=text..string.format("%d=%d ", terminalType, airbase.NparkingTerminal[terminalType]) @@ -1893,7 +1901,7 @@ end --- Add a flight control to the data base. -- @param #DATABASE self --- @param Ops.FlightControl#FLIGHTCONTROL flightcontrol +-- @param OPS.FlightControl#FLIGHTCONTROL flightcontrol function DATABASE:AddFlightControl(flightcontrol) self:F2( { flightcontrol } ) self.FLIGHTCONTROLS[flightcontrol.airbasename]=flightcontrol @@ -1902,7 +1910,7 @@ end --- Get a flight control object from the data base. -- @param #DATABASE self -- @param #string airbasename Name of the associated airbase. --- @return Ops.FlightControl#FLIGHTCONTROL The FLIGHTCONTROL object.s +-- @return OPS.FlightControl#FLIGHTCONTROL The FLIGHTCONTROL object.s function DATABASE:GetFlightControl(airbasename) return self.FLIGHTCONTROLS[airbasename] end diff --git a/Moose Development/Moose/Core/Message.lua b/Moose Development/Moose/Core/Message.lua index ce95f03c8..31669d458 100644 --- a/Moose Development/Moose/Core/Message.lua +++ b/Moose Development/Moose/Core/Message.lua @@ -459,14 +459,14 @@ end _MESSAGESRS = {} ---- Set up MESSAGE generally to allow Text-To-Speech via SRS and TTS functions. --- @param #string PathToSRS Path to SRS Folder, defaults to "C:\\\\Program Files\\\\DCS-SimpleRadio-Standalone". --- @param #number Port Port number of SRS, defaults to 5002. --- @param #string PathToCredentials (optional) Path to credentials file for e.g. Google. +--- Set up MESSAGE generally to allow Text-To-Speech via SRS and TTS functions. `SetMSRS()` will try to use as many attributes configured with @{Sound.SRS#MSRS.LoadConfigFile}() as possible. +-- @param #string PathToSRS (optional) Path to SRS Folder, defaults to "C:\\\\Program Files\\\\DCS-SimpleRadio-Standalone" or your configuration file setting. +-- @param #number Port Port (optional) number of SRS, defaults to 5002 or your configuration file setting. +-- @param #string PathToCredentials (optional) Path to credentials file for Google. -- @param #number Frequency Frequency in MHz. Can also be given as a #table of frequencies. -- @param #number Modulation Modulation, i.e. radio.modulation.AM or radio.modulation.FM. Can also be given as a #table of modulations. --- @param #string Gender (optional) Gender, i.e. "male" or "female", defaults to "female". --- @param #string Culture (optional) Culture, e.g. "en-US", defaults to "en-GB" +-- @param #string Gender (optional) Gender, i.e. "male" or "female", defaults to "female" or your configuration file setting. +-- @param #string Culture (optional) Culture, e.g. "en-US", defaults to "en-GB" or your configuration file setting. -- @param #string Voice (optional) Voice. Will override gender and culture settings, e.g. MSRS.Voices.Microsoft.Hazel or MSRS.Voices.Google.Standard.de_DE_Standard_D. Hint on Microsoft voices - working voices are limited to Hedda, Hazel, David, Zira and Hortense. **Must** be installed on your Desktop or Server! -- @param #number Coalition (optional) Coalition, can be coalition.side.RED, coalition.side.BLUE or coalition.side.NEUTRAL. Defaults to coalition.side.NEUTRAL. -- @param #number Volume (optional) Volume, can be between 0.0 and 1.0 (loudest). @@ -480,42 +480,50 @@ _MESSAGESRS = {} -- MESSAGE:New("Test message!",15,"SPAWN"):ToSRS() -- function MESSAGE.SetMSRS(PathToSRS,Port,PathToCredentials,Frequency,Modulation,Gender,Culture,Voice,Coalition,Volume,Label,Coordinate) - _MESSAGESRS.MSRS = MSRS:New(PathToSRS,Frequency or 243,Modulation or radio.modulation.AM) - _MESSAGESRS.frequency = Frequency - _MESSAGESRS.modulation = Modulation or radio.modulation.AM + _MESSAGESRS.PathToSRS = PathToSRS or MSRS.path or "C:\\Program Files\\DCS-SimpleRadio-Standalone" - _MESSAGESRS.MSRS:SetCoalition(Coalition or coalition.side.NEUTRAL) - _MESSAGESRS.coalition = Coalition or coalition.side.NEUTRAL + _MESSAGESRS.frequency = Frequency or MSRS.frequencies or 243 + _MESSAGESRS.modulation = Modulation or MSRS.modulations or radio.modulation.AM + _MESSAGESRS.MSRS = MSRS:New(_MESSAGESRS.PathToSRS,_MESSAGESRS.frequency, _MESSAGESRS.modulation) + + _MESSAGESRS.coalition = Coalition or MSRS.coalition or coalition.side.NEUTRAL + _MESSAGESRS.MSRS:SetCoalition(_MESSAGESRS.coalition) + _MESSAGESRS.coordinate = Coordinate - _MESSAGESRS.MSRS:SetCoordinate(Coordinate) + if Coordinate then + _MESSAGESRS.MSRS:SetCoordinate(Coordinate) + end + + _MESSAGESRS.Culture = Culture or MSRS.culture or "en-GB" _MESSAGESRS.MSRS:SetCulture(Culture) - _MESSAGESRS.Culture = Culture or "en-GB" + _MESSAGESRS.Gender = Gender or MSRS.gender or "female" _MESSAGESRS.MSRS:SetGender(Gender) - _MESSAGESRS.Gender = Gender or "female" - _MESSAGESRS.MSRS:SetProviderOptionsGoogle(PathToCredentials) - - _MESSAGESRS.MSRS:SetLabel(Label or "MESSAGE") - _MESSAGESRS.label = Label or "MESSAGE" - - _MESSAGESRS.MSRS:SetPort(Port or 5002) - _MESSAGESRS.port = Port or 5002 + if PathToCredentials then + _MESSAGESRS.MSRS:SetProviderOptionsGoogle(PathToCredentials) + end - _MESSAGESRS.volume = Volume or 1 + _MESSAGESRS.label = Label or MSRS.Label or "MESSAGE" + _MESSAGESRS.MSRS:SetLabel(Label or "MESSAGE") + + _MESSAGESRS.port = Port or MSRS.port or 5002 + _MESSAGESRS.MSRS:SetPort(Port or 5002) + + _MESSAGESRS.volume = Volume or MSRS.volume or 1 _MESSAGESRS.MSRS:SetVolume(_MESSAGESRS.volume) if Voice then _MESSAGESRS.MSRS:SetVoice(Voice) end - _MESSAGESRS.voice = Voice --or MSRS.Voices.Microsoft.Hedda + _MESSAGESRS.voice = Voice or MSRS.voice --or MSRS.Voices.Microsoft.Hedda - _MESSAGESRS.SRSQ = MSRSQUEUE:New(Label or "MESSAGE") + _MESSAGESRS.SRSQ = MSRSQUEUE:New(_MESSAGESRS.label) end ---- Sends a message via SRS. +--- Sends a message via SRS. `ToSRS()` will try to use as many attributes configured with @{Core.Message#MESSAGE.SetMSRS}() and @{Sound.SRS#MSRS.LoadConfigFile}() as possible. -- @param #MESSAGE self -- @param #number frequency (optional) Frequency in MHz. Can also be given as a #table of frequencies. Only needed if you want to override defaults set with `MESSAGE.SetMSRS()` for this one setting. -- @param #number modulation (optional) Modulation, i.e. radio.modulation.AM or radio.modulation.FM. Can also be given as a #table of modulations. Only needed if you want to override defaults set with `MESSAGE.SetMSRS()` for this one setting. diff --git a/Moose Development/Moose/Ops/ATIS.lua b/Moose Development/Moose/Ops/ATIS.lua index 064ab1880..0fcf939b5 100644 --- a/Moose Development/Moose/Ops/ATIS.lua +++ b/Moose Development/Moose/Ops/ATIS.lua @@ -1526,7 +1526,7 @@ function ATIS:MarkRunways( markall ) end end ---- Use SRS Simple-Text-To-Speech for transmissions. No sound files necessary. +--- Use SRS Simple-Text-To-Speech for transmissions. No sound files necessary.`SetSRS()` will try to use as many attributes configured with @{Sound.SRS#MSRS.LoadConfigFile}() as possible. -- @param #ATIS self -- @param #string PathToSRS Path to SRS directory (only necessary if SRS exe backend is used). -- @param #string Gender Gender: "male" or "female" (default). @@ -1536,25 +1536,38 @@ end -- @param #string GoogleKey Path to Google JSON-Key (SRS exe backend) or Google API key (DCS-gRPC backend). -- @return #ATIS self function ATIS:SetSRS(PathToSRS, Gender, Culture, Voice, Port, GoogleKey) - if PathToSRS or MSRS.path then + --if PathToSRS or MSRS.path then self.useSRS=true - self.msrs=MSRS:New(PathToSRS, self.frequency, self.modulation) - self.msrs:SetGender(Gender) - self.msrs:SetCulture(Culture) - self.msrs:SetVoice(Voice) - self.msrs:SetPort(Port) + + local path = PathToSRS or MSRS.path + local gender = Gender or MSRS.gender + local culture = Culture or MSRS.culture + local voice = Voice or MSRS.voice + local port = Port or MSRS.port or 5002 + + self.msrs=MSRS:New(path, self.frequency, self.modulation) + self.msrs:SetGender(gender) + self.msrs:SetCulture(culture) + self.msrs:SetPort(port) self.msrs:SetCoalition(self:GetCoalition()) self.msrs:SetLabel("ATIS") - self.msrs:SetGoogle(GoogleKey) + if GoogleKey then + self.msrs:SetProviderOptionsGoogle(GoogleKey,GoogleKey) + end + -- Pre-configured Google? + if self.msrs:GetProvider() == MSRS.Provider.GOOGLE then + voice = Voice or MSRS.poptions.gcloud.voice + end + self.msrs:SetVoice(voice) self.msrs:SetCoordinate(self.airbase:GetCoordinate()) self.msrsQ = MSRSQUEUE:New("ATIS") self.msrsQ:SetTransmitOnlyWithPlayers(self.TransmitOnlyWithPlayers) if self.dTQueueCheck<=10 then self:SetQueueUpdateTime(90) end - else - self:E(self.lid..string.format("ERROR: No SRS path specified!")) - end + --else + --self:E(self.lid..string.format("ERROR: No SRS path specified!")) + --end return self end