"""Sound utilities."""
+import time
+
from pygame import mixer
from naja.options import options
class DummySound(object):
def init(self):
- pass
+ self.playing_music = False
- def play_sound(self, name, volume=DEFAULT_SOUND_VOLUME):
+ def play_sound(self, name, volume=DEFAULT_SOUND_VOLUME, foreground=False):
pass
def play_music(self, name, volume=DEFAULT_MUSIC_VOLUME):
class PygameSound(object):
def __init__(self):
self._sounds = {}
+ self.playing_music = False
def init(self):
mixer.init(FREQ, BITSIZE, CHANNELS, BUFFER)
sound = self._sounds[track_name] = mixer.Sound(track_name)
return sound
- def play_sound(self, name, volume=DEFAULT_SOUND_VOLUME):
+ def play_sound(self, name, volume=DEFAULT_SOUND_VOLUME, foreground=False):
sound = self.load_sound(name)
if sound is not None:
sound.set_volume(volume)
sound.play()
+ if foreground:
+ time.sleep(sound.get_length())
def play_music(self, name, volume=DEFAULT_MUSIC_VOLUME):
if not options.music:
mixer.music.load(track_name)
mixer.music.set_volume(volume)
mixer.music.play(-1) # loop sound
+ self.playing_music = True
def pause_music(self):
mixer.music.pause()
+ self.playing_music = False
def unpause_music(self):
mixer.music.unpause()
+ self.playing_music = True
def stop(self):
mixer.fadeout(1000)
mixer.music.stop()
+ self.playing_music = False
class SoundProxy(object):
def __init__(self):
self._sound = DummySound()
+ self._sound.init()
def init(self):
"""Attempt to initialize the sound system."""