annotate skaapsteker/sprites/base.py @ 88:bf4adb40ca3c

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