Make chess puzzle level (Kasparov to F3) winnable.
[naja.git] / naja / sound.py
index 311586510874fd792241b3c72455b736f3b0af46..f0ef91c8224c7675050bfb22183b33af9cf20572 100644 (file)
@@ -1,5 +1,7 @@
 """Sound utilities."""
 
+import time
+
 from pygame import mixer
 
 from naja.options import options
@@ -11,9 +13,9 @@ from naja.constants import (
 
 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):
@@ -32,6 +34,7 @@ class DummySound(object):
 class PygameSound(object):
     def __init__(self):
         self._sounds = {}
+        self.playing_music = False
 
     def init(self):
         mixer.init(FREQ, BITSIZE, CHANNELS, BUFFER)
@@ -47,11 +50,13 @@ class PygameSound(object):
             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:
@@ -60,21 +65,26 @@ class PygameSound(object):
         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."""