Mercurial > skaapsteker
annotate skaapsteker/sprites/base.py @ 35:38d2f7c43d86
Sprite-based tiles. \o/
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 03 Apr 2011 19:15:51 +0200 |
parents | 94d5ebaa912f |
children | 215e2e74c244 |
rev | line source |
---|---|
18
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
1 """Basic sprite classes.""" |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
2 |
35 | 3 from pygame import Rect |
4 | |
22
b815471d4b95
Move sprite base class into physics since they're tightly coupled.
Simon Cross <hodgestar@gmail.com>
parents:
18
diff
changeset
|
5 from skaapsteker.physics import Sprite |
18
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
6 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
7 |
35 | 8 TILE_SIZE = (64, 64) |
9 | |
10 | |
18
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
11 class Monster(Sprite): |
25
fe87d828d093
Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents:
22
diff
changeset
|
12 def __init__(self, pos, **opts): |
fe87d828d093
Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents:
22
diff
changeset
|
13 Sprite.__init__(self) |
fe87d828d093
Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents:
22
diff
changeset
|
14 self.starting_tile_pos = pos |
fe87d828d093
Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents:
22
diff
changeset
|
15 self.setup(**opts) |
fe87d828d093
Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents:
22
diff
changeset
|
16 |
fe87d828d093
Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents:
22
diff
changeset
|
17 |
fe87d828d093
Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents:
22
diff
changeset
|
18 def setup(self): |
fe87d828d093
Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents:
22
diff
changeset
|
19 pass |
18
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
20 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
21 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
22 class NPC(Sprite): |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
23 pass |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
24 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
25 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
26 class Player(Sprite): |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
27 pass |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
28 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
29 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
30 class Projectile(Sprite): |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
31 gravitates = False |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
32 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
33 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
34 class Item(Sprite): |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
35 mobile = False |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
36 gravitates = False |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
37 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
38 |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
39 class Geography(Sprite): |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
40 mobile = False |
81974842b38e
Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff
changeset
|
41 gravitates = False |
28
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
42 |
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
43 |
35 | 44 def __init__(self, pos, image): |
45 Sprite.__init__(self) | |
46 self.tile_pos = pos | |
47 self.image = image | |
48 self.rect = Rect((pos[0] * TILE_SIZE[0], pos[1] * TILE_SIZE[1]), TILE_SIZE) | |
49 | |
50 | |
51 | |
28
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
52 def find_sprite(descr): |
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
53 """Create a sprite object from a dictionary describing it.""" |
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
54 descr = descr.copy() |
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
55 stype = descr.pop("type") |
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
56 mod_name, cls_name = stype.rsplit(".", 1) |
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
57 mod_name = ".".join(["skaapsteker.sprites", mod_name]) |
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
58 mod = __import__(mod_name, fromlist=[cls_name]) |
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
59 cls = getattr(mod, cls_name) |
94d5ebaa912f
Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents:
25
diff
changeset
|
60 return cls(**descr) |
35 | 61 |