about summary refs log tree commit diff homepage
path: root/brutalmaze/misc.py
diff options
context:
space:
mode:
authorNguyễn Gia Phong <vn.mcsinyx@gmail.com>2018-01-24 23:46:44 +0700
committerNguyễn Gia Phong <vn.mcsinyx@gmail.com>2018-01-24 23:46:44 +0700
commit097357347c968adbf636f37e49f3ddf4c68ba5bc (patch)
tree3d266a38e402c8b0e795fb067d04d230582a69d5 /brutalmaze/misc.py
parent59501c6c44f26b66d4bb314b9f2eb21d7984eeb7 (diff)
downloadbrutalmaze-097357347c968adbf636f37e49f3ddf4c68ba5bc.tar.gz
Implement (pseudo) surround sound
Diffstat (limited to 'brutalmaze/misc.py')
-rw-r--r--brutalmaze/misc.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/brutalmaze/misc.py b/brutalmaze/misc.py
index 431b5e6..6f79c0b 100644
--- a/brutalmaze/misc.py
+++ b/brutalmaze/misc.py
@@ -83,7 +83,18 @@ def choices(d):
         if num <= w: return population[i]
 
 
-def play(sound, volume):
+def play(sound, volume, angle=None):
     """Play a pygame.mixer.Sound at the given volume."""
-    sound.set_volume(volume)
-    sound.play()
+    if angle is None:
+        sound.set_volume(volume)
+        sound.play()
+    else:
+        delta = cos(angle)
+        volumes = [volume * (1-delta), volume * (1+delta)]
+        for i, v in enumerate(volumes):
+            if v > 1:
+                volumes[i - 1] += v - 1
+                volumes[i] = 1.0
+        sound.set_volume(1.0)
+        channel = sound.play()
+        channel.set_volume(*volumes)