Mercurial > boomslang
annotate gamelib/scenes/game_widgets.py @ 765:2f1952748cdb i18n
merge i18n and Russian translation
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Tue, 08 Mar 2011 14:37:43 +0200 |
parents | 821b322e903b |
children | 43b49f1de828 |
rev | line source |
---|---|
242 | 1 """Generic, game specific widgets""" |
2 | |
263
3b4a78422201
Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents:
252
diff
changeset
|
3 |
765
2f1952748cdb
merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents:
525
diff
changeset
|
4 from gamelib.i18n import _ |
525
821b322e903b
Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
519
diff
changeset
|
5 from gamelib.state import Thing, Result |
266
80cb577e38f2
Non-interactive things no longer highlight the cursor.
Jeremy Thurgood <firxen@gmail.com>
parents:
263
diff
changeset
|
6 |
242 | 7 |
8 class Door(Thing): | |
9 """A door somewhere""" | |
10 | |
11 DEST = "map" | |
252
dfc89bc64fdb
Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
242
diff
changeset
|
12 SCENE = None |
dfc89bc64fdb
Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
242
diff
changeset
|
13 |
dfc89bc64fdb
Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
242
diff
changeset
|
14 def __init__(self): |
dfc89bc64fdb
Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
242
diff
changeset
|
15 self.NAME = self.SCENE + '.door' |
dfc89bc64fdb
Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
242
diff
changeset
|
16 Thing.__init__(self) |
242 | 17 |
519
8f3c82c685a4
Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents:
500
diff
changeset
|
18 def is_interactive(self, tool=None): |
242 | 19 return True |
20 | |
21 def interact_without(self): | |
22 """Go to map.""" | |
23 self.state.set_current_scene("map") | |
24 | |
25 def get_description(self): | |
765
2f1952748cdb
merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents:
525
diff
changeset
|
26 return _('An open doorway leads to the rest of the ship.') |
242 | 27 |
28 def interact_default(self, item): | |
435 | 29 return self.interact_without() |
242 | 30 |
360
452230d78541
Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents:
354
diff
changeset
|
31 |
452230d78541
Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents:
354
diff
changeset
|
32 def make_jim_dialog(mesg, state): |
452230d78541
Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents:
354
diff
changeset
|
33 "Utility helper function" |
452230d78541
Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents:
354
diff
changeset
|
34 if state.scenes['bridge'].get_data('ai status') == 'online': |
452230d78541
Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents:
354
diff
changeset
|
35 return Result(mesg, style='JIM') |
452230d78541
Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents:
354
diff
changeset
|
36 else: |
452230d78541
Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents:
354
diff
changeset
|
37 return None |
452230d78541
Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents:
354
diff
changeset
|
38 |
452230d78541
Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents:
354
diff
changeset
|
39 |
350
125cb389ab90
Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents:
296
diff
changeset
|
40 class BaseCamera(Thing): |
464 | 41 "Base class for the camera puzzles" |
499
cfd9c2bb4474
Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents:
464
diff
changeset
|
42 |
464 | 43 INITIAL = 'online' |
44 INITIAL_DATA = { | |
45 'state': 'online', | |
46 } | |
499
cfd9c2bb4474
Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents:
464
diff
changeset
|
47 |
464 | 48 def get_description(self): |
500
e49e4fe76241
Alter security camera description and is_interactive to match JIM's state
Stefano Rivera <stefano@rivera.za.net>
parents:
499
diff
changeset
|
49 status = self.state.scenes['bridge'].get_data('ai status') |
e49e4fe76241
Alter security camera description and is_interactive to match JIM's state
Stefano Rivera <stefano@rivera.za.net>
parents:
499
diff
changeset
|
50 if status == 'online': |
765
2f1952748cdb
merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents:
525
diff
changeset
|
51 return _("A security camera watches over the room") |
500
e49e4fe76241
Alter security camera description and is_interactive to match JIM's state
Stefano Rivera <stefano@rivera.za.net>
parents:
499
diff
changeset
|
52 elif status == 'looping': |
765
2f1952748cdb
merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents:
525
diff
changeset
|
53 return _("The security camera is currently offline but should be working soon") |
500
e49e4fe76241
Alter security camera description and is_interactive to match JIM's state
Stefano Rivera <stefano@rivera.za.net>
parents:
499
diff
changeset
|
54 else: |
765
2f1952748cdb
merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents:
525
diff
changeset
|
55 return _("The security camera is powered down") |
500
e49e4fe76241
Alter security camera description and is_interactive to match JIM's state
Stefano Rivera <stefano@rivera.za.net>
parents:
499
diff
changeset
|
56 |
519
8f3c82c685a4
Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents:
500
diff
changeset
|
57 def is_interactive(self, tool=None): |
500
e49e4fe76241
Alter security camera description and is_interactive to match JIM's state
Stefano Rivera <stefano@rivera.za.net>
parents:
499
diff
changeset
|
58 return self.state.scenes['bridge'].get_data('ai status') == 'online' |
499
cfd9c2bb4474
Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents:
464
diff
changeset
|
59 |
464 | 60 def interact_with_escher_poster(self, item): |
61 # Order matters here, because of helper function | |
499
cfd9c2bb4474
Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents:
464
diff
changeset
|
62 if self.state.scenes['bridge'].get_data('ai status') == 'online': |
765
2f1952748cdb
merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents:
525
diff
changeset
|
63 ai_response = make_jim_dialog(_("3D scene reconstruction failed. Critical error. Entering emergency shutdown."), self.state) |
499
cfd9c2bb4474
Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents:
464
diff
changeset
|
64 self.state.scenes['bridge'].set_data('ai status', 'looping') |
cfd9c2bb4474
Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents:
464
diff
changeset
|
65 return ai_response |
cfd9c2bb4474
Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents:
464
diff
changeset
|
66 |
464 | 67 def animate(self): |
68 ai_status = self.state.scenes['bridge'].get_data('ai status') | |
69 if ai_status != self.get_data('status'): | |
70 self.set_data('status', ai_status) | |
71 self.set_interact(ai_status) | |
72 super(BaseCamera, self).animate() | |
350
125cb389ab90
Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents:
296
diff
changeset
|
73 |