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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
242
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
1 """Generic, game specific widgets"""
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
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
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
7
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
8 class Door(Thing):
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
9 """A door somewhere"""
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
10
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
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
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
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
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
19 return True
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
20
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
21 def interact_without(self):
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
22 """Go to map."""
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
23 self.state.set_current_scene("map")
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
24
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
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
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
27
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
28 def interact_default(self, item):
435
19aff54b2e73 Many small fixes.
Jeremy Thurgood <firxen@gmail.com>
parents: 360
diff changeset
29 return self.interact_without()
242
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
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
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
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
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
43 INITIAL = 'online'
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
44 INITIAL_DATA = {
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
45 'state': 'online',
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
46 }
499
cfd9c2bb4474 Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents: 464
diff changeset
47
464
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
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
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
60 def interact_with_escher_poster(self, item):
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
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
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
67 def animate(self):
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
68 ai_status = self.state.scenes['bridge'].get_data('ai status')
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
69 if ai_status != self.get_data('status'):
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
70 self.set_data('status', ai_status)
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
71 self.set_interact(ai_status)
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
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