Mercurial > nagslang
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 |
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")] |