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 3950ffa..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 = "" @@ -30,7 +32,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 @@ -40,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]) @@ -105,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