Mercurial > touhou
diff pytouhou/ui/gamerunner.pyx @ 796:d876ac2ccfe1 default tip
Pass audio only once to GameRunner
This prevents it being recreated every stage change, and playing music over the
previous stages’ music.
| author | Link Mauve <linkmauve@linkmauve.fr> |
|---|---|
| date | Sun, 28 Jun 2026 14:27:03 +0200 |
| parents | ec1e06402a97 |
| children |
line wrap: on
line diff
--- a/pytouhou/ui/gamerunner.pyx +++ b/pytouhou/ui/gamerunner.pyx @@ -17,31 +17,23 @@ cimport cython from pytouhou.lib.gui cimport EXIT, PAUSE, SCREENSHOT, RESIZE, FULLSCREEN from .window cimport Window, Runner -from libtouhou import Audio +from libtouhou import Audio, DummyAudio from pytouhou.game.game cimport Game -class DummyAudio: - def play(self, name): - pass - - def play_bgm(self, track): - pass - - cdef class GameRunner(Runner): - cdef object background, con, resource_loader, keys, replay_level, common + cdef object audio, background, con, resource_loader, keys, replay_level, common cdef Game game cdef Window window cdef list save_keystates - cdef bint skip, audio + cdef bint skip # Since we want to support multiple renderers, don’t specify its type. #TODO: find a way to still specify its interface. cdef object renderer - def __init__(self, Window window, renderer, common, resource_loader, - bint skip=False, con=None, bint audio=True): + def __init__(self, Window window, renderer, common, resource_loader, audio, + bint skip=False, con=None): self.renderer = renderer self.common = common self.resource_loader = resource_loader @@ -74,12 +66,9 @@ cdef class GameRunner(Runner): self.save_keystates = save_keystates - if self.audio: - game.music = Audio(self.resource_loader, bgms) - else: - game.music = DummyAudio() - if bgms is not None: - game.music.play_bgm(0) + game.music = self.audio + game.music.load_bgms(bgms) + game.music.play_bgm(0) game.sfx_player = game.music if not self.skip else DummyAudio()
