Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/rayito/RtoPlayer.py
diff options
context:
space:
mode:
Diffstat (limited to 'rayito/RtoPlayer.py')
-rwxr-xr-xrayito/RtoPlayer.py60
1 files changed, 17 insertions, 43 deletions
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)