Mercurial > touhou
diff pytouhou/ui/gamerunner.pyx @ 783:ec1e06402a97
Replace SDL2_mixer with the kira crate
| author | Link Mauve <linkmauve@linkmauve.fr> |
|---|---|
| date | Fri, 21 Nov 2025 10:21:59 +0100 |
| parents | 80687f258001 |
| children |
line wrap: on
line diff
--- a/pytouhou/ui/gamerunner.pyx +++ b/pytouhou/ui/gamerunner.pyx @@ -17,9 +17,16 @@ from pytouhou.lib.gui cimport EXIT, PAUSE, SCREENSHOT, RESIZE, FULLSCREEN from .window cimport Window, Runner -from .music import BGMPlayer, SFXPlayer +from libtouhou import Audio from pytouhou.game.game cimport Game -from pytouhou.game.music cimport MusicPlayer + + +class DummyAudio: + def play(self, name): + pass + + def play_bgm(self, track): + pass cdef class GameRunner(Runner): @@ -27,14 +34,14 @@ cdef Game game cdef Window window cdef list save_keystates - cdef bint skip + cdef bint skip, audio # 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 skip=False, con=None, bint audio=True): self.renderer = renderer self.common = common self.resource_loader = resource_loader @@ -43,6 +50,7 @@ self.replay_level = None self.skip = skip self.con = con + self.audio = audio self.width = common.interface.width self.height = common.interface.height @@ -66,14 +74,14 @@ self.save_keystates = save_keystates - null_player = MusicPlayer() + if self.audio: + game.music = Audio(self.resource_loader, bgms) + else: + game.music = DummyAudio() if bgms is not None: - game.music = BGMPlayer(self.resource_loader, bgms) - game.music.play(0) - else: - game.music = null_player + game.music.play_bgm(0) - game.sfx_player = SFXPlayer(self.resource_loader) if not self.skip else null_player + game.sfx_player = game.music if not self.skip else DummyAudio() cdef bint set_input(self, replay=None) except True: @@ -144,7 +152,7 @@ if self.skip: self.set_input() self.skip = False - self.game.sfx_player = SFXPlayer(self.resource_loader) + self.game.sfx_player = self.game.music if self.save_keystates is not None: self.save_keystates.append(keystate)
