From 6280ea432758f7c9487bb48d599c86b99528c92d Mon Sep 17 00:00:00 2001 From: Gabriel Eirea Date: Sat, 10 Mar 2012 00:00:30 +0000 Subject: Added layers and simplified event calling --- (limited to 'rayito/RtoPlayer.py') diff --git a/rayito/RtoPlayer.py b/rayito/RtoPlayer.py index d9f5e6e..4e8f5c9 100755 --- a/rayito/RtoPlayer.py +++ b/rayito/RtoPlayer.py @@ -46,7 +46,7 @@ class RtoPlayer(): self._finished = False self._canvas = pygame.Surface(size) self._last_update = 0 - self._active_objects = set() + self._active_objects = list() self._tl_index = 0 self._tl_length = self._timeline.get_length() self._loop = loop @@ -81,50 +81,25 @@ class RtoPlayer(): if self._paused or self._finished: return # read events between last_update and time - # TODO: must be generalized while self._timeline.get_time(self._tl_index) <= \ time - self._loop_time - self._pause_time: - if self._timeline.get_event(self._tl_index) == 'show': - self._active_objects.add(self._timeline.get_object(self._tl_index)) - self._timeline.get_object(self._tl_index).show() - elif self._timeline.get_event(self._tl_index) == 'hide': - self._active_objects.remove(self._timeline.get_object(self._tl_index)) - self._timeline.get_object(self._tl_index).hide() - elif self._timeline.get_event(self._tl_index) == 'move_by': - self._timeline.get_object(self._tl_index).move_by( - self._timeline.get_params(self._tl_index)) - elif self._timeline.get_event(self._tl_index) == 'move_to': - self._timeline.get_object(self._tl_index).move_to( - self._timeline.get_params(self._tl_index)) - elif self._timeline.get_event(self._tl_index) == 'scale_by': - self._timeline.get_object(self._tl_index).scale_by( - self._timeline.get_params(self._tl_index)) - elif self._timeline.get_event(self._tl_index) == 'scale_to': - self._timeline.get_object(self._tl_index).scale_to( - self._timeline.get_params(self._tl_index)) - elif self._timeline.get_event(self._tl_index) == 'flip_hor': - self._timeline.get_object(self._tl_index).flip_hor() - elif self._timeline.get_event(self._tl_index) == 'flip_ver': - self._timeline.get_object(self._tl_index).flip_ver() - elif self._timeline.get_event(self._tl_index) == 'rotate': - self._timeline.get_object(self._tl_index).rotate( - self._timeline.get_params(self._tl_index)) - elif self._timeline.get_event(self._tl_index) == 'move_start': - self._timeline.get_object(self._tl_index).move_start( - self._timeline.get_params(self._tl_index)) - elif self._timeline.get_event(self._tl_index) == 'move_stop': - self._timeline.get_object(self._tl_index).move_stop() - elif self._timeline.get_event(self._tl_index) == 'next_text': - self._timeline.get_object(self._tl_index).next_text() - elif self._timeline.get_event(self._tl_index) == 'restart': - self._timeline.get_object(self._tl_index).restart() - elif self._timeline.get_event(self._tl_index) == 'update_frame': - self._timeline.get_object(self._tl_index).update_frame( - self._timeline.get_params(self._tl_index)) - elif self._timeline.get_event(self._tl_index) == 'pause': + ev = self._timeline.get_event(self._tl_index) + ob = self._timeline.get_object(self._tl_index) + pa = self._timeline.get_params(self._tl_index) + try: + if pa == None: + getattr(ob,ev)() + else: + getattr(ob,ev)(pa) + except: + print("Event " + ev + " not defined in object " + str(ob)) + if ev == 'show': + self._active_objects.append(ob) + self._active_objects.sort(key=lambda ob:ob.get_layer()) + elif ev == 'hide': + self._active_objects.remove(ob) + elif ev == 'pause': self.pause() - elif self._timeline.get_event(self._tl_index) == 'play': - self._timeline.get_object(self._tl_index).play() # update index and check boundary self._tl_index += 1 if self._tl_index == self._tl_length: @@ -147,7 +122,6 @@ class RtoPlayer(): self._canvas.blit(self._bg_image, (0,0)) else: self._canvas.fill(self._bg_color) - # TODO: order active objects by layer # render active objects on canvas for obj in self._active_objects: obj.render(self._canvas) -- cgit v0.9.1