Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriel Eirea <geirea@gmail.com>2012-03-10 00:00:30 (GMT)
committer Gabriel Eirea <geirea@gmail.com>2012-03-10 00:00:30 (GMT)
commit6280ea432758f7c9487bb48d599c86b99528c92d (patch)
tree94671d91614f6299cfc0e5ada8376723b0108c38
parentbdbef7552fcc5917991fe0a168734fe7c8674952 (diff)
Added layers and simplified event callingHEADmaster
-rw-r--r--TODO3
-rwxr-xr-xrayito/RtoObject.py14
-rwxr-xr-xrayito/RtoPlayer.py60
3 files changed, 30 insertions, 47 deletions
diff --git a/TODO b/TODO
index fb27655..4b47f08 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,3 @@
-- add check for existence of event
-- generalized event calling
-- layers
- add events
- add objects
- editor?
diff --git a/rayito/RtoObject.py b/rayito/RtoObject.py
index 5963f4c..1c731f3 100755
--- a/rayito/RtoObject.py
+++ b/rayito/RtoObject.py
@@ -52,6 +52,9 @@ class RtoObject():
def change_layer(self, new_layer):
self._layer = new_layer
+ def get_layer(self):
+ return self._layer
+
def move_start(self, vel):
# vel should be in pixels per millisecond
self._moving = True
@@ -83,6 +86,8 @@ class RtoImage(RtoObject):
""" Class for rayito images.
image: pygame surface with the image
+ position: (x, y) of upper-left corner in pixels
+ layer: layer number, high is up, low is down
"""
def __init__(self, image, position, layer = 0):
@@ -142,10 +147,13 @@ class RtoImage(RtoObject):
class RtoDialog(RtoObject):
"""Class for rayito dialogs
- text: list with text to display; each element can have \n to separate lines
+ text: list with text to display;
+ each element can have \n to separate lines
font: pygame font to use
bg_color: background color (R, G, B)
fg_color: text color (R, G, B)
+ position: (x, y) of upper-left corner in pixels
+ layer: layer number, high is up, low is down
"""
def __init__(self, text, font, bg_color, fg_color, position, layer = 0):
@@ -209,6 +217,8 @@ class RtoButton(RtoObject):
font: pygame font to use
bg_color: background color (R, G, B)
fg_color: text color (R, G, B)
+ position: (x, y) of upper-left corner in pixels
+ layer: layer number, high is up, low is down
"""
def __init__(self, text, font, bg_color, fg_color, position, layer = 0):
@@ -262,6 +272,8 @@ class RtoSprite(RtoObject):
next_frames: list with next frame from current one
dxs: list with dx for current frame (in pixels)
dys: list with dy for current frame (in pixels)
+ position: (x, y) of upper-left corner in pixels
+ layer: layer number, high is up, low is down
"""
def __init__(self, images, frames, next_frames, dxs, dys,
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)