From 7a33e5020f9b1e7cf89bc532e2ddcf681f5bcf9c Mon Sep 17 00:00:00 2001 From: Viljami Ilola <+@hix.fi> Date: Sat, 27 Apr 2024 01:29:45 +0300 Subject: volume control --- src/sliceitoff/sfx/sfx.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/sliceitoff/sfx/sfx.py') diff --git a/src/sliceitoff/sfx/sfx.py b/src/sliceitoff/sfx/sfx.py index fd494b8..8f3371e 100644 --- a/src/sliceitoff/sfx/sfx.py +++ b/src/sliceitoff/sfx/sfx.py @@ -1,8 +1,11 @@ """ sfx.sfx - pygame.mixer initialization and sound effects handling """ import os +from random import choice from pathlib import Path import pygame +from sliceitoff.settings import settings + DEBUG = os.getenv("DEBUG") class Sfx: @@ -11,6 +14,14 @@ class Sfx: self.initialized = False self.sound = {} self.bgm = None + try: + self.sfx_volume = int( + settings.get_value_or_default("sfx_volume")) + self.music_volume = int( + settings.get_value_or_default("music_volume")) + except ValueError: + self.sfx_volume = 10 + self.music_volume = 10 try: pygame.mixer.pre_init(channels=2, buffer=512, frequency=48000) except pygame.error: @@ -29,9 +40,24 @@ class Sfx: except pygame.error: pass + def sfx_up(self): + """ Turn volume up. If its turned to 11 it resets back to 0. """ + self.sfx_volume += 1 + self.sfx_volume %= 11 + settings.replace_value("sfx_volume", self.sfx_volume) + self.play(choice(("baby", "laser", "glass"))) + + def music_up(self): + """ Turn volume up. If its turned to 11 it resets back to 0. """ + self.music_volume += 1 + self.music_volume %= 11 + settings.replace_value("music_volume", self.music_volume) + self.sound[self.bgm].set_volume(self.music_volume / 10) + def play(self, sample): """ Just plays named sample loaded from assets directory """ if self.initialized: + self.sound[sample].set_volume(self.sfx_volume / 10) self.sound[sample].play() def music(self, music): @@ -44,6 +70,7 @@ class Sfx: self.sound[self.bgm].fadeout(500) self.bgm = music if self.bgm: + self.sound[self.bgm].set_volume(self.music_volume / 10) self.sound[self.bgm].play() # Initialize only one time -- cgit v1.2.3