annotate skaapsteker/sprites/base.py @ 47:215e2e74c244

Better dummy monster.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 03 Apr 2011 21:01:45 +0200
parents 38d2f7c43d86
children 1be1ca704346
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
47
215e2e74c244 Better dummy monster.
Jeremy Thurgood <firxen@gmail.com>
parents: 35
diff changeset
6 from skaapsteker import data
18
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
7
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
8
35
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
9 TILE_SIZE = (64, 64)
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
10
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
11
18
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
12 class Monster(Sprite):
47
215e2e74c244 Better dummy monster.
Jeremy Thurgood <firxen@gmail.com>
parents: 35
diff changeset
13 image_file = None
215e2e74c244 Better dummy monster.
Jeremy Thurgood <firxen@gmail.com>
parents: 35
diff changeset
14
25
fe87d828d093 Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents: 22
diff changeset
15 def __init__(self, pos, **opts):
fe87d828d093 Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents: 22
diff changeset
16 Sprite.__init__(self)
47
215e2e74c244 Better dummy monster.
Jeremy Thurgood <firxen@gmail.com>
parents: 35
diff changeset
17 self.image = data.load_image('sprites/' + self.image_file)
25
fe87d828d093 Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents: 22
diff changeset
18 self.starting_tile_pos = pos
47
215e2e74c244 Better dummy monster.
Jeremy Thurgood <firxen@gmail.com>
parents: 35
diff changeset
19 self.rect = self.image.get_rect(topleft=(pos[0]*TILE_SIZE[0], pos[1]*TILE_SIZE[1]))
25
fe87d828d093 Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents: 22
diff changeset
20 self.setup(**opts)
fe87d828d093 Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents: 22
diff changeset
21
fe87d828d093 Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents: 22
diff changeset
22
fe87d828d093 Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents: 22
diff changeset
23 def setup(self):
fe87d828d093 Very basic enemy support.
Jeremy Thurgood <firxen@gmail.com>
parents: 22
diff changeset
24 pass
18
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
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
27 class NPC(Sprite):
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
28 pass
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
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
31 class Player(Sprite):
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
32 pass
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
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
35 class Projectile(Sprite):
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 Item(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
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
42
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
43
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
44 class Geography(Sprite):
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
45 mobile = False
81974842b38e Add skeleton for physics and sprites.
Simon Cross <hodgestar@gmail.com>
parents:
diff changeset
46 gravitates = False
28
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
47
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
48
35
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
49 def __init__(self, pos, image):
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
50 Sprite.__init__(self)
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
51 self.tile_pos = pos
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
52 self.image = image
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
53 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
54
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
55
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
56
28
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
57 def find_sprite(descr):
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
58 """Create a sprite object from a dictionary describing it."""
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
59 descr = descr.copy()
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
60 stype = descr.pop("type")
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
61 mod_name, cls_name = stype.rsplit(".", 1)
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
62 mod_name = ".".join(["skaapsteker.sprites", mod_name])
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
63 mod = __import__(mod_name, fromlist=[cls_name])
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
64 cls = getattr(mod, cls_name)
94d5ebaa912f Example for global sprite importing.
Simon Cross <hodgestar@gmail.com>
parents: 25
diff changeset
65 return cls(**descr)
35
38d2f7c43d86 Sprite-based tiles. \o/
Jeremy Thurgood <firxen@gmail.com>
parents: 28
diff changeset
66