Mercurial > boomslang
comparison gamelib/scenes/mess.py @ 419:add81f2b747e
Boomslang!
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 28 Aug 2010 23:01:30 +0200 |
parents | 1470a69d91ee |
children | 19aff54b2e73 |
comparison
equal
deleted
inserted
replaced
418:6a24970a0d21 | 419:add81f2b747e |
---|---|
1 """Mess where crew eat. Fun stuff.""" | 1 """Mess where crew eat. Fun stuff.""" |
2 | 2 |
3 from random import choice | 3 from random import choice, randint |
4 | 4 |
5 from gamelib.state import Scene, Item, CloneableItem, Thing, Result | 5 from gamelib.state import Scene, Item, CloneableItem, Thing, Result |
6 from gamelib.cursor import CursorSprite | 6 from gamelib.cursor import CursorSprite |
7 from gamelib.scenes.scene_widgets import (Door, InteractText, InteractNoImage, | 7 from gamelib.scenes.scene_widgets import (Door, InteractText, InteractNoImage, |
8 InteractRectUnion, InteractImage, | 8 InteractRectUnion, InteractImage, |
9 InteractImageRect, InteractAnimated, | 9 InteractImageRect, InteractAnimated, |
10 GenericDescThing) | 10 GenericDescThing) |
11 | 11 |
12 from gamelib.sound import get_sound | |
13 from gamelib import constants | |
14 | |
12 | 15 |
13 class Mess(Scene): | 16 class Mess(Scene): |
14 | 17 |
15 FOLDER = "mess" | 18 FOLDER = "mess" |
16 BACKGROUND = "mess_hall.png" | 19 BACKGROUND = "mess_hall.png" |
24 super(Mess, self).__init__(state) | 27 super(Mess, self).__init__(state) |
25 self.add_thing(CansOnShelf()) | 28 self.add_thing(CansOnShelf()) |
26 self.add_thing(Tubes()) | 29 self.add_thing(Tubes()) |
27 self.add_thing(ToMap()) | 30 self.add_thing(ToMap()) |
28 self.add_thing(DetergentThing()) | 31 self.add_thing(DetergentThing()) |
32 self.add_thing(Boomslang()) | |
29 self.add_item(DetergentBottle('detergent_bottle')) | 33 self.add_item(DetergentBottle('detergent_bottle')) |
30 # Flavour items | 34 # Flavour items |
31 # extra cans on shelf | 35 # extra cans on shelf |
32 self.add_thing(GenericDescThing('mess.cans', 1, | 36 self.add_thing(GenericDescThing('mess.cans', 1, |
33 "A large collection of rusted, useless cans.", | 37 "A large collection of rusted, useless cans.", |
211 return Result("It takes quite a lot of tape, but eventually everything is" | 215 return Result("It takes quite a lot of tape, but eventually everything is" |
212 " airtight and ready to hold pressure. Who'd've thought duct" | 216 " airtight and ready to hold pressure. Who'd've thought duct" |
213 " tape could actually be used to tape ducts?") | 217 " tape could actually be used to tape ducts?") |
214 | 218 |
215 | 219 |
220 class Boomslang(Thing): | |
221 NAME = 'mess.boomslang' | |
222 | |
223 INTERACTS = { | |
224 'snake': InteractAnimated(455, 241, ( | |
225 'boomslang_no_tongue.png', 'boomslang_with_tongue.png', | |
226 'boomslang_no_tongue.png', 'boomslang_with_tongue.png', | |
227 'boomslang_no_tongue.png', | |
228 ), 5), | |
229 'no_snake': InteractNoImage(0, 0, 0, 0), | |
230 } | |
231 | |
232 INITIAL = 'no_snake' | |
233 | |
234 INITIAL_DATA = { | |
235 'anim_pos': -1, | |
236 } | |
237 | |
238 HISS = get_sound('boomslang.ogg') | |
239 | |
240 def is_interactive(self): | |
241 return False | |
242 | |
243 def animate(self): | |
244 if self.get_data('anim_pos') > -1: | |
245 self.current_interact.animate() | |
246 if self.get_data('anim_pos') > self.current_interact._anim_pos: | |
247 self.set_interact('no_snake') | |
248 self.set_data('anim_pos', -1) | |
249 else: | |
250 self.set_data('anim_pos', self.current_interact._anim_pos) | |
251 return True | |
252 if randint(0, 30 * constants.FRAME_RATE) == 0: | |
253 self.set_interact('snake') | |
254 self.set_data('anim_pos', 0) | |
255 self.HISS.play() | |
256 return False | |
257 | |
258 | |
216 class DetergentThing(Thing): | 259 class DetergentThing(Thing): |
217 | 260 |
218 NAME = "mess.detergent" | 261 NAME = "mess.detergent" |
219 | 262 |
220 INTERACTS = { | 263 INTERACTS = { |