]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blobdiff - helpers/action.py
Add some actions
[perso/Immae/Projets/Python/MusicSampler.git] / helpers / action.py
index a68de90e5f1348934804d08c2a194fac14133eb1..8a69fae3a967f4dd020f7d037e89415a7de072e3 100644 (file)
@@ -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: