From 2813a0856f1de3e0f9e0beed280e29e06a78c3ee Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sun, 12 Apr 2020 17:51:12 +0700 Subject: Switch audio plane to Oxy Also clean up sources properly --- brutalmaze/game.py | 12 +++++++----- brutalmaze/misc.py | 14 ++++++++------ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/brutalmaze/game.py b/brutalmaze/game.py index 2b7d331..f088b7d 100644 --- a/brutalmaze/game.py +++ b/brutalmaze/game.py @@ -16,7 +16,7 @@ # You should have received a copy of the GNU Affero General Public License # along with Brutal Maze. If not, see . -__version__ = '0.9.0' +__version__ = '0.9.1' import re from argparse import ArgumentParser, FileType, RawTextHelpFormatter @@ -32,7 +32,7 @@ from threading import Thread with redirect_stdout(StringIO()): import pygame from pygame import KEYDOWN, MOUSEBUTTONUP, QUIT, VIDEORESIZE from pygame.time import Clock, get_ticks -from palace import free, use_context, Device, Context +from palace import free, use_context, Device, Context, Buffer from appdirs import AppDirs from .constants import SETTINGS, ICON, SFX, SFX_NOISE, HERO_SPEED, MIDDLE @@ -136,9 +136,10 @@ class Game: def __enter__(self): if self.actx is not None: use_context(self.actx) - self.actx.listener.position = MIDDLE, 0, MIDDLE + self.actx.listener.position = MIDDLE, -MIDDLE, 0 self.actx.listener.gain = not self._mute - play(SFX_NOISE) + self._source = Buffer(SFX_NOISE).play() + self._source.looping = True return self def __exit__(self, exc_type, exc_value, traceback): @@ -146,7 +147,8 @@ class Game: if not self.hero.dead: self.maze.dump_records() if self.actx is not None: free(SFX) - clean_sources() + clean_sources(stopped=False) + self._source.destroy() use_context(None) self.actx.destroy() self.actx.device.close() diff --git a/brutalmaze/misc.py b/brutalmaze/misc.py index 92000a4..e5d1016 100644 --- a/brutalmaze/misc.py +++ b/brutalmaze/misc.py @@ -93,20 +93,22 @@ def json_rec(directory): def play(sound: str, x: float = MIDDLE, y: float = MIDDLE, gain: float = 1.0) -> None: """Play a sound at the given position.""" - buffer = Buffer(sound) - source = buffer.play() + source = Buffer(sound).play() source.spatialize = True - source.position = x, 0, y + source.position = x, -y, 0 source.gain = gain sources.append(source) -def clean_sources() -> None: - """Destroyed stopped sources.""" +def clean_sources(stopped=True) -> None: + """Destroyed stopped sources. + + If stopped is set to False, clean all sources. + """ global sources sources, tmp = [], sources for source in tmp: - if source.playing: + if stopped and source.playing: sources.append(source) else: source.destroy() -- cgit 1.4.1