changeset 162:507df17cfbaf

Pictures for lights and switches.
author Jeremy Thurgood <firxen@gmail.com>
date Tue, 03 Sep 2013 01:00:29 +0200
parents 500c5a68607c
children 5d00ee725617
files nagslang/game_object.py
diffstat 1 files changed, 24 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/nagslang/game_object.py	Tue Sep 03 00:52:22 2013 +0200
+++ b/nagslang/game_object.py	Tue Sep 03 01:00:29 2013 +0200
@@ -5,7 +5,8 @@
 import pymunk.pygame_util
 
 from nagslang.constants import (
-    SWITCH_PUSHERS, COLLISION_TYPE_SWITCH, COLLISION_TYPE_BOX, ZORDER_LOW)
+    SWITCH_PUSHERS, COLLISION_TYPE_SWITCH, COLLISION_TYPE_BOX, ZORDER_LOW,
+    ZORDER_FLOOR)
 from nagslang.options import options
 from nagslang.resources import resources
 
@@ -182,6 +183,14 @@
         super(ImageRenderer, self).render(surface)
 
 
+class ImageStateRenderer(ImageRenderer):
+    def __init__(self, state_images):
+        self._state_images = state_images
+
+    def get_image(self):
+        return self._state_images[self.game_object.puzzler.get_state()]
+
+
 class FacingImageRenderer(ImageRenderer):
     def __init__(self, left_image, right_image):
         self._images = {
@@ -296,6 +305,8 @@
     This has a rendery thing, physicsy things and maybe some other things.
     """
 
+    zorder = ZORDER_LOW
+
     def __init__(self, physicser, renderer, puzzler=None):
         self.physicser = physicser
         physicser.set_game_object(self)
@@ -305,7 +316,6 @@
         self.puzzler = puzzler
         if puzzler is not None:
             puzzler.set_game_object(self)
-        self.zorder = ZORDER_LOW
 
     def get_space(self):
         return self.physicser.get_space()
@@ -327,6 +337,8 @@
 
 
 class FloorSwitch(GameObject):
+    zorder = ZORDER_FLOOR
+
     def __init__(self, space, position):
         body = make_body(None, None, position)
         self.shape = pymunk.Circle(body, 30)
@@ -334,12 +346,17 @@
         self.shape.sensor = True
         super(FloorSwitch, self).__init__(
             SingleShapePhysicser(space, self.shape),
-            ShapeStateRenderer(),
+            ImageStateRenderer({
+                True: resources.get_image('objects', 'sensor_on.png'),
+                False: resources.get_image('objects', 'sensor_off.png'),
+            }),
             FloorSwitchPuzzler(),
         )
 
 
 class FloorLight(GameObject):
+    zorder = ZORDER_FLOOR
+
     def __init__(self, space, position, state_source):
         body = make_body(None, None, position)
         self.shape = pymunk.Circle(body, 10)
@@ -347,7 +364,10 @@
         self.shape.sensor = True
         super(FloorLight, self).__init__(
             SingleShapePhysicser(space, self.shape),
-            ShapeStateRenderer(),
+            ImageStateRenderer({
+                True: resources.get_image('objects', 'light_on.png'),
+                False: resources.get_image('objects', 'light_off.png'),
+            }),
             StateProxyPuzzler(state_source),
         )