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 = {