X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=helpers%2Faction.py;h=8a69fae3a967f4dd020f7d037e89415a7de072e3;hb=0e5d59f77586134da457ed7a3c57fc99649be590;hp=a68de90e5f1348934804d08c2a194fac14133eb1;hpb=be27763f8be0f647cbe17ecee8c782901ce2cede;p=perso%2FImmae%2FProjets%2FPython%2FMusicSampler.git diff --git a/helpers/action.py b/helpers/action.py index a68de90..8a69fae 100644 --- a/helpers/action.py +++ b/helpers/action.py @@ -43,23 +43,37 @@ class Action: def play(self, music = None, fade_in = 0, start_at = 0, restart_if_running = False, volume = 100, **kwargs): if music is not None: - music.play() + if restart_if_running: + if music.is_playing(): + music.stop() + music.play(volume = volume, fade_in = fade_in, start_at = start_at) + else: + if not music.is_playing(): + music.play(volume = volume, fade_in = fade_in, start_at = start_at) else: pygame.mixer.unpause() def stop(self, music = None, fade_out = 0, **kwargs): if music is not None: - music.stop() + music.stop(fade_out = fade_out) else: - pygame.mixer.stop() + if fade_out > 0: + pygame.fadeout(fade_out * 1000) + else: + pygame.mixer.stop() def stop_all_actions(self, **kwargs): self.key.mapping.stop_all_running() def volume(self, music = None, value = 100, **kwargs): - pass + if music is not None: + music.set_volume(value) + else: + pass def wait(self, duration = 0, **kwargs): + # FIXME: Make it stoppable + # http://stackoverflow.com/questions/29082268/python-time-sleep-vs-event-wait time.sleep(duration) def command_print(self, command = "", **kwargs): @@ -104,10 +118,10 @@ class Action: else: return "stopping all musics with {}s fadeout".format(fade_out) - def stop_all_actions_print(self): + def stop_all_actions_print(self, **kwargs): return "stopping all actions" - def volume_print(self, music = None, value = 100, *kwargs): + def volume_print(self, music = None, value = 100, **kwargs): if music is not None: return "setting volume of {} to {}%".format(music.filename, value) else: