Mercurial > nagslang
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), )