annotate mamba/sprites.py @ 600:93cb9c1d2bb2

Update stray .iteritems to Python 3.
author Simon Cross <hodgestar@gmail.com>
date Sat, 14 Jan 2023 19:33:57 +0100
parents 6c61d5862310
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
50
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 from pygame.sprite import Sprite
199
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
2 from pygame import Rect
50
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3
212
e768056b0588 Refactor tile image loading stuff. More magic is good, right?
Jeremy Thurgood <firxen@gmail.com>
parents: 207
diff changeset
4 from mamba.data import load_tile_image
199
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
5 from mamba.constants import TILE_SIZE, UP, DOWN, LEFT, RIGHT
248
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
6 from mamba.engine import FlipArrowsEvent
282
56cd71696dff Use some sound files
Neil Muller <drnlmuller@gmail.com>
parents: 268
diff changeset
7 from mamba.sound import load_sound, play_sound
130
9bef49d6db86 Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 121
diff changeset
8 from mamba import mutators
50
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
9
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
10
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
11 COLOURS = {
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
12 'red': mutators.RED,
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
13 'blue': mutators.BLUE,
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
14 'yellow': mutators.YELLOW,
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
15 }
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
16
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
17
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
18 def colour_with_fittings(image_name, tileset, colour):
212
e768056b0588 Refactor tile image loading stuff. More magic is good, right?
Jeremy Thurgood <firxen@gmail.com>
parents: 207
diff changeset
19 fittings_mutator = mutators.Overlay("%s-fittings" % (image_name,), tileset)
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
20 return image_name, (COLOURS[colour], fittings_mutator)
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
21
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
22
300
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
23 def get_detail_mutator(image_name, tileset):
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
24 return mutators.Overlay("%s-detail" % (image_name,), tileset)
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
25
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
26
50
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
27 def tile_sizify(pos):
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
28 ts_x, ts_y = TILE_SIZE
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
29 p_x, p_y = pos
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
30 return (ts_x * p_x, ts_y * p_y)
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
31
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
32
230
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
33 def find_sprite(class_name):
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
34 cls = globals()[class_name]
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
35 assert isinstance(cls, type) and issubclass(cls, Sprite)
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
36 return cls
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
37
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
38
508
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
39 def find_special_sprites():
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
40 results = []
600
93cb9c1d2bb2 Update stray .iteritems to Python 3.
Simon Cross <hodgestar@gmail.com>
parents: 508
diff changeset
41 for cls_name, cls in globals().items():
508
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
42 if isinstance(cls, type) and issubclass(cls, Sprite):
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
43 if hasattr(cls, 'get_sprite_args'):
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
44 results.append((cls_name, cls))
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
45 return results
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
46
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
47
136
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
48 class SpriteImageVariants(object):
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
49 VARIANTS = {
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
50 '....': ('-0', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
51
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
52 'X...': ('-1', (mutators.R90,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
53 '.X..': ('-1', (mutators.R270,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
54 '..X.': ('-1', (mutators.NULL,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
55 '...X': ('-1', (mutators.R180,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
56
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
57 'XX..': ('-2o', (mutators.NULL,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
58 '..XX': ('-2o', (mutators.R90,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
59
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
60 'X.X.': ('-2a', (mutators.R180,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
61 'X..X': ('-2a', (mutators.R270,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
62 '.XX.': ('-2a', (mutators.R90,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
63 '.X.X': ('-2a', (mutators.NULL,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
64
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
65 '.XXX': ('-3', (mutators.R90,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
66 'X.XX': ('-3', (mutators.R270,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
67 'XX.X': ('-3', (mutators.NULL,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
68 'XXX.': ('-3', (mutators.R180,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
69
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
70 'XXXX': ('', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
71 }
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
72
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
73 def __init__(self, base_image_name):
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
74 self.base_image_name = base_image_name
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
75
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
76 def __call__(self, top, bottom, left, right):
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
77 variant_str = ''.join('X' if d else '.'
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
78 for d in [top, bottom, left, right])
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
79 variant_suffix, mutators = self.VARIANTS[variant_str]
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
80 return (self.base_image_name + variant_suffix, mutators)
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
81
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
82
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
83 class SolidSpriteImageVariants(SpriteImageVariants):
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
84 VARIANTS = {
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
85 '....': ('-0', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
86
144
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
87 'X...': ('-1', (mutators.R270,)),
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
88 '.X..': ('-1', (mutators.R90,)),
136
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
89 '..X.': ('-1', (mutators.NULL,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
90 '...X': ('-1', (mutators.R180,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
91
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
92 'XX..': ('', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
93 '..XX': ('', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
94
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
95 'X.X.': ('-2a', (mutators.R180,)),
144
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
96 'X..X': ('-2a', (mutators.R90,)),
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
97 '.XX.': ('-2a', (mutators.R270,)),
136
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
98 '.X.X': ('-2a', (mutators.NULL,)),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
99
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
100 '.XXX': ('', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
101 'X.XX': ('', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
102 'XX.X': ('', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
103 'XXX.': ('', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
104
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
105 'XXXX': ('', ()),
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
106 }
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
107
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
108
50
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
109 class BaseSprite(Sprite):
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
110 tileset = 'common'
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
111 variants_class = None
136
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
112 variants = None
180
d9ee0e50a78f Teach editor about THING_MAP
Neil Muller <drnlmuller@gmail.com>
parents: 168
diff changeset
113 name = None
181
061d711ba570 Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
114 alive = True
130
9bef49d6db86 Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 121
diff changeset
115
168
0fffb97db193 Add name field to sprites for editor
Neil Muller <drnlmuller@gmail.com>
parents: 164
diff changeset
116 def __init__(self, tileset=None, image_name=None, name=None,
0fffb97db193 Add name field to sprites for editor
Neil Muller <drnlmuller@gmail.com>
parents: 164
diff changeset
117 mutators=()):
98
7ce2d2d8381a Refactor BaseSprite.
Simon Cross <hodgestar@gmail.com>
parents: 81
diff changeset
118 super(BaseSprite, self).__init__()
168
0fffb97db193 Add name field to sprites for editor
Neil Muller <drnlmuller@gmail.com>
parents: 164
diff changeset
119 if name is not None:
0fffb97db193 Add name field to sprites for editor
Neil Muller <drnlmuller@gmail.com>
parents: 164
diff changeset
120 self.name = name
98
7ce2d2d8381a Refactor BaseSprite.
Simon Cross <hodgestar@gmail.com>
parents: 81
diff changeset
121 if tileset is not None:
7ce2d2d8381a Refactor BaseSprite.
Simon Cross <hodgestar@gmail.com>
parents: 81
diff changeset
122 self.tileset = tileset
7ce2d2d8381a Refactor BaseSprite.
Simon Cross <hodgestar@gmail.com>
parents: 81
diff changeset
123 if image_name is not None:
144
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
124 self.image_name = image_name
130
9bef49d6db86 Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 121
diff changeset
125 self.image = self.load_image(image_name, mutators=mutators)
56
e730ec8b82e8 Some doors.
Jeremy Thurgood <firxen@gmail.com>
parents: 50
diff changeset
126
98
7ce2d2d8381a Refactor BaseSprite.
Simon Cross <hodgestar@gmail.com>
parents: 81
diff changeset
127 def load_image(self, image_name, mutators=()):
212
e768056b0588 Refactor tile image loading stuff. More magic is good, right?
Jeremy Thurgood <firxen@gmail.com>
parents: 207
diff changeset
128 return load_tile_image(image_name, self.tileset, mutators)
50
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
129
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
130 def set_tile_pos(self, tile_pos):
81
c8d6ca296884 Better level entry points.
Jeremy Thurgood <firxen@gmail.com>
parents: 71
diff changeset
131 self.tile_pos = tile_pos
199
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
132 self.rect = Rect(tile_sizify(tile_pos), TILE_SIZE)
50
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
133
136
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
134 def get_variant(self, top, bottom, left, right):
144
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
135 if self.variants is None:
136
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
136 self.variants = self.variants_class(self.image_name)
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
137 return self.variants(top, bottom, left, right)
130
9bef49d6db86 Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 121
diff changeset
138
144
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
139 def use_variant(self, *args):
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
140 if self.variants_class is not None:
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
141 self.image = self.load_image(*self.get_variant(*args))
144
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
142
163
41e8d4ce3af2 TileSprites are less magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 162
diff changeset
143
41e8d4ce3af2 TileSprites are less magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 162
diff changeset
144 class TileSprite(BaseSprite):
41e8d4ce3af2 TileSprites are less magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 162
diff changeset
145 def __init__(self, tile_char, solid=False, **kw):
41e8d4ce3af2 TileSprites are less magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 162
diff changeset
146 super(TileSprite, self).__init__(**kw)
41e8d4ce3af2 TileSprites are less magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 162
diff changeset
147 self.tile_char = tile_char
41e8d4ce3af2 TileSprites are less magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 162
diff changeset
148 self.solid = solid
41e8d4ce3af2 TileSprites are less magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 162
diff changeset
149
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
150 def get_solid(self, snake, segment):
144
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
151 return self.solid
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
152
243
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
153 def interact(self, world, segment):
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
154 if self.get_solid(world.snake, segment):
372
1655f8c0d96e The grammar nazi commit
Stefano Rivera <stefano@rivera.za.net>
parents: 359
diff changeset
155 article = 'a'
1655f8c0d96e The grammar nazi commit
Stefano Rivera <stefano@rivera.za.net>
parents: 359
diff changeset
156 if self.name[0] in 'aeiou':
1655f8c0d96e The grammar nazi commit
Stefano Rivera <stefano@rivera.za.net>
parents: 359
diff changeset
157 article = 'an'
1655f8c0d96e The grammar nazi commit
Stefano Rivera <stefano@rivera.za.net>
parents: 359
diff changeset
158 world.snake.crash('You hit %s %s' % (article, self.name))
181
061d711ba570 Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
159
50
1b725035b8ef Levels that are visible.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
160
71
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
161 class SingleImageTileSprite(TileSprite):
121
f670ef33ae2e Comment SingleImageTileSprite convention
Neil Muller <drnlmuller@gmail.com>
parents: 105
diff changeset
162 image_name = None # subclasses will override this
f670ef33ae2e Comment SingleImageTileSprite convention
Neil Muller <drnlmuller@gmail.com>
parents: 105
diff changeset
163
104
5b92ff941de3 Refactor sprites.
Jeremy Thurgood <firxen@gmail.com>
parents: 98
diff changeset
164 def __init__(self, **kw):
5b92ff941de3 Refactor sprites.
Jeremy Thurgood <firxen@gmail.com>
parents: 98
diff changeset
165 kw.setdefault('image_name', self.image_name)
168
0fffb97db193 Add name field to sprites for editor
Neil Muller <drnlmuller@gmail.com>
parents: 164
diff changeset
166 kw.setdefault('name', self.name)
104
5b92ff941de3 Refactor sprites.
Jeremy Thurgood <firxen@gmail.com>
parents: 98
diff changeset
167 super(SingleImageTileSprite, self).__init__(**kw)
71
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
168
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
169
56
e730ec8b82e8 Some doors.
Jeremy Thurgood <firxen@gmail.com>
parents: 50
diff changeset
170 class DoorSprite(TileSprite):
168
0fffb97db193 Add name field to sprites for editor
Neil Muller <drnlmuller@gmail.com>
parents: 164
diff changeset
171 name = 'door'
0fffb97db193 Add name field to sprites for editor
Neil Muller <drnlmuller@gmail.com>
parents: 164
diff changeset
172
104
5b92ff941de3 Refactor sprites.
Jeremy Thurgood <firxen@gmail.com>
parents: 98
diff changeset
173 def __init__(self, colour, **kw):
57
cd5ad2c45e2d Minor level fiddlery.
Jeremy Thurgood <firxen@gmail.com>
parents: 56
diff changeset
174 self.colour = colour
104
5b92ff941de3 Refactor sprites.
Jeremy Thurgood <firxen@gmail.com>
parents: 98
diff changeset
175 super(DoorSprite, self).__init__(**kw)
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
176 self.image = self.load_image(
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
177 *colour_with_fittings("door", self.tileset, colour))
71
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
178
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
179 def get_solid(self, snake, segment):
205
2b5956bedf64 Set colour of default new segment to colour of snake head.
Simon Cross <hodgestar@gmail.com>
parents: 203
diff changeset
180 return COLOURS[self.colour] != segment.colour
144
b292370c4548 Rearranged the orientation stuff. :-)
Jeremy Thurgood <firxen@gmail.com>
parents: 136
diff changeset
181
71
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
182
207
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
183 class DirectionalTile(SingleImageTileSprite):
234
530b2edea0e6 ARROWED
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 230
diff changeset
184 def __init__(self, direction=RIGHT, **kw):
530b2edea0e6 ARROWED
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 230
diff changeset
185 super(DirectionalTile, self).__init__(**kw)
530b2edea0e6 ARROWED
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 230
diff changeset
186 self.set_direction(direction)
530b2edea0e6 ARROWED
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 230
diff changeset
187
199
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
188 def set_direction(self, direction):
81
c8d6ca296884 Better level entry points.
Jeremy Thurgood <firxen@gmail.com>
parents: 71
diff changeset
189 self.direction = direction
199
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
190 mutator = {
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
191 UP: mutators.UP,
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
192 DOWN: mutators.DOWN,
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
193 LEFT: mutators.LEFT,
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
194 RIGHT: mutators.RIGHT,
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
195 }[direction]
986e72d2cb4d Rejiggered entrances and shifted directions around.
Jeremy Thurgood <firxen@gmail.com>
parents: 183
diff changeset
196 self.image = self.load_image(self.image_name, (mutator,))
81
c8d6ca296884 Better level entry points.
Jeremy Thurgood <firxen@gmail.com>
parents: 71
diff changeset
197
207
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
198 def get_solid(self, snake, segment):
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
199 dx, dy = self.direction
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
200 sx, sy = segment.orientation
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
201 if not (dx + sx or dy + sy):
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
202 return True
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
203 return False
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
204
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
205
234
530b2edea0e6 ARROWED
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 230
diff changeset
206 class ArrowSprite(DirectionalTile):
530b2edea0e6 ARROWED
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 230
diff changeset
207 image_name = 'arrow-r'
530b2edea0e6 ARROWED
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 230
diff changeset
208 name = 'arrow'
530b2edea0e6 ARROWED
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 230
diff changeset
209
248
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
210 def rotate(self):
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
211 self.set_direction({LEFT: UP,
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
212 UP: RIGHT,
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
213 RIGHT: DOWN,
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
214 DOWN: LEFT}[self.direction])
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
215
385
80ba03bec6ad Make arrows work
Stefano Rivera <stefano@rivera.za.net>
parents: 372
diff changeset
216 def interact(self, world, segment):
386
d760a309d0bf Whoops, only check the head
Stefano Rivera <stefano@rivera.za.net>
parents: 385
diff changeset
217 if segment.is_head:
d760a309d0bf Whoops, only check the head
Stefano Rivera <stefano@rivera.za.net>
parents: 385
diff changeset
218 world.snake.force_new_direction(self.direction)
385
80ba03bec6ad Make arrows work
Stefano Rivera <stefano@rivera.za.net>
parents: 372
diff changeset
219 super(ArrowSprite, self).interact(world, segment)
80ba03bec6ad Make arrows work
Stefano Rivera <stefano@rivera.za.net>
parents: 372
diff changeset
220
248
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
221
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
222 class FlipArrows(SingleImageTileSprite):
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
223 image_name = 'flip-arrows'
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
224 name = 'flip'
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
225
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
226 def interact(self, snake, segment):
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
227 FlipArrowsEvent.post()
de3b4048e54a Hook up tile arrow rotation
Stefano Rivera <stefano@rivera.za.net>
parents: 246
diff changeset
228
234
530b2edea0e6 ARROWED
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 230
diff changeset
229
207
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
230 class EntrySprite(DirectionalTile):
484
4e0b097e657b use new entrance tile
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 483
diff changeset
231 image_name = 'entrance-r'
207
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
232 name = 'entrance'
dd2c735fdaf4 Arrow tiles are walls from the pointy end.
Jeremy Thurgood <firxen@gmail.com>
parents: 205
diff changeset
233
71
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
234
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
235 class ExitSprite(SingleImageTileSprite):
287
d57b7f668028 Exity exits.
Jeremy Thurgood <firxen@gmail.com>
parents: 282
diff changeset
236 image_name = 'exit'
168
0fffb97db193 Add name field to sprites for editor
Neil Muller <drnlmuller@gmail.com>
parents: 164
diff changeset
237 name = 'exit'
71
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
238
243
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
239 def interact(self, world, segment):
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
240 world.snake.exit_level()
213
7a9be9add4c7 Hook up exit.
Simon Cross <hodgestar@gmail.com>
parents: 212
diff changeset
241
71
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
242
244
c629dabe2038 Make tunnel arrows face in the right direction.
Simon Cross <hodgestar@gmail.com>
parents: 243
diff changeset
243 class TunnelSprite(DirectionalTile):
268
01c21e4f2997 Hook up tunnel image.
Simon Cross <hodgestar@gmail.com>
parents: 263
diff changeset
244 image_name = 'tunnel-r'
230
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
245 name = 'tunnel entrance'
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
246 tileset = 'lab'
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
247
243
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
248 def __init__(self, other_id, direction):
244
c629dabe2038 Make tunnel arrows face in the right direction.
Simon Cross <hodgestar@gmail.com>
parents: 243
diff changeset
249 direction = {
230
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
250 'north': UP, 'south': DOWN,
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
251 'east': LEFT, 'west': RIGHT,
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
252 }[direction]
244
c629dabe2038 Make tunnel arrows face in the right direction.
Simon Cross <hodgestar@gmail.com>
parents: 243
diff changeset
253 super(TunnelSprite, self).__init__(tile_char=None, direction=direction)
c629dabe2038 Make tunnel arrows face in the right direction.
Simon Cross <hodgestar@gmail.com>
parents: 243
diff changeset
254 self.other_id = other_id
230
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
255
243
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
256 def interact(self, world, segment):
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
257 head = world.snake.head
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
258 if segment is head and head.orientation == self.direction:
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
259 other = world.get_sprite(self.other_id)
252
8198492745b1 Try not to let head wander during teleporting (it's bad for your health).
Simon Cross <hodgestar@gmail.com>
parents: 249
diff changeset
260 head.shift_tile_and_pixels((other.tile_pos, self.direction))
230
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
261
508
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
262 @classmethod
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
263 def get_sprite_args(cls):
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
264 """Arguments for the tile constructor"""
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
265 return [('Other ID:', None),
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
266 ('Direction', ('north', 'east', 'south', 'west'))]
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
267
230
e4f983b68ef5 Start of advanced sprite definitions.
Simon Cross <hodgestar@gmail.com>
parents: 218
diff changeset
268
357
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
269 class ButtonSprite(SingleImageTileSprite):
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
270 image_name = 'button'
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
271 name = 'button'
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
272 tileset = 'lab'
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
273
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
274 def __init__(self, other_id):
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
275 super(ButtonSprite, self).__init__(tile_char=None)
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
276 self.other_id = other_id
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
277
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
278 def interact(self, world, segment):
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
279 head = world.snake.head
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
280 if segment is head:
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
281 other = world.get_sprite(self.other_id)
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
282 other.button_pushed()
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
283
508
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
284 @classmethod
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
285 def get_sprite_args(cls):
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
286 """Arguments for the tile constructor"""
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
287 return [('Other ID:', None)]
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
288
357
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
289
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
290 class GateSprite(SingleImageTileSprite):
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
291 closed_name = 'closed_gate'
508
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
292 image_name = 'closed_gate'
359
5ea0b6eb2831 simple buttons and gates
Neil Muller <drnlmuller@gmail.com>
parents: 357
diff changeset
293 open_image = 'floor'
357
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
294 name = 'gate'
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
295 tileset = 'lab'
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
296
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
297 def __init__(self):
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
298 self.image_name = self.closed_name
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
299 self.opened = False
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
300 super(GateSprite, self).__init__(tile_char=None)
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
301
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
302 def get_solid(self, snake, segment):
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
303 return not self.opened
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
304
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
305 def button_pushed(self):
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
306 self.opened = True
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
307 # Update image
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
308 self.image_name = self.open_image
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
309 self.image = self.load_image(self.image_name, mutators=())
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
310
508
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
311 @classmethod
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
312 def get_sprite_args(cls):
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
313 """Arguments for the tile constructor"""
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
314 return []
6c61d5862310 Massive speical sprite editor rewrite
Neil Muller <drnlmuller@gmail.com>
parents: 484
diff changeset
315
357
ff1c39075452 Button and gate sprites
Neil Muller <drnlmuller@gmail.com>
parents: 323
diff changeset
316
71
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
317 class PuddleSprite(SingleImageTileSprite):
58557a89ec86 Some tile improvements and stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 57
diff changeset
318 image_name = 'puddle'
168
0fffb97db193 Add name field to sprites for editor
Neil Muller <drnlmuller@gmail.com>
parents: 164
diff changeset
319 name = 'puddle'
136
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
320 variants_class = SolidSpriteImageVariants
130
9bef49d6db86 Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 121
diff changeset
321
9bef49d6db86 Ugly yucky half-done tile orientation magic.
Jeremy Thurgood <firxen@gmail.com>
parents: 121
diff changeset
322 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
323 super(PuddleSprite, self).__init__(**kw)
136
00ada2e29798 Somewhat better (but still hideous) image variant support.
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
324 self.image = self.load_image(*self.get_variant(*variant))
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
325
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
326 def get_solid(self, snake, segment):
181
061d711ba570 Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
327 if snake.can_swim():
061d711ba570 Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
328 return False
061d711ba570 Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
329 return True
061d711ba570 Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
330
243
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
331 def interact(self, world, segment):
183
045f6b4301eb Water washes.
Jeremy Thurgood <firxen@gmail.com>
parents: 182
diff changeset
332 segment.set_colour(segment.GREEN)
246
e54ba3f8f180 Fix call to interact.
Simon Cross <hodgestar@gmail.com>
parents: 244
diff changeset
333 super(PuddleSprite, self).interact(world, segment)
183
045f6b4301eb Water washes.
Jeremy Thurgood <firxen@gmail.com>
parents: 182
diff changeset
334
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
335
253
2a969e3445ae fire bad
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 252
diff changeset
336 class FireSprite(SingleImageTileSprite):
300
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
337 image_name = 'fire'
253
2a969e3445ae fire bad
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 252
diff changeset
338 name = 'fire'
300
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
339 variants_class = SolidSpriteImageVariants
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
340 detail = 'fire-detail'
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
341
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
342 def __init__(self, variant=(0, 0, 0, 0), **kw):
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
343 super(FireSprite, self).__init__(**kw)
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
344 self.image = self.load_image(*self.get_variant(*variant))
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
345
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
346 def load_image(self, image_name, mutators=()):
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
347 mutators += (get_detail_mutator(self.image_name, self.tileset),)
35ca26f8305a fire is now an orange puddle with a right-way-up red flame
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 294
diff changeset
348 return super(FireSprite, self).load_image(image_name, mutators)
253
2a969e3445ae fire bad
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 252
diff changeset
349
255
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
350 def get_solid(self, snake, segment):
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
351 if snake.flame_retardant():
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
352 return False
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
353 return True
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
354
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
355 def interact(self, world, segment):
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
356 segment.set_colour(segment.GREEN)
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
357 super(FireSprite, self).interact(world, segment)
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
358
253
2a969e3445ae fire bad
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 252
diff changeset
359
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
360 class EdibleTile(SingleImageTileSprite):
316
cd544a311f11 Move directory names into sound.py for simplicity
Neil Muller <drnlmuller@gmail.com>
parents: 306
diff changeset
361 sound_name = 'squeak.ogg'
282
56cd71696dff Use some sound files
Neil Muller <drnlmuller@gmail.com>
parents: 268
diff changeset
362
56cd71696dff Use some sound files
Neil Muller <drnlmuller@gmail.com>
parents: 268
diff changeset
363 def __init__(self, **kw):
56cd71696dff Use some sound files
Neil Muller <drnlmuller@gmail.com>
parents: 268
diff changeset
364 if self.sound_name:
56cd71696dff Use some sound files
Neil Muller <drnlmuller@gmail.com>
parents: 268
diff changeset
365 load_sound(self.sound_name, self.sound_name)
56cd71696dff Use some sound files
Neil Muller <drnlmuller@gmail.com>
parents: 268
diff changeset
366 super(EdibleTile, self).__init__(**kw)
56cd71696dff Use some sound files
Neil Muller <drnlmuller@gmail.com>
parents: 268
diff changeset
367
243
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
368 def interact(self, world, segment):
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
369 if not segment.is_head:
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
370 return
282
56cd71696dff Use some sound files
Neil Muller <drnlmuller@gmail.com>
parents: 268
diff changeset
371 if self.sound_name:
56cd71696dff Use some sound files
Neil Muller <drnlmuller@gmail.com>
parents: 268
diff changeset
372 play_sound(self.sound_name)
243
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
373 world.snake.head.mouth_open()
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
374 self.eat(world.snake)
181
061d711ba570 Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
375 self.alive = False
061d711ba570 Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
376 self.kill()
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
377
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
378 def eat(self, snake):
218
10804ae58066 Open mouth when eating things
Stefano Rivera <stefano@rivera.za.net>
parents: 213
diff changeset
379 pass
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
380
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
381
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
382 class BigMouse(EdibleTile):
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
383 image_name = "rat-big"
483
1e7d6f43928f Name some unnamed things.
Jeremy Thurgood <firxen@gmail.com>
parents: 386
diff changeset
384 name = 'rat-big'
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
385
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
386 def eat(self, snake):
203
8009742103e7 Add a segment when driving over the big rat.
Simon Cross <hodgestar@gmail.com>
parents: 202
diff changeset
387 snake.add_segment()
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
388
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
389
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
390 class SmallMouse(EdibleTile):
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
391 image_name = "rat-small"
483
1e7d6f43928f Name some unnamed things.
Jeremy Thurgood <firxen@gmail.com>
parents: 386
diff changeset
392 name = 'rat-small'
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
393
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
394 def eat(self, snake):
202
498c1d659a94 Remove a segment when driving over the small rat.
Simon Cross <hodgestar@gmail.com>
parents: 200
diff changeset
395 snake.remove_segment()
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
396
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
397
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
398 class Frog(EdibleTile):
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
399 image_name = "frog"
483
1e7d6f43928f Name some unnamed things.
Jeremy Thurgood <firxen@gmail.com>
parents: 386
diff changeset
400 name = 'frog'
162
7fbbe27120a9 Rodents! Amphibians! Import juggling!
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
401
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
402 def eat(self, snake):
181
061d711ba570 Interact with the world.
Jeremy Thurgood <firxen@gmail.com>
parents: 180
diff changeset
403 snake.mutate('amphibious')
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
404
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
405
249
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
406 class Snail(EdibleTile):
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
407 image_name = "snail"
483
1e7d6f43928f Name some unnamed things.
Jeremy Thurgood <firxen@gmail.com>
parents: 386
diff changeset
408 name = 'snail'
249
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
409
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
410 def eat(self, snake):
263
c7c9d71ac6ea Lizards and snails are extra delicious.
Jeremy Thurgood <firxen@gmail.com>
parents: 255
diff changeset
411 snake.adjust_speed(-15)
249
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
412
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
413
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
414 class Lizard(EdibleTile):
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
415 image_name = "lizard"
483
1e7d6f43928f Name some unnamed things.
Jeremy Thurgood <firxen@gmail.com>
parents: 386
diff changeset
416 name = 'lizard'
249
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
417
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
418 def eat(self, snake):
263
c7c9d71ac6ea Lizards and snails are extra delicious.
Jeremy Thurgood <firxen@gmail.com>
parents: 255
diff changeset
419 snake.adjust_speed(15)
249
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
420
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
421
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
422 class Salamander(EdibleTile):
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
423 image_name = "salamander"
483
1e7d6f43928f Name some unnamed things.
Jeremy Thurgood <firxen@gmail.com>
parents: 386
diff changeset
424 name = "salamander"
249
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
425
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
426 def eat(self, snake):
255
59166ae6e864 fire works
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 253
diff changeset
427 snake.mutate('flame-retardant')
249
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
428
cb68024bdd35 Moar animals
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 248
diff changeset
429
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
430 class Painter(TileSprite):
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
431 def __init__(self, colour, **kw):
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
432 super(Painter, self).__init__(**kw)
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
433 self.colour = colour
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
434 self.image = self.load_image(
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
435 *colour_with_fittings("spray", self.tileset, colour))
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
436
243
f9cc701a6be0 Hook up tunnels.
Simon Cross <hodgestar@gmail.com>
parents: 234
diff changeset
437 def interact(self, world, segment):
182
0a955d2536f0 Painted Jezebel! (Assuming you name your snake Jezebel.)
Jeremy Thurgood <firxen@gmail.com>
parents: 181
diff changeset
438 segment.set_colour(COLOURS[self.colour])