Files
i-mic-fps/lib/managers/sound_manager.rb
2020-12-02 17:37:48 -06:00

56 lines
1.2 KiB
Ruby

# frozen_string_literal: true
class IMICFPS
module SoundManager
extend CyberarmEngine::Common
MASTERS = {}.freeze
EFFECTS = [].freeze
PLAYLISTS = {}.freeze
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[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[package]
return master["sounds"].find { |s| s["name"] == name }
end
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