Mercurial > nagslang
changeset 126:c3af35561494
Cleaner switch/light rendering.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Mon, 02 Sep 2013 17:09:47 +0200 |
parents | 12be9632fa15 |
children | fe1f0bb4ecf0 |
files | nagslang/game_object.py |
diffstat | 1 files changed, 14 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/nagslang/game_object.py Mon Sep 02 16:57:31 2013 +0200 +++ b/nagslang/game_object.py Mon Sep 02 17:09:47 2013 +0200 @@ -174,10 +174,20 @@ super(FacingImageRenderer, self).render(surface) -class ShapeRenderer(Renderer): +class ShapeStateRenderer(Renderer): + """Renders the shape in a different colour depending on the state. + + Requires the game object it's attached to to have a puzzler. + """ def render(self, surface): + if self.game_object.puzzler.get_state(): + color = pygame.color.THECOLORS['green'] + else: + color = pygame.color.THECOLORS['red'] + + self.game_object.get_shape().color = color self._render_shape(surface) - super(ShapeRenderer, self).render(surface) + super(ShapeStateRenderer, self).render(surface) class GameObject(object): @@ -222,17 +232,10 @@ self.shape.sensor = True super(FloorSwitch, self).__init__( SingleShapePhysicser(space, self.shape), - ShapeRenderer(), + ShapeStateRenderer(), FloorSwitchPuzzler(), ) - def render(self, surface): - if self.puzzler.get_state(): - self.shape.color = pygame.color.THECOLORS['green'] - else: - self.shape.color = pygame.color.THECOLORS['red'] - super(FloorSwitch, self).render(surface) - class FloorLight(GameObject): def __init__(self, space, position, state_source): @@ -243,13 +246,6 @@ self.shape.sensor = True super(FloorLight, self).__init__( SingleShapePhysicser(space, self.shape), - ShapeRenderer(), + ShapeStateRenderer(), StateProxyPuzzler(state_source), ) - - def render(self, surface): - if self.puzzler.get_state(): - self.shape.color = pygame.color.THECOLORS['green'] - else: - self.shape.color = pygame.color.THECOLORS['red'] - super(FloorLight, self).render(surface)