mirror of
https://github.com/cyberarm/i-mic-fps.git
synced 2025-12-16 08:02:36 +00:00
Added require_all method to replace explicitly requiring every source file, added SoundManager and sound effects, added sound for shield/health regen
This commit is contained in:
53
lib/managers/sound_manager.rb
Normal file
53
lib/managers/sound_manager.rb
Normal file
@@ -0,0 +1,53 @@
|
||||
class IMICFPS
|
||||
module SoundManager
|
||||
extend CyberarmEngine::Common
|
||||
|
||||
MASTERS = {}
|
||||
EFFECTS = []
|
||||
PLAYLISTS = {}
|
||||
|
||||
def self.master_volume
|
||||
1.0
|
||||
end
|
||||
|
||||
def self.music_volume
|
||||
0.25 * master_volume
|
||||
end
|
||||
|
||||
def self.sfx_volume
|
||||
0.5 * master_volume
|
||||
end
|
||||
|
||||
def self.load_master(package)
|
||||
return if MASTERS.dig(package)
|
||||
|
||||
yaml = YAML.load_file( "#{IMICFPS.assets_path}/#{package}/shared/sound/master.yaml" )
|
||||
MASTERS[package] = yaml
|
||||
end
|
||||
|
||||
def self.sound(package, name)
|
||||
if data = sound_data(package, name.to_s)
|
||||
get_sample("#{IMICFPS.assets_path}/#{package}/shared/sound/#{data["path"]}")
|
||||
else
|
||||
raise "Missing sound: '#{name}' in package '#{package}'"
|
||||
end
|
||||
end
|
||||
|
||||
def self.sound_data(package, name)
|
||||
load_master(package)
|
||||
if master = MASTERS.dig(package)
|
||||
return master["sounds"].find { |s| s["name"] == name }
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
def self.sound_effect(klass, options)
|
||||
EFFECTS << klass.new(options)
|
||||
end
|
||||
|
||||
def self.update
|
||||
EFFECTS.each { |e| e.update; EFFECTS.delete(e) if e.done? }
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user