From 0a659dcbe0028fe3c736051365ee0f877ff9b3ea Mon Sep 17 00:00:00 2001 From: adastram Date: Tue, 9 Jan 2024 10:03:19 +0100 Subject: [PATCH 1/2] Removed Debug prints --- src/engine/sound_manager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/engine/sound_manager.py b/src/engine/sound_manager.py index 3950ffa..0bd0f73 100644 --- a/src/engine/sound_manager.py +++ b/src/engine/sound_manager.py @@ -30,7 +30,6 @@ class SoundManager: if self.music_next_request: self.music_next_request = False mixer.music.fadeout(1) - print(self.music_playlist) if len(self.music_playlist) == 0: pass From 37db2829a7c1c8fba4ad1d76d9b97b11c941a509 Mon Sep 17 00:00:00 2001 From: adastram Date: Tue, 9 Jan 2024 11:20:47 +0100 Subject: [PATCH 2/2] Added shuffle function for background music --- src/engine/renderer.py | 2 +- src/engine/sound_manager.py | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/engine/renderer.py b/src/engine/renderer.py index 4a3389e..37b9805 100644 --- a/src/engine/renderer.py +++ b/src/engine/renderer.py @@ -124,7 +124,7 @@ class Renderer: True, (255, 0, 0)), (0, 30)) self.window.blit(font.SysFont("Arial", 20).render(f"Zoom: {round(self.engine.camera.zoom, 2)}", True, (255, 0, 0)), (0, 60)) - self.window.blit(font.SysFont("Arial", 20).render(f"Volume: {self.engine.sound_manager.music_get_volume()}, Pos: {self.engine.sound_manager.music_get_current_song_pos()}s, Index: {self.engine.sound_manager.music_current_index}, Paused: {self.engine.sound_manager.music_is_paused}", + self.window.blit(font.SysFont("Arial", 20).render(f"Volume: {self.engine.sound_manager.music_get_volume()}, Pos: {self.engine.sound_manager.music_get_current_song_pos()}s, Index: {self.engine.sound_manager.music_current_index}, Paused: {self.engine.sound_manager.music_is_paused}, Shuffled: {self.engine.sound_manager.music_shuffle_playlist}", True, (255, 0, 0)), (0, 90)) self.window.blit(font.SysFont("Arial", 20).render(f"Track: {self.engine.sound_manager.music_current_song}", True, (255, 0, 0)), (0, 120)) diff --git a/src/engine/sound_manager.py b/src/engine/sound_manager.py index 0bd0f73..58af34a 100644 --- a/src/engine/sound_manager.py +++ b/src/engine/sound_manager.py @@ -1,4 +1,5 @@ from pygame import mixer +from random import randint class SoundManager: def __init__(self, music_base_volume: float): @@ -9,6 +10,7 @@ class SoundManager: self.music_current_song = "" self.music_play_playlist = False self.music_current_index = 0 + self.music_shuffle_playlist = True self.music_before_pause_pos = 0 self.music_before_pause_song = "" @@ -39,16 +41,27 @@ class SoundManager: if self.music_current_song in self.music_playlist: just_played_index = self.music_playlist.index(self.music_current_song) - if len(self.music_playlist) - 1 <= just_played_index: # Dernier son de la playlist / la playlist a rétréci entre temps + if self.music_shuffle_playlist and len(self.music_playlist) != 1: + while True: + new_index = randint(0, len(self.music_playlist) - 1) + if new_index != just_played_index: + break + + self.music_current_index = new_index + self.__music_play(self.music_playlist[new_index]) + + elif len(self.music_playlist) - 1 <= just_played_index: # Dernier son de la playlist / la playlist a rétréci entre temps self.music_current_index = 0 self.__music_play(self.music_playlist[0]) # Recommence depuis le début de la playlist + else: self.music_current_index = just_played_index + 1 self.__music_play(self.music_playlist[self.music_current_index]) # Joue la musique suivante dans la playlist - else: # Song removed from playlist, no idea what was the index, starting again from start - self.music_current_index = 0 - self.__music_play(self.music_playlist[0]) + else: # Song removed from playlist, no idea what was the index, starting again from start or from random index if playlist_shuffle = True + new_index = randint(0, len(self.music_playlist) - 1) + self.music_current_index = new_index + self.__music_play(self.music_playlist[new_index]) @@ -104,5 +117,8 @@ class SoundManager: def music_stop_playlist(self): self.music_play_playlist = False + def music_playlist_set_shuffle(self, shuffle: bool): + self.music_shuffle_playlist = shuffle + def music_next(self): self.music_next_request = True