From ba736560da6a7ea1afb223ea9bda15d14848537a Mon Sep 17 00:00:00 2001 From: Auric Vente Date: Sat, 20 Jul 2024 06:21:55 -0600 Subject: [PATCH] Mods --- cromulant/game.py | 8 ++++++-- cromulant/window.py | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/cromulant/game.py b/cromulant/game.py index 7583155..fa29d1a 100644 --- a/cromulant/game.py +++ b/cromulant/game.py @@ -256,8 +256,12 @@ class Game: def toggle_song() -> None: if Game.playing_song: Window.stop_audio() + Game.playing_song = False else: path = str(Config.song_path) - Window.play_audio(path) - Game.playing_song = not Game.playing_song + def on_stop() -> None: + Game.playing_song = False + + Window.play_audio(path, on_stop) + Game.playing_song = True diff --git a/cromulant/window.py b/cromulant/window.py index 037e8e2..6ef0908 100644 --- a/cromulant/window.py +++ b/cromulant/window.py @@ -329,12 +329,19 @@ class Window: Window.root.addWidget(root) @staticmethod - def play_audio(path: str) -> None: + def play_audio(path: str, on_stop: Callable[..., Any] | None = None) -> None: Window.player = QMediaPlayer() Window.audio = QAudioOutput() Window.player.setAudioOutput(Window.audio) Window.player.setSource(QUrl.fromLocalFile(path)) Window.audio.setVolume(100) + + def handle_state_change(state: QMediaPlayer.State) -> None: + if state == QMediaPlayer.StoppedState: + if on_stop: + on_stop() + + Window.player.playbackStateChanged.connect(handle_state_change) Window.player.play() @staticmethod