annotate nagslang/collectable.py @ 392:1b7b0b8e8275

screenshot with dead aliens and keycards
author Adrianna Pińska <adrianna.pinska@gmail.com>
date Sat, 07 Sep 2013 01:03:46 +0200
parents 51deb78cae52
children 811481b20689
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
378
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
1 import pymunk
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
2
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
3 from nagslang import environment
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
4 from nagslang import render
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
5 from nagslang.constants import ZORDER_LOW
385
51deb78cae52 Use a result object to get new drawables back to the area
Stefano Rivera <stefano@rivera.za.net>
parents: 378
diff changeset
6 from nagslang.game_object import (GameObject, SingleShapePhysicser, Result,
51deb78cae52 Use a result object to get new drawables back to the area
Stefano Rivera <stefano@rivera.za.net>
parents: 378
diff changeset
7 make_body)
378
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
8 from nagslang.resources import resources
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
9
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
10
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
11 class CollectibleGameObject(GameObject):
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
12 zorder = ZORDER_LOW
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
13
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
14 def __init__(self, space, name, shape, renderer):
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
15 self._name = name
385
51deb78cae52 Use a result object to get new drawables back to the area
Stefano Rivera <stefano@rivera.za.net>
parents: 378
diff changeset
16 self.collected = False
378
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
17 shape.sensor = True
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
18 super(CollectibleGameObject, self).__init__(
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
19 SingleShapePhysicser(space, shape),
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
20 renderer,
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
21 interactible=environment.Interactible(
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
22 environment.Action(
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
23 self._collect, environment.HumanFormCondition())),
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
24 )
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
25
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
26 def _collect(self, protagonist):
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
27 protagonist.add_item(self._name)
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
28 self.physicser.remove_from_space()
385
51deb78cae52 Use a result object to get new drawables back to the area
Stefano Rivera <stefano@rivera.za.net>
parents: 378
diff changeset
29 self.collected = True
51deb78cae52 Use a result object to get new drawables back to the area
Stefano Rivera <stefano@rivera.za.net>
parents: 378
diff changeset
30
51deb78cae52 Use a result object to get new drawables back to the area
Stefano Rivera <stefano@rivera.za.net>
parents: 378
diff changeset
31 def update(self, dt):
51deb78cae52 Use a result object to get new drawables back to the area
Stefano Rivera <stefano@rivera.za.net>
parents: 378
diff changeset
32 if self.collected:
51deb78cae52 Use a result object to get new drawables back to the area
Stefano Rivera <stefano@rivera.za.net>
parents: 378
diff changeset
33 return Result(remove=[self])
378
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
34
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
35
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
36 class Gun(CollectibleGameObject):
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
37 def __init__(self, space, position):
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
38 body = make_body(None, None, position)
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
39 self.shape = pymunk.Circle(body, 20)
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
40 super(Gun, self).__init__(
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
41 space, 'gun', self.shape,
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
42 render.ImageRenderer(resources.get_image('objects', 'gun.png')),
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
43 )
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
44
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
45
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
46 class KeyCard(CollectibleGameObject):
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
47 def __init__(self, space, position, name):
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
48 body = make_body(None, None, position)
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
49 self.shape = pymunk.Circle(body, 20)
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
50 super(KeyCard, self).__init__(
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
51 space, name, self.shape,
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
52 render.ImageRenderer(
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
53 resources.get_image('objects', '%s.png' % (name,))),
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
54 )
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
55
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
56 @classmethod
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
57 def requires(cls):
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
58 return [("name", "string"), ("position", "coordinates"),
8069c9be1c3e Create a nagslang.collectable module for collectables
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
59 ("item_name", "string")]