Sound Update 1

- Moved all related files to new Moose folder "Sound/"
This commit is contained in:
Frank 2021-05-22 23:26:18 +02:00
parent d39074bf3e
commit 7a3fb95851
10 changed files with 195 additions and 128 deletions

View File

@ -1,110 +0,0 @@
--- **Core** - Sound file
--
-- ===
--
-- ## Features:
--
-- * Add a sound file to the
--
-- ===
--
-- ### Author: **funkyfranky**
--
-- ===
--
-- @module Core.UserFlag
-- @image Core_Userflag.JPG
--
do -- Sound File
--- @type SOUNDFILE
-- @field #string ClassName Name of the class
-- @field #string Name Name of the flag.
-- @extends Core.Base#BASE
--- Management of DCS User Flags.
--
-- # 1. USERFLAG constructor
--
-- * @{#USERFLAG.New}(): Creates a new USERFLAG object.
--
-- @field #SOUNDFILE
SOUNDFILE={
ClassName = "SOUNDFILE",
Name = nil,
}
--- Constructor.
-- @param #SOUNDFILE self
-- @param #string UserFlagName The name of the userflag, which is a free text string.
-- @return #SOUNDFILE
function SOUNDFILE:New( UserFlagName ) --R2.3
local self=BASE:Inherit(self, BASE:New()) -- #SOUNDFILE
self.UserFlagName = UserFlagName
return self
end
--- Get the userflag name.
-- @param #USERFLAG self
-- @return #string Name of the user flag.
function USERFLAG:GetName()
return self.UserFlagName
end
--- Set the userflag to a given Number.
-- @param #USERFLAG self
-- @param #number Number The number value to be checked if it is the same as the userflag.
-- @param #number Delay Delay in seconds, before the flag is set.
-- @return #USERFLAG The userflag instance.
-- @usage
-- local BlueVictory = USERFLAG:New( "VictoryBlue" )
-- BlueVictory:Set( 100 ) -- Set the UserFlag VictoryBlue to 100.
--
function USERFLAG:Set( Number, Delay ) --R2.3
if Delay and Delay>0 then
self:ScheduleOnce(Delay, USERFLAG.Set, self, Number)
else
--env.info(string.format("Setting flag \"%s\" to %d at T=%.1f", self.UserFlagName, Number, timer.getTime()))
trigger.action.setUserFlag( self.UserFlagName, Number )
end
return self
end
--- Get the userflag Number.
-- @param #USERFLAG self
-- @return #number Number The number value to be checked if it is the same as the userflag.
-- @usage
-- local BlueVictory = USERFLAG:New( "VictoryBlue" )
-- local BlueVictoryValue = BlueVictory:Get() -- Get the UserFlag VictoryBlue value.
--
function USERFLAG:Get() --R2.3
return trigger.misc.getUserFlag( self.UserFlagName )
end
--- Check if the userflag has a value of Number.
-- @param #USERFLAG self
-- @param #number Number The number value to be checked if it is the same as the userflag.
-- @return #boolean true if the Number is the value of the userflag.
-- @usage
-- local BlueVictory = USERFLAG:New( "VictoryBlue" )
-- if BlueVictory:Is( 1 ) then
-- return "Blue has won"
-- end
function USERFLAG:Is( Number ) --R2.3
return trigger.misc.getUserFlag( self.UserFlagName ) == Number
end
end

View File

@ -6,7 +6,6 @@ __Moose.Include( 'Scripts/Moose/Utilities/Templates.lua' )
__Moose.Include( 'Scripts/Moose/Core/Base.lua' )
__Moose.Include( 'Scripts/Moose/Core/UserFlag.lua' )
__Moose.Include( 'Scripts/Moose/Core/UserSound.lua' )
__Moose.Include( 'Scripts/Moose/Core/Report.lua' )
__Moose.Include( 'Scripts/Moose/Core/Scheduler.lua' )
__Moose.Include( 'Scripts/Moose/Core/ScheduleDispatcher.lua' )
@ -21,9 +20,6 @@ __Moose.Include( 'Scripts/Moose/Core/Point.lua' )
__Moose.Include( 'Scripts/Moose/Core/Velocity.lua' )
__Moose.Include( 'Scripts/Moose/Core/Message.lua' )
__Moose.Include( 'Scripts/Moose/Core/Fsm.lua' )
__Moose.Include( 'Scripts/Moose/Core/Radio.lua' )
__Moose.Include( 'Scripts/Moose/Core/RadioQueue.lua' )
__Moose.Include( 'Scripts/Moose/Core/RadioSpeech.lua' )
__Moose.Include( 'Scripts/Moose/Core/Spawn.lua' )
__Moose.Include( 'Scripts/Moose/Core/SpawnStatic.lua' )
__Moose.Include( 'Scripts/Moose/Core/Timer.lua' )
@ -113,6 +109,13 @@ __Moose.Include( 'Scripts/Moose/Actions/Act_Route.lua' )
__Moose.Include( 'Scripts/Moose/Actions/Act_Account.lua' )
__Moose.Include( 'Scripts/Moose/Actions/Act_Assist.lua' )
__Moose.Include( 'Scripts/Moose/Sound/UserSound.lua' )
__Moose.Include( 'Scripts/Moose/Sound/SoundFile.lua' )
__Moose.Include( 'Scripts/Moose/Sound/Radio.lua' )
__Moose.Include( 'Scripts/Moose/Sound/RadioQueue.lua' )
__Moose.Include( 'Scripts/Moose/Sound/RadioSpeech.lua' )
__Moose.Include( 'Scripts/Moose/Sound/SRS.lua' )
__Moose.Include( 'Scripts/Moose/Tasking/CommandCenter.lua' )
__Moose.Include( 'Scripts/Moose/Tasking/Mission.lua' )
__Moose.Include( 'Scripts/Moose/Tasking/Task.lua' )

View File

@ -1,4 +1,4 @@
--- **Core** - Queues Radio Transmissions.
--- **Sound** - Queues Radio Transmissions.
--
-- ===
--
@ -10,8 +10,8 @@
--
-- ### Authors: funkyfranky
--
-- @module Core.RadioQueue
-- @image Core_Radio.JPG
-- @module Sound.RadioQueue
-- @image Sound_Radio.JPG
--- Manages radio transmissions.
--
@ -125,9 +125,9 @@ function RADIOQUEUE:Start(delay, dt)
-- Start Scheduler.
if self.schedonce then
self:_CheckRadioQueueDelayed(delay)
self:_CheckRadioQueueDelayed(self.delay)
else
self.RQid=self.scheduler:Schedule(nil, RADIOQUEUE._CheckRadioQueue, {self}, delay, dt)
self.RQid=self.scheduler:Schedule(nil, RADIOQUEUE._CheckRadioQueue, {self}, self.delay, self.dt)
end
return self
@ -202,7 +202,7 @@ end
--- Add a transmission to the radio queue.
-- @param #RADIOQUEUE self
-- @param #RADIOQUEUE.Transmission transmission The transmission data table.
-- @return #RADIOQUEUE self The RADIOQUEUE object.
-- @return #RADIOQUEUE self
function RADIOQUEUE:AddTransmission(transmission)
self:F({transmission=transmission})
@ -221,7 +221,7 @@ function RADIOQUEUE:AddTransmission(transmission)
return self
end
--- Add a transmission to the radio queue.
--- Create a new transmission and add it to the radio queue.
-- @param #RADIOQUEUE self
-- @param #string filename Name of the sound file. Usually an ogg or wav file type.
-- @param #number duration Duration in seconds the file lasts.
@ -233,6 +233,8 @@ end
-- @return #RADIOQUEUE self The RADIOQUEUE object.
function RADIOQUEUE:NewTransmission(filename, duration, path, tstart, interval, subtitle, subduration)
env.info("FF new transmission.")
-- Sanity checks.
if not filename then
self:E(self.lid.."ERROR: No filename specified.")
@ -272,6 +274,19 @@ function RADIOQUEUE:NewTransmission(filename, duration, path, tstart, interval,
return self
end
--- Create a new transmission and add it to the radio queue.
-- @param #RADIOQUEUE self
-- @param Sound.SoundFile#SOUNDFILE soundfile Sound file object to be added.
-- @param #number tstart Start time (abs) seconds. Default now.
-- @param #number interval Interval in seconds after the last transmission finished.
-- @return #RADIOQUEUE self
function RADIOQUEUE:AddSoundfile(soundfile, tstart, interval)
env.info(string.format("FF add soundfile: name=%s%s", soundfile:GetPath(), soundfile:GetFileName()))
self:NewTransmission(soundfile:GetFileName(), soundfile.duration, soundfile:GetPath(), tstart, interval, soundfile.subtitle, soundfile.subduration)
return self
end
--- Convert a number (as string) into a radio transmission.
-- E.g. for board number or headings.
-- @param #RADIOQUEUE self
@ -292,7 +307,7 @@ function RADIOQUEUE:Number2Transmission(number, delay, interval)
end
-- Split string into characters.
local numbers=_split(number)
local numbers=UTILS.GetCharacters(number) --l_split(number)
local wait=0
for i=1,#numbers do
@ -547,7 +562,7 @@ function RADIOQUEUE:_GetRadioSender()
return nil
end
--- Get unit from which we want to transmit a radio message. This has to be an aircraft for subtitles to work.
--- Get unit from which we want to transmit a radio message. This has to be an aircraft or ground unit for subtitles to work.
-- @param #RADIOQUEUE self
-- @return DCS#Vec3 Vector 3D.
function RADIOQUEUE:_GetRadioSenderCoord()

View File

@ -0,0 +1,138 @@
--- **Sound** - Sound file management.
--
-- ===
--
-- ## Features:
--
-- * Add a sound file to the
--
-- ===
--
-- ### Author: **funkyfranky**
--
-- ===
--
-- @module Sound.Soundfile
-- @image Sound_Soundfile.png
--
do -- Sound File
--- @type SOUNDFILE
-- @field #string ClassName Name of the class
-- @field #string filename Name of the flag.
-- @field #string path Directory path, where the sound file is located.
-- @field #string duration Duration of the sound file in seconds.
-- @field #string subtitle Subtitle of the transmission.
-- @field #number subduration Duration in seconds how long the subtitle is displayed.
-- @field #boolean insideMiz If true (default), the sound file is located inside the mission .miz file.
-- @extends Core.Base#BASE
--- Sound files used by other classes.
--
-- # 1. USERFLAG constructor
--
-- * @{#USERFLAG.New}(): Creates a new USERFLAG object.
--
-- @field #SOUNDFILE
SOUNDFILE={
ClassName = "SOUNDFILE",
filename = nil,
path = "l10n/DEFAULT",
duration = 3,
subtitle = nil,
subduration = 0,
insideMiz = true,
}
--- Constructor to create a new SOUNDFILE object.
-- @param #SOUNDFILE self
-- @param #string filename The name of the sound file, e.g. "Hello World.ogg".
-- @param #string Path The path of the directory, where the sound file is located. Default is "l10n/DEFAULT/" within the miz file.
-- @param #number Duration Duration in seconds, how long it takes to play the sound file. Default is 3 seconds.
-- @return #SOUNDFILE self
function SOUNDFILE:New(filename, Path, Duration)
-- Inherit BASE.
local self=BASE:Inherit(self, BASE:New()) -- #SOUNDFILE
-- Set file name.
self.filename=filename or "Hallo World.ogg"
-- Set path
self.path=Path or "l10n/DEFAULT/"
self.duration=Duration or 3
-- Debug info:
self:I(string.format("New SOUNDFILE: file name=%s, path=%s", self.filename, self.path))
return self
end
--- Set path, where the .
-- @param #SOUNDFILE self
-- @param #string Path Path to the directory, where the sound file is located.
-- @return self
function SOUNDFILE:SetPath(Path)
self.path=Path or "l10n/DEFAULT/"
while self.path:sub(-1)=="/" or self.path:sub(-1)=="\\" do
self.path=self.path:sub(1,-1)
end
return self
end
--- Get the sound file name.
-- @param #SOUNDFILE self
-- @return #string Name of the soud file. This does *not* include its path.
function SOUNDFILE:GetFileName()
return self.filename
end
--- Get path of the directory, where the sound file is located.
-- @param #SOUNDFILE self
-- @return #string Path.
function SOUNDFILE:GetPath()
local path=self.path or "l10n/DEFAULT"
path=path.."/"
return path
end
--- Get the complete sound file name inlcuding its path.
-- @param #SOUNDFILE self
-- @return #string Name of the sound file.
function SOUNDFILE:GetName()
local filename=self:GetFileName()
local path=self:GetPath()
local name=string.format("%s/%s", path, filename)
return name
end
--- Set the userflag to a given Number.
-- @param #SOUNDFILE self
-- @param #number Number The number value to be checked if it is the same as the userflag.
-- @param #number Delay Delay in seconds, before the flag is set.
-- @return #SOUNDFILE self
-- @usage
-- local BlueVictory = USERFLAG:New( "VictoryBlue" )
-- BlueVictory:Set( 100 ) -- Set the UserFlag VictoryBlue to 100.
--
function SOUNDFILE:Set( Number, Delay ) --R2.3
if Delay and Delay>0 then
self:ScheduleOnce(Delay, USERFLAG.Set, self, Number)
else
--env.info(string.format("Setting flag \"%s\" to %d at T=%.1f", self.UserFlagName, Number, timer.getTime()))
trigger.action.setUserFlag( self.UserFlagName, Number )
end
return self
end
end

View File

@ -682,7 +682,10 @@ function UTILS.IsInSphere( InVec3, Vec3, Radius )
return InSphere
end
-- Beaufort scale: returns Beaufort number and wind description as a function of wind speed in m/s.
--- Beaufort scale: returns Beaufort number and wind description as a function of wind speed in m/s.
-- @param #number speed Wind speed in m/s.
-- @return #number Beaufort number.
-- @return #string Beauford wind description.
function UTILS.BeaufortScale(speed)
local bn=nil
local bd=nil
@ -742,6 +745,21 @@ function UTILS.Split(str, sep)
return result
end
--- Get a table of all characters in a string.
-- @param #string str Sting.
-- @return #table Individual characters.
function UTILS.GetCharacters(str)
local chars={}
for i=1,#str do
local c=str:sub(i,i)
table.insert(chars, c)
end
return chars
end
--- Convert time in seconds to hours, minutes and seconds.
-- @param #number seconds Time in seconds, e.g. from timer.getAbsTime() function.
-- @param #boolean short (Optional) If true, use short output, i.e. (HH:)MM:SS without day.

View File

@ -7,7 +7,6 @@ Utilities/Templates.lua
Core/Base.lua
Core/UserFlag.lua
Core/UserSound.lua
Core/Report.lua
Core/Scheduler.lua
Core/ScheduleDispatcher.lua
@ -22,9 +21,6 @@ Core/Point.lua
Core/Velocity.lua
Core/Message.lua
Core/Fsm.lua
Core/Radio.lua
Core/RadioQueue.lua
Core/RadioSpeech.lua
Core/Spawn.lua
Core/SpawnStatic.lua
Core/Timer.lua
@ -114,6 +110,13 @@ Actions/Act_Route.lua
Actions/Act_Account.lua
Actions/Act_Assist.lua
Sound/UserSound.lua
Sound/SoundFile.lua
Sound/Radio.lua
Sound/RadioQueue.lua
Sound/RadioSpeech.lua
Sound/SRS.lua
Tasking/CommandCenter.lua
Tasking/Mission.lua
Tasking/Task.lua