Mercurial > mamba
annotate mamba/sprites.py @ 105:87acd3ddc972
Tell sprites what their tile char is.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 19:59:14 +0200 |
parents | 5b92ff941de3 |
children | f670ef33ae2e |
rev | line source |
---|---|
50 | 1 from pygame.sprite import Sprite |
2 | |
3 from mamba.data import load_image | |
4 from mamba.constants import TILE_SIZE | |
5 | |
6 | |
7 def tile_sizify(pos): | |
8 ts_x, ts_y = TILE_SIZE | |
9 p_x, p_y = pos | |
10 return (ts_x * p_x, ts_y * p_y) | |
11 | |
12 | |
13 class BaseSprite(Sprite): | |
14 tileset = 'common' | |
15 | |
105
87acd3ddc972
Tell sprites what their tile char is.
Jeremy Thurgood <firxen@gmail.com>
parents:
104
diff
changeset
|
16 def __init__(self, tile_char=None, tileset=None, image_name=None): |
98 | 17 super(BaseSprite, self).__init__() |
105
87acd3ddc972
Tell sprites what their tile char is.
Jeremy Thurgood <firxen@gmail.com>
parents:
104
diff
changeset
|
18 self.tile_char = tile_char |
98 | 19 if tileset is not None: |
20 self.tileset = tileset | |
21 if image_name is not None: | |
22 self.image = self.load_image(image_name) | |
56 | 23 |
98 | 24 def load_image(self, image_name, mutators=()): |
25 return load_image('tiles/%s/%s.png' % (self.tileset, image_name), | |
26 mutators) | |
50 | 27 |
28 def set_tile_pos(self, tile_pos): | |
81
c8d6ca296884
Better level entry points.
Jeremy Thurgood <firxen@gmail.com>
parents:
71
diff
changeset
|
29 self.tile_pos = tile_pos |
50 | 30 self.rect = self.image.get_rect().move(tile_sizify(tile_pos)) |
31 | |
32 | |
33 class TileSprite(BaseSprite): | |
104 | 34 def __init__(self, tileset, **kw): |
35 kw['tileset'] = tileset | |
36 super(TileSprite, self).__init__(**kw) | |
50 | 37 |
38 | |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
39 class SingleImageTileSprite(TileSprite): |
104 | 40 def __init__(self, **kw): |
41 kw.setdefault('image_name', self.image_name) | |
42 super(SingleImageTileSprite, self).__init__(**kw) | |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
43 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
44 |
56 | 45 class DoorSprite(TileSprite): |
104 | 46 def __init__(self, colour, **kw): |
57 | 47 self.colour = colour |
56 | 48 image_name = 'door_%s' % (colour,) |
104 | 49 kw.setdefault('image_name', image_name) |
50 super(DoorSprite, self).__init__(**kw) | |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
51 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
52 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
53 class EntrySprite(SingleImageTileSprite): |
104 | 54 image_name = 'entrance-1' |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
55 |
104 | 56 def __init__(self, direction, **kw): |
81
c8d6ca296884
Better level entry points.
Jeremy Thurgood <firxen@gmail.com>
parents:
71
diff
changeset
|
57 self.direction = direction |
104 | 58 super(EntrySprite, self).__init__(**kw) |
81
c8d6ca296884
Better level entry points.
Jeremy Thurgood <firxen@gmail.com>
parents:
71
diff
changeset
|
59 |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
60 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
61 class ExitSprite(SingleImageTileSprite): |
104 | 62 image_name = 'exit-1' |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
63 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
64 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
65 class PuddleSprite(SingleImageTileSprite): |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
66 image_name = 'puddle' |