annotate gamelib/scenes/game_widgets.py @ 799:a04a876ee369 pyntnclick

Update line numbers in po files
author Neil Muller <neil@dip.sun.ac.za>
date Sun, 27 Jan 2013 13:38:56 +0200
parents 43b49f1de828
children bdebe693453f
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
769
43b49f1de828 Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
parents: 759 765
diff changeset
4 from pyntnclick.i18n import _
549
098ea4ea0d0d Rename imports
Neil Muller <neil@dip.sun.ac.za>
parents: 544
diff changeset
5 from pyntnclick.state import Thing, Result
266
80cb577e38f2 Non-interactive things no longer highlight the cursor.
Jeremy Thurgood <firxen@gmail.com>
parents: 263
diff changeset
6
681
497b6d7c55e7 Reimplement JIM-style in gamelib
Neil Muller <neil@dip.sun.ac.za>
parents: 655
diff changeset
7 from gamelib.custom_widgets import JimLabel
266
80cb577e38f2 Non-interactive things no longer highlight the cursor.
Jeremy Thurgood <firxen@gmail.com>
parents: 263
diff changeset
8
242
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
9
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
10 class Door(Thing):
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
11 """A door somewhere"""
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
12
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
13 DEST = "map"
252
dfc89bc64fdb Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents: 242
diff changeset
14 SCENE = None
dfc89bc64fdb Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents: 242
diff changeset
15
dfc89bc64fdb Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents: 242
diff changeset
16 def __init__(self):
dfc89bc64fdb Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents: 242
diff changeset
17 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
18 Thing.__init__(self)
242
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
19
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 500
diff changeset
20 def is_interactive(self, tool=None):
242
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
21 return True
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
22
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
23 def interact_without(self):
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
24 """Go to map."""
692
d6ded808cc33 Much scene management refactoring.
Jeremy Thurgood <firxen@gmail.com>
parents: 681
diff changeset
25 self.game.change_scene("map")
242
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
26
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
27 def get_description(self):
765
2f1952748cdb merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 525
diff changeset
28 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
29
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
30 def interact_default(self, item):
435
19aff54b2e73 Many small fixes.
Jeremy Thurgood <firxen@gmail.com>
parents: 360
diff changeset
31 return self.interact_without()
242
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents:
diff changeset
32
360
452230d78541 Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents: 354
diff changeset
33
655
c77d6aa29bee Some code to kinda demonstrate the ever so cunning state handling plan
Neil Muller <neil@dip.sun.ac.za>
parents: 603
diff changeset
34 def make_jim_dialog(mesg, game):
360
452230d78541 Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents: 354
diff changeset
35 "Utility helper function"
655
c77d6aa29bee Some code to kinda demonstrate the ever so cunning state handling plan
Neil Muller <neil@dip.sun.ac.za>
parents: 603
diff changeset
36 if game.data.get_jim_state() == 'online':
681
497b6d7c55e7 Reimplement JIM-style in gamelib
Neil Muller <neil@dip.sun.ac.za>
parents: 655
diff changeset
37 return Result(widget=JimLabel(game.gd, mesg))
360
452230d78541 Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents: 354
diff changeset
38 else:
452230d78541 Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents: 354
diff changeset
39 return None
452230d78541 Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents: 354
diff changeset
40
452230d78541 Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents: 354
diff changeset
41
350
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 296
diff changeset
42 class BaseCamera(Thing):
464
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
43 "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
44
464
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
45 INITIAL = 'online'
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
46 INITIAL_DATA = {
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
47 'state': 'online',
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
48 }
499
cfd9c2bb4474 Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents: 464
diff changeset
49
464
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
50 def get_description(self):
655
c77d6aa29bee Some code to kinda demonstrate the ever so cunning state handling plan
Neil Muller <neil@dip.sun.ac.za>
parents: 603
diff changeset
51 status = self.state.get_jim_state()
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 if status == 'online':
765
2f1952748cdb merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 525
diff changeset
53 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
54 elif status == 'looping':
769
43b49f1de828 Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
parents: 759 765
diff changeset
55 return _("The security camera is currently offline but should be"
43b49f1de828 Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
parents: 759 765
diff changeset
56 " 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
57 else:
765
2f1952748cdb merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 525
diff changeset
58 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
59
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 500
diff changeset
60 def is_interactive(self, tool=None):
655
c77d6aa29bee Some code to kinda demonstrate the ever so cunning state handling plan
Neil Muller <neil@dip.sun.ac.za>
parents: 603
diff changeset
61 return self.state.get_jim_state() == 'online'
499
cfd9c2bb4474 Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents: 464
diff changeset
62
464
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
63 def interact_with_escher_poster(self, item):
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
64 # Order matters here, because of helper function
655
c77d6aa29bee Some code to kinda demonstrate the ever so cunning state handling plan
Neil Muller <neil@dip.sun.ac.za>
parents: 603
diff changeset
65 if self.state.get_jim_state() == 'online':
769
43b49f1de828 Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
parents: 759 765
diff changeset
66 ai_response = make_jim_dialog(_("3D scene reconstruction failed."
43b49f1de828 Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
parents: 759 765
diff changeset
67 " Critical error."
43b49f1de828 Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
parents: 759 765
diff changeset
68 " Entering emergency shutdown."),
43b49f1de828 Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
parents: 759 765
diff changeset
69 self.game)
655
c77d6aa29bee Some code to kinda demonstrate the ever so cunning state handling plan
Neil Muller <neil@dip.sun.ac.za>
parents: 603
diff changeset
70 self.game.data.loop_ai()
499
cfd9c2bb4474 Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents: 464
diff changeset
71 return ai_response
cfd9c2bb4474 Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents: 464
diff changeset
72
759
386475464202 Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents: 692
diff changeset
73 def select_interact(self):
386475464202 Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents: 692
diff changeset
74 if 'bridge' not in self.state:
386475464202 Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents: 692
diff changeset
75 # We aren't completely set up yet
386475464202 Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents: 692
diff changeset
76 return self.INITIAL
386475464202 Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents: 692
diff changeset
77 return self.state.get_jim_state()
386475464202 Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents: 692
diff changeset
78
464
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
79 def animate(self):
655
c77d6aa29bee Some code to kinda demonstrate the ever so cunning state handling plan
Neil Muller <neil@dip.sun.ac.za>
parents: 603
diff changeset
80 ai_status = self.state.get_jim_state()
464
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
81 if ai_status != self.get_data('status'):
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
82 self.set_data('status', ai_status)
759
386475464202 Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents: 692
diff changeset
83 self.set_interact()
464
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 435
diff changeset
84 super(BaseCamera, self).animate()