Mercurial > mamba
annotate mamba/sprites.py @ 135:e0b4bfc51336
fixed filenames; updated suffixes in code
author | Adrianna Pińska <adrianna.pinska@gmail.com> |
---|---|
date | Sun, 11 Sep 2011 22:46:46 +0200 |
parents | 9bef49d6db86 |
children | 00ada2e29798 |
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 | |
130
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
5 from mamba import mutators |
50 | 6 |
7 | |
8 def tile_sizify(pos): | |
9 ts_x, ts_y = TILE_SIZE | |
10 p_x, p_y = pos | |
11 return (ts_x * p_x, ts_y * p_y) | |
12 | |
13 | |
14 class BaseSprite(Sprite): | |
15 tileset = 'common' | |
16 | |
130
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
17 variant_suffix_0 = '' |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
18 variant_suffix_1 = '' |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
19 variant_suffix_2o = '' |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
20 variant_suffix_2a = '' |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
21 variant_suffix_3 = '' |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
22 variant_suffix_4 = '' |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
23 |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
24 def __init__(self, tile_char=None, tileset=None, image_name=None, |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
25 mutators=()): |
98 | 26 super(BaseSprite, self).__init__() |
105
87acd3ddc972
Tell sprites what their tile char is.
Jeremy Thurgood <firxen@gmail.com>
parents:
104
diff
changeset
|
27 self.tile_char = tile_char |
98 | 28 if tileset is not None: |
29 self.tileset = tileset | |
30 if image_name is not None: | |
130
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
31 self.image = self.load_image(image_name, mutators=mutators) |
56 | 32 |
98 | 33 def load_image(self, image_name, mutators=()): |
34 return load_image('tiles/%s/%s.png' % (self.tileset, image_name), | |
35 mutators) | |
50 | 36 |
37 def set_tile_pos(self, tile_pos): | |
81
c8d6ca296884
Better level entry points.
Jeremy Thurgood <firxen@gmail.com>
parents:
71
diff
changeset
|
38 self.tile_pos = tile_pos |
50 | 39 self.rect = self.image.get_rect().move(tile_sizify(tile_pos)) |
40 | |
130
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
41 def get_tile_variant_modifiers(self, image_name, top, bottom, left, right): |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
42 variant_str = ''.join('X' if d else '.' |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
43 for d in [top, bottom, left, right]) |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
44 variant_suffix, mutator = { |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
45 '....': (self.variant_suffix_0, mutators.NULL), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
46 'X...': (self.variant_suffix_1, mutators.UP), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
47 '.X..': (self.variant_suffix_1, mutators.DOWN), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
48 '..X.': (self.variant_suffix_1, mutators.LEFT), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
49 '...X': (self.variant_suffix_1, mutators.RIGHT), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
50 'XX..': (self.variant_suffix_2o, mutators.VERT), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
51 '..XX': (self.variant_suffix_2o, mutators.HORIZ), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
52 'X.X.': (self.variant_suffix_2a, mutators.TL), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
53 'X..X': (self.variant_suffix_2a, mutators.TR), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
54 '.XX.': (self.variant_suffix_2a, mutators.BL), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
55 '.X.X': (self.variant_suffix_2a, mutators.BR), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
56 '.XXX': (self.variant_suffix_3, mutators.UP), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
57 'X.XX': (self.variant_suffix_3, mutators.DOWN), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
58 'XX.X': (self.variant_suffix_3, mutators.LEFT), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
59 'XXX.': (self.variant_suffix_3, mutators.RIGHT), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
60 'XXXX': (self.variant_suffix_4, mutators.NULL), |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
61 }[variant_str] |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
62 |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
63 return (image_name + variant_suffix, (mutator,)) |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
64 |
50 | 65 |
66 class TileSprite(BaseSprite): | |
104 | 67 def __init__(self, tileset, **kw): |
68 kw['tileset'] = tileset | |
69 super(TileSprite, self).__init__(**kw) | |
50 | 70 |
71 | |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
72 class SingleImageTileSprite(TileSprite): |
121
f670ef33ae2e
Comment SingleImageTileSprite convention
Neil Muller <drnlmuller@gmail.com>
parents:
105
diff
changeset
|
73 |
f670ef33ae2e
Comment SingleImageTileSprite convention
Neil Muller <drnlmuller@gmail.com>
parents:
105
diff
changeset
|
74 image_name = None # subclasses will override this |
f670ef33ae2e
Comment SingleImageTileSprite convention
Neil Muller <drnlmuller@gmail.com>
parents:
105
diff
changeset
|
75 |
104 | 76 def __init__(self, **kw): |
77 kw.setdefault('image_name', self.image_name) | |
78 super(SingleImageTileSprite, self).__init__(**kw) | |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
79 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
80 |
56 | 81 class DoorSprite(TileSprite): |
104 | 82 def __init__(self, colour, **kw): |
57 | 83 self.colour = colour |
56 | 84 image_name = 'door_%s' % (colour,) |
104 | 85 kw.setdefault('image_name', image_name) |
86 super(DoorSprite, self).__init__(**kw) | |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
87 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
88 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
89 class EntrySprite(SingleImageTileSprite): |
104 | 90 image_name = 'entrance-1' |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
91 |
104 | 92 def __init__(self, direction, **kw): |
81
c8d6ca296884
Better level entry points.
Jeremy Thurgood <firxen@gmail.com>
parents:
71
diff
changeset
|
93 self.direction = direction |
104 | 94 super(EntrySprite, self).__init__(**kw) |
81
c8d6ca296884
Better level entry points.
Jeremy Thurgood <firxen@gmail.com>
parents:
71
diff
changeset
|
95 |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
96 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
97 class ExitSprite(SingleImageTileSprite): |
104 | 98 image_name = 'exit-1' |
71
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
99 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
100 |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
101 class PuddleSprite(SingleImageTileSprite): |
58557a89ec86
Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents:
57
diff
changeset
|
102 image_name = 'puddle' |
130
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
103 |
135
e0b4bfc51336
fixed filenames; updated suffixes in code
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
130
diff
changeset
|
104 variant_suffix_0 = '-0' |
e0b4bfc51336
fixed filenames; updated suffixes in code
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
130
diff
changeset
|
105 variant_suffix_1 = '-1' |
e0b4bfc51336
fixed filenames; updated suffixes in code
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
130
diff
changeset
|
106 variant_suffix_2a = '-2a' |
130
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
107 |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
108 def __init__(self, variant=(0, 0, 0, 0), **kw): |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
109 super(PuddleSprite, self).__init__(**kw) |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
110 image_name, mutators = self.get_tile_variant_modifiers(self.image_name, |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
111 *variant) |
9bef49d6db86
Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents:
121
diff
changeset
|
112 self.image = self.load_image(image_name, mutators) |