14a01ff52395b69617d5037edea07c1d2014db98
[tabakrolletjie.git] / tabakrolletjie / sound.py
1
2 from pygame import mixer
3
4 from .constants import FREQ, BITSIZE, CHANNELS, BUFFER, DEFAULT_VOLUME, NO_SOUND
5 from .loader import loader
6
7 class SoundManager(object):
8
9     def init(self):
10         """This is not in __init__, because we want to delay until after
11            other pygame initialistion"""
12         self._init = False
13         if not NO_SOUND:
14             mixer.init(FREQ, BITSIZE, CHANNELS, BUFFER)
15             silence = loader.load_sound("silence.ogg")
16             if silence.get_length() < 1:
17                 raise RuntimeError("Sound load error - silence.ogg too short")
18             try:
19                 self.play_sound("silence.ogg")
20                 self._init = True
21             except Exception, err:
22                 print "Failed to enable sound: %r" % err
23
24     def play_sound(self, name, volume=DEFAULT_VOLUME):
25         if self._init:
26             sound = loader.load_sound(name)
27             if sound is not None:
28                 sound.set_volume(volume)
29                 sound.play()
30
31     def play_music(self, name, volume=DEFAULT_VOLUME):
32         pass
33
34     def stop(self):
35         if self._init:
36             mixer.fadeout(1000)
37             mixer.music.stop()
38
39
40 sound = SoundManager()