Mercurial > nagslang
view nagslang/collectable.py @ 385:51deb78cae52
Use a result object to get new drawables back to the area
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Fri, 06 Sep 2013 23:58:15 +0200 |
parents | 8069c9be1c3e |
children | 811481b20689 |
line wrap: on
line source
import pymunk from nagslang import environment from nagslang import render from nagslang.constants import ZORDER_LOW from nagslang.game_object import (GameObject, SingleShapePhysicser, Result, make_body) from nagslang.resources import resources class CollectibleGameObject(GameObject): zorder = ZORDER_LOW def __init__(self, space, name, shape, renderer): self._name = name self.collected = False shape.sensor = True super(CollectibleGameObject, self).__init__( SingleShapePhysicser(space, shape), renderer, interactible=environment.Interactible( environment.Action( self._collect, environment.HumanFormCondition())), ) def _collect(self, protagonist): protagonist.add_item(self._name) self.physicser.remove_from_space() self.collected = True def update(self, dt): if self.collected: return Result(remove=[self]) class Gun(CollectibleGameObject): def __init__(self, space, position): body = make_body(None, None, position) self.shape = pymunk.Circle(body, 20) super(Gun, self).__init__( space, 'gun', self.shape, render.ImageRenderer(resources.get_image('objects', 'gun.png')), ) class KeyCard(CollectibleGameObject): def __init__(self, space, position, name): body = make_body(None, None, position) self.shape = pymunk.Circle(body, 20) super(KeyCard, self).__init__( space, name, self.shape, render.ImageRenderer( resources.get_image('objects', '%s.png' % (name,))), ) @classmethod def requires(cls): return [("name", "string"), ("position", "coordinates"), ("item_name", "string")]