diff --git a/Moose Development/Moose/Core/Message.lua b/Moose Development/Moose/Core/Message.lua index 45c9cd968..218184a28 100644 --- a/Moose Development/Moose/Core/Message.lua +++ b/Moose Development/Moose/Core/Message.lua @@ -52,7 +52,7 @@ -- === -- -- ### Author: **FlightControl** --- ### Contributions: +-- ### Contributions: **Applevangelist** -- -- === -- @@ -371,7 +371,9 @@ function MESSAGE:ToCoalition( CoalitionSide, Settings ) trigger.action.outTextForCoalition( CoalitionSide, self.MessageText:gsub( "\n$", "" ):gsub( "\n$", "" ), self.MessageDuration, self.ClearScreen ) end end - + + self.CoalitionSide = CoalitionSide + return self end @@ -454,3 +456,126 @@ function MESSAGE:ToLogIf( Condition ) end return self 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. +-- @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 "male". +-- @param #strimg Culture (optional) Culture, e.g. "en-US", defaults to "en-GB" +-- @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). +-- @param #string Label (optional) Label, defaults to "MESSAGE" or the Message Category set. +-- @param Core.Point#COORDINATE Coordinate (optional) Coordinate this messages originates from. +-- @usage +-- -- Mind the dot here, not using the colon this time around! +-- -- Needed once only +-- MESSAGE.SetMSRS("D:\\Program Files\\DCS-SimpleRadio-Standalone",5012,nil,127,radio.modulation.FM,"female","en-US",nil,coalition.side.BLUE) +-- -- later on in your code +-- MESSAGE:New("Test message!",15,"SPAWN"):ToAll():ToSRS() +-- +function MESSAGE.SetMSRS(PathToSRS,Port,PathToCredentials,Frequency,Modulation,Gender,Culture,Voice,Coalition,Volume,Label,Coordinate) + local path = PathToSRS or "C:\\Program Files\\DCS-SimpleRadio-Standalone" + _MESSAGESRS.MSRS = MSRS:New(path,Frequency,Modulation,Volume) + _MESSAGESRS.MSRS:SetCoalition(Coalition) + _MESSAGESRS.MSRS:SetCoordinate(Coordinate) + _MESSAGESRS.MSRS:SetCulture(Culture) + _MESSAGESRS.MSRS:SetFrequencies(Frequency) + _MESSAGESRS.MSRS:SetGender(Gender) + _MESSAGESRS.MSRS:SetGoogle(PathToCredentials) + _MESSAGESRS.MSRS:SetLabel(Label or "MESSAGE") + _MESSAGESRS.MSRS:SetModulations(Modulation) + _MESSAGESRS.MSRS:SetPath(PathToSRS) + _MESSAGESRS.MSRS:SetPort(Port) + _MESSAGESRS.MSRS:SetVolume(Volume) + _MESSAGESRS.MSRS:SetVoice(Voice) + _MESSAGESRS.SRSQ = MSRSQUEUE:New(Label or "MESSAGE") +end + +--- Sends a message via SRS. +-- @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. +-- @param #string gender (optional) Gender, i.e. "male" or "female". Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #strimg culture (optional) Culture, e.g. "en-US. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #string voice (optional) Voice. Will override gender and culture settings. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #number coalition (optional) Coalition, can be coalition.side.RED, coalition.side.BLUE or coalition.side.NEUTRAL. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #number volume (optional) Volume, can be between 0.0 and 1.0 (loudest). Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param Core.Point#COORDINATE coordinate (optional) Coordinate this messages originates from. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @return #MESSAGE self +function MESSAGE:ToSRS(frequency,modulation,gender,culture,voice,coalition,volume,coordinate) + if _MESSAGESRS.SRSQ then + _MESSAGESRS.MSRS:SetLabel(self.MessageCategory or _MESSAGESRS.MSRS.Label or "MESSAGE") + if gender then + _MESSAGESRS.MSRS:SetGender(gender) + end + if coalition then + _MESSAGESRS.MSRS:SetCoalition(coalition) + end + if culture then + _MESSAGESRS.MSRS:SetCulture(culture) + end + if volume then + _MESSAGESRS.MSRS:SetVolume(volume) + end + if coordinate then + _MESSAGESRS.MSRS:SetCoordinate(coordinate) + end + if voice then + _MESSAGESRS.MSRS:SetVoice(voice) + end + _MESSAGESRS.SRSQ:NewTransmission(self.MessageText,nil,_MESSAGESRS.MSRS,nil,1,nil,nil,nil,frequency,modulation) + end + return self +end + +--- Sends a message via SRS on the blue coalition side. +-- @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. +-- @param #string gender (optional) Gender, i.e. "male" or "female". Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #strimg culture (optional) Culture, e.g. "en-US. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #string voice (optional) Voice. Will override gender and culture settings. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #number volume (optional) Volume, can be between 0.0 and 1.0 (loudest). Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param Core.Point#COORDINATE coordinate (optional) Coordinate this messages originates from. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @return #MESSAGE self +function MESSAGE:ToSRSBlue(frequency,modulation,gender,culture,voice,volume,coordinate) + self:ToSRS(frequency,modulation,gender,culture,voice,coalition.side.BLUE,volume,coordinate) + return self +end + +--- Sends a message via SRS on the red coalition side. +-- @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. +-- @param #string gender (optional) Gender, i.e. "male" or "female". Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #strimg culture (optional) Culture, e.g. "en-US. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #string voice (optional) Voice. Will override gender and culture settings. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #number volume (optional) Volume, can be between 0.0 and 1.0 (loudest). Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param Core.Point#COORDINATE coordinate (optional) Coordinate this messages originates from. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @return #MESSAGE self +function MESSAGE:ToSRSRed(frequency,modulation,gender,culture,voice,volume,coordinate) + self:ToSRS(frequency,modulation,gender,culture,voice,coalition.side.RED,volume,coordinate) + return self +end + +--- Sends a message via SRS to all - via the neutral coalition side. +-- @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. +-- @param #string gender (optional) Gender, i.e. "male" or "female". Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #strimg culture (optional) Culture, e.g. "en-US. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #string voice (optional) Voice. Will override gender and culture settings. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param #number volume (optional) Volume, can be between 0.0 and 1.0 (loudest). Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @param Core.Point#COORDINATE coordinate (optional) Coordinate this messages originates from. Only needed if you want to change defaults set with `MESSAGE.SetMSRS()`. +-- @return #MESSAGE self +function MESSAGE:ToSRSAll(frequency,modulation,gender,culture,voice,volume,coordinate) + self:ToSRS(frequency,modulation,gender,culture,voice,coalition.side.NEUTRAL,volume,coordinate) + return self +end +