Added sound manager.

This commit is contained in:
2025-10-12 01:21:42 -04:00
parent d3d1fa1430
commit 6c6e455329
4 changed files with 79 additions and 23 deletions

View File

@@ -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)

View File

@@ -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

53
src/sound/sndmngr.lua Normal file
View File

@@ -0,0 +1,53 @@
------------------------------------------------------------------------------
-- 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)
sfx:setVolume(settings.soundvol / 100)
sfx:play()
end
function SoundManager:play_music(bgm)
if self.active_bgm ~= nil then
self.active_bgm:stop()
end
self.active_bgm = bgm
self.active_bgm:setVolume(settings.musicvol / 100)
self.active_bgm:play()
end
function SoundManager:update_volumes()
if self.active_bgm ~= nil then
self.active_bgm:setVolume(settings.musicvol / 100)
end
end
------------------------------------------------------------------------------
-- Module return
------------------------------------------------------------------------------
return SoundManager()

View File

@@ -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'
------------------------------------------------------------------------------