Added sound manager.
This commit is contained in:
@@ -2,17 +2,18 @@
|
||||
-- Imports
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
local love = require 'love'
|
||||
local assets = require 'src.utils.asstmngr'
|
||||
local make_class = require 'src.utils.classes'
|
||||
local constants = require 'src.gstates.menus.const'
|
||||
local GameState = require 'src.gstates.gstate'
|
||||
local MainMenu = require 'src.gstates.menus.mainmenu'
|
||||
local OptionsMenu = require 'src.gstates.menus.options'
|
||||
local Fader = require 'src.graphics.fader'
|
||||
local Cursor = require 'src.ui.cursor'
|
||||
local Font = require 'src.ui.font'
|
||||
local SoundEffect = require 'src.sound.sfx'
|
||||
local love = require 'love'
|
||||
local assets = require 'src.utils.asstmngr'
|
||||
local sound_manager = require 'src.sound.sndmngr'
|
||||
local make_class = require 'src.utils.classes'
|
||||
local constants = require 'src.gstates.menus.const'
|
||||
local GameState = require 'src.gstates.gstate'
|
||||
local MainMenu = require 'src.gstates.menus.mainmenu'
|
||||
local OptionsMenu = require 'src.gstates.menus.options'
|
||||
local Fader = require 'src.graphics.fader'
|
||||
local Cursor = require 'src.ui.cursor'
|
||||
local Font = require 'src.ui.font'
|
||||
local SoundEffect = require 'src.sound.sfx'
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
@@ -58,7 +59,7 @@ end
|
||||
|
||||
|
||||
function Menu:update(dt)
|
||||
if not self.bgm:isPlaying() then self.bgm:play() end
|
||||
if not self.bgm:isPlaying() then sound_manager:play_music(self.bgm) end
|
||||
|
||||
if self.all_loaded then
|
||||
self.menus[self.current_menu]:update(dt)
|
||||
|
||||
@@ -2,16 +2,17 @@
|
||||
-- Imports
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
local make_class = require 'src.utils.classes'
|
||||
local constants = require 'src.gstates.menus.const'
|
||||
local settings = require 'src.utils.settings'
|
||||
local BaseMenu = require 'src.gstates.menus.base'
|
||||
local Color = require 'src.utils.color'
|
||||
local HBox = require 'src.ui.hbox'
|
||||
local Label = require 'src.ui.label'
|
||||
local TextButton = require 'src.ui.textbtn'
|
||||
local Checkbox = require 'src.ui.chkbox'
|
||||
local Bar = require 'src.ui.bar'
|
||||
local make_class = require 'src.utils.classes'
|
||||
local constants = require 'src.gstates.menus.const'
|
||||
local settings = require 'src.utils.settings'
|
||||
local sound_manager = require 'src.sound.sndmngr'
|
||||
local BaseMenu = require 'src.gstates.menus.base'
|
||||
local Color = require 'src.utils.color'
|
||||
local HBox = require 'src.ui.hbox'
|
||||
local Label = require 'src.ui.label'
|
||||
local TextButton = require 'src.ui.textbtn'
|
||||
local Checkbox = require 'src.ui.chkbox'
|
||||
local Bar = require 'src.ui.bar'
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
@@ -67,6 +68,7 @@ function OptionsMenu:_init(parent, title_font, button_font)
|
||||
box:add(Bar(
|
||||
function(v)
|
||||
settings.musicvol = math.ceil(v)
|
||||
sound_manager:update_volumes()
|
||||
end,
|
||||
function()
|
||||
return settings.musicvol
|
||||
|
||||
57
src/sound/sndmngr.lua
Normal file
57
src/sound/sndmngr.lua
Normal file
@@ -0,0 +1,57 @@
|
||||
------------------------------------------------------------------------------
|
||||
-- Imports
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
local make_class = require 'src.utils.classes'
|
||||
local settings = require 'src.utils.settings'
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- Class definitions
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
local SoundManager = make_class()
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- Class methods
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
function SoundManager:_init()
|
||||
self.active_bgm = nil
|
||||
end
|
||||
|
||||
|
||||
function SoundManager:play_sound(sfx)
|
||||
local vol = math.max(math.min(settings.soundvol / 100, 1.0), 0.0)
|
||||
sfx:setVolume(vol)
|
||||
sfx:play()
|
||||
end
|
||||
|
||||
|
||||
function SoundManager:play_music(bgm)
|
||||
local vol = math.max(math.min(settings.musicvol / 100, 1.0), 0.0)
|
||||
|
||||
if self.active_bgm ~= nil then
|
||||
self.active_bgm:stop()
|
||||
end
|
||||
|
||||
self.active_bgm = bgm
|
||||
self.active_bgm:setVolume(vol)
|
||||
self.active_bgm:play()
|
||||
end
|
||||
|
||||
|
||||
function SoundManager:update_volumes()
|
||||
if self.active_bgm ~= nil then
|
||||
local vol = math.max(math.min(settings.musicvol / 100, 1.0), 0.0)
|
||||
self.active_bgm:setVolume(vol)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- Module return
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
return SoundManager()
|
||||
@@ -5,6 +5,7 @@
|
||||
local love = require 'love'
|
||||
local make_class = require 'src.utils.classes'
|
||||
local Drawable = require 'src.graphics.drawable'
|
||||
local Asset = require 'src.utils.asset'
|
||||
local Sprite = require 'src.graphics.sprite'
|
||||
local Font = require 'src.ui.font'
|
||||
|
||||
@@ -13,7 +14,6 @@ local Font = require 'src.ui.font'
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
local AssetManager = make_class(Drawable)
|
||||
local Asset = require 'src.utils.asset'
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user