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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
3 from pygame import Rect
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
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
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
8 TILE_SIZE = (64, 64)
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
9
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
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
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
44 def __init__(self, pos, image):
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
45 Sprite.__init__(self)
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
46 self.tile_pos = pos
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
47 self.image = image
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
48 self.rect = Rect((pos[0] * TILE_SIZE[0], pos[1] * TILE_SIZE[1]), TILE_SIZE)
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
49
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
50
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
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
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
61