Mercurial > pyntnclick
annotate gamelib/scenes/game_widgets.py @ 776:246538901599 pyntnclick
Extraneous whitespace
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 26 Jan 2013 18:16:33 +0200 |
parents | 43b49f1de828 |
children | bdebe693453f |
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 |
769
43b49f1de828
Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
diff
changeset
|
4 from pyntnclick.i18n import _ |
549 | 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 | 9 |
10 class Door(Thing): | |
11 """A door somewhere""" | |
12 | |
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 | 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 | 21 return True |
22 | |
23 def interact_without(self): | |
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 | 26 |
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 | 29 |
30 def interact_default(self, item): | |
435 | 31 return self.interact_without() |
242 | 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 | 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 | 45 INITIAL = 'online' |
46 INITIAL_DATA = { | |
47 'state': 'online', | |
48 } | |
499
cfd9c2bb4474
Make poster only work if JIM is online
Neil Muller <neil@dip.sun.ac.za>
parents:
464
diff
changeset
|
49 |
464 | 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>
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>
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 | 63 def interact_with_escher_poster(self, item): |
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>
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>
diff
changeset
|
67 " Critical error." |
43b49f1de828
Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
diff
changeset
|
68 " Entering emergency shutdown."), |
43b49f1de828
Merge i18n for before the pyntnclick split
Stefano Rivera <stefano@rivera.za.net>
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 | 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 | 81 if ai_status != self.get_data('status'): |
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 | 84 super(BaseCamera, self).animate() |