Mercurial > nagslang
changeset 176:054944c6472b
Initial door object
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Tue, 03 Sep 2013 16:12:15 +0200 |
parents | f409af31cb7b |
children | bf11d3bb2d6b |
files | nagslang/constants.py nagslang/game_object.py |
diffstat | 2 files changed, 28 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/nagslang/constants.py Tue Sep 03 16:11:50 2013 +0200 +++ b/nagslang/constants.py Tue Sep 03 16:12:15 2013 +0200 @@ -14,6 +14,7 @@ COLLISION_TYPE_SWITCH = 3 COLLISION_TYPE_BOX = 4 COLLISION_TYPE_ENEMY = 5 +COLLISION_TYPE_DOOR = 6 SWITCH_PUSHERS = [COLLISION_TYPE_PLAYER, COLLISION_TYPE_BOX]
--- a/nagslang/game_object.py Tue Sep 03 16:11:50 2013 +0200 +++ b/nagslang/game_object.py Tue Sep 03 16:12:15 2013 +0200 @@ -6,9 +6,10 @@ from nagslang.constants import ( SWITCH_PUSHERS, COLLISION_TYPE_SWITCH, COLLISION_TYPE_BOX, ZORDER_LOW, - ZORDER_FLOOR) + ZORDER_FLOOR, COLLISION_TYPE_DOOR, COLLISION_TYPE_PLAYER) from nagslang.options import options from nagslang.resources import resources +from nagslang.events import ScreenChange class PuzzleGlue(object): @@ -382,3 +383,28 @@ SingleShapePhysicser(space, self.shape), ImageRenderer(resources.get_image('objects', 'crate.png')), ) + + +class Door(GameObject): + zorder = ZORDER_FLOOR + + def __init__(self, space, position, destination, dest_pos): + body = make_body(pymunk.inf, pymunk.inf, position, damping=0.5) + self.shape = pymunk.Poly( + body, [(-32, -32), (32, -32), (32, 32), (-32, 32)]) + self.shape.collision_type = COLLISION_TYPE_DOOR + self.shape.sensor = True + self.destination = destination + self.dest_pos = tuple(dest_pos) + super(Door, self).__init__( + SingleShapePhysicser(space, self.shape), + ImageRenderer(resources.get_image('objects', 'door.png')), + ) + + def animate(self): + space = self.get_space() + for shape in space.shape_query(self.get_shape()): + if shape.collision_type == COLLISION_TYPE_PLAYER: + # Force to new position + shape.body.position = self.dest_pos + ScreenChange.post(self.destination)