From be27763f8be0f647cbe17ecee8c782901ce2cede Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Sat, 18 Jun 2016 22:13:19 +0200 Subject: Move classes to separate file --- helpers/action.py | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 helpers/action.py (limited to 'helpers/action.py') diff --git a/helpers/action.py b/helpers/action.py new file mode 100644 index 0000000..a68de90 --- /dev/null +++ b/helpers/action.py @@ -0,0 +1,119 @@ +import pygame +import time + +class Action: + action_types = [ + 'command', + 'pause', + 'play', + 'stop', + 'stop_all_actions', + 'volume', + 'wait', + ] + + def __init__(self, action, key, **kwargs): + if action in self.action_types: + self.action = action + else: + raise Exception("Unknown action {}".format(action)) + + self.key = key + self.arguments = kwargs + + def ready(self): + if 'music' in self.arguments: + return self.arguments['music'].loaded + else: + return True + + def run(self): + print(getattr(self, self.action + "_print")(**self.arguments)) + return getattr(self, self.action)(**self.arguments) + + def command(self, command = "", **kwargs): + pass + + def pause(self, music = None, **kwargs): + if music is not None: + music.pause() + else: + pygame.mixer.pause() + + 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() + else: + pygame.mixer.unpause() + + def stop(self, music = None, fade_out = 0, **kwargs): + if music is not None: + music.stop() + 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 + + def wait(self, duration = 0, **kwargs): + time.sleep(duration) + + def command_print(self, command = "", **kwargs): + return "running command {}".format(command) + + def pause_print(self, music = None, **kwargs): + if music is not None: + return "pausing {}".format(music.filename) + else: + return "pausing all musics" + + def play_print(self, music = None, fade_in = 0, start_at = 0, + restart_if_running = False, volume = 100, **kwargs): + message = "starting " + if music is not None: + message += music.filename + else: + message += "music" + + if start_at != 0: + message += " at {}s".format(start_at) + + if fade_in != 0: + message += " with {}s fade_in".format(fade_in) + + message += " at volume {}%".format(volume) + + if restart_if_running: + message += " (restarting if already running)" + + return message + + def stop_print(self, music = None, fade_out = 0, **kwargs): + if music is not None: + if fade_out == 0: + return "stopping music {}".format(music.filename) + else: + return "stopping music {} with {}s fadeout".format(music.filename, fade_out) + else: + if fade_out == 0: + return "stopping all musics" + else: + return "stopping all musics with {}s fadeout".format(fade_out) + + def stop_all_actions_print(self): + return "stopping all actions" + + def volume_print(self, music = None, value = 100, *kwargs): + if music is not None: + return "setting volume of {} to {}%".format(music.filename, value) + else: + return "setting volume to {}%".format(value) + + def wait_print(self, duration, **kwargs): + return "waiting {}s".format(duration) + + -- cgit v1.2.3