annotate gamelib/scenes/bridge.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 0ce08d5e2acb a9925aaf5f61
children 43b49f1de828
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
1 """Bridge where the final showdown with the AI occurs."""
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
2
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
3 import random
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
4
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
5 from pygame.colordict import THECOLORS
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
6 from pygame.color import Color
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
7 from pygame.rect import Rect
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
8 from albow.music import change_playlist, get_music, PlayList
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
9 from albow.resource import get_image
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
10
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
11 from gamelib.cursor import CursorSprite
765
2f1952748cdb merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 528 478
diff changeset
12 from gamelib.i18n import _
263
3b4a78422201 Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents: 259
diff changeset
13 from gamelib.state import Scene, Item, Thing, Result
315
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
14 from gamelib.sound import get_current_playlist
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
15 from gamelib.constants import DEBUG
528
0ce08d5e2acb pyflakes-induced cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 525
diff changeset
16 from gamelib.scenewidgets import (InteractNoImage, InteractRectUnion,
0ce08d5e2acb pyflakes-induced cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 525
diff changeset
17 InteractImage, InteractAnimated,
0ce08d5e2acb pyflakes-induced cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 525
diff changeset
18 GenericDescThing)
263
3b4a78422201 Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents: 259
diff changeset
19
352
88c1a59b0544 Add sentence for bridge. Have poster break AI
Neil Muller <neil@dip.sun.ac.za>
parents: 350
diff changeset
20 from gamelib.scenes.game_constants import PLAYER_ID
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents: 519
diff changeset
21 from gamelib.scenes.game_widgets import Door, BaseCamera, make_jim_dialog
263
3b4a78422201 Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents: 259
diff changeset
22
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
23
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
24 class Bridge(Scene):
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
25
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
26 FOLDER = "bridge"
235
b0add10f7556 Hook up bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 222
diff changeset
27 BACKGROUND = 'bridge.png'
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
28
278
8e27efd331aa Offset support for scenes
Neil Muller <neil@dip.sun.ac.za>
parents: 277
diff changeset
29 OFFSET = (0, -50)
8e27efd331aa Offset support for scenes
Neil Muller <neil@dip.sun.ac.za>
parents: 277
diff changeset
30
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
31 MUSIC = [
256
5213ee33ec1b More varied beeps
Neil Muller <neil@dip.sun.ac.za>
parents: 255
diff changeset
32 'beep1.ogg',
5213ee33ec1b More varied beeps
Neil Muller <neil@dip.sun.ac.za>
parents: 255
diff changeset
33 'beep2.ogg',
5213ee33ec1b More varied beeps
Neil Muller <neil@dip.sun.ac.za>
parents: 255
diff changeset
34 'beep880.ogg',
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
35 'beep660.ogg',
256
5213ee33ec1b More varied beeps
Neil Muller <neil@dip.sun.ac.za>
parents: 255
diff changeset
36 'beep3.ogg',
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
37 'silent.ogg',
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
38 'creaking.ogg',
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
39 'silent.ogg',
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
40 ]
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
41
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
42 INITIAL_DATA = {
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
43 'ai status' : 'online', # online, looping, dead
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
44 'ai panel' : 'closed', # closed, open, broken
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
45 }
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
46
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
47 def __init__(self, state):
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
48 super(Bridge, self).__init__(state)
315
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
49 self.background_playlist = None
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
50 self.add_item(Superconductor('superconductor'))
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
51 self.add_item(Stethoscope('stethoscope'))
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
52 self.add_thing(ToMap())
350
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
53 self.add_thing(MonitorCamera())
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
54 self.add_thing(MassageChair())
316
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
55 self.add_thing(MassageChairBase())
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
56 self.add_thing(StethoscopeThing())
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
57 self.add_thing(BridgeComputer())
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
58 self.add_thing(LeftLights())
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
59 self.add_thing(RightLights())
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
60 self.add_thing(JimPanel())
424
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
61 self.add_thing(StarField())
277
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
62 self.add_thing(GenericDescThing('bridge.wires', 1,
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
63 _("The brightly coloured wires contrast with the drab walls."),
277
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
64 ((46, 4, 711, 143),)))
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
65 self.add_thing(GenericDescThing('bridge.note', 2,
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
66 _("\"Dammit JIM, I'm a doctor, not an engineer!\""),
277
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
67 (
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
68 (491, 494, 194, 105),
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
69 (422, 533, 71, 66),
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
70 )))
291
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
71 self.doctor = GenericDescThing('bridge.skel', 3,
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
72 _("A skeleton hangs improbably from the wires."),
291
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
73 (
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
74 (632, 148, 40, 29),
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
75 (683, 176, 30, 101),
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
76 (652, 274, 45, 96),
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
77 (639, 180, 11, 95),
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
78 ))
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
79 self.add_thing(self.doctor)
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
80
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
81
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
82 def enter(self):
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
83 pieces = [get_music(x, prefix='sounds') for x in self.MUSIC]
315
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
84 self.background_playlist = PlayList(pieces, random=True, repeat=True)
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
85 change_playlist(self.background_playlist)
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
86
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
87 def leave(self):
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
88 change_playlist(None)
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
89
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
90
242
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents: 237
diff changeset
91 class ToMap(Door):
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
92
252
dfc89bc64fdb Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents: 251
diff changeset
93 SCENE = "bridge"
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
94
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
95 INTERACTS = {
235
b0add10f7556 Hook up bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 222
diff changeset
96 "door": InteractNoImage(707, 344, 84, 245),
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
97 }
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
98
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
99 INITIAL = "door"
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
100
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
101
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
102 class BridgeComputer(Thing):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
103 """The bridge computer. Gives status updates"""
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
104
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
105 NAME = "bridge.comp"
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
106
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
107 INTERACTS = {
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
108 'screen' : InteractNoImage(338, 296, 123, 74),
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
109 }
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
110
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
111 INITIAL = 'screen'
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
112
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
113 def interact_without(self):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
114 return Result(detail_view='bridge_comp_detail')
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
115
474
4060e2dd4757 Add missing item parameter to bridge interact_with_foos
Stefano Rivera <stefano@rivera.za.net>
parents: 472
diff changeset
116 def interact_with_titanium_leg(self, item):
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
117 return Result(_("You can't break the duraplastic screen."))
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
118
474
4060e2dd4757 Add missing item parameter to bridge interact_with_foos
Stefano Rivera <stefano@rivera.za.net>
parents: 472
diff changeset
119 def interact_with_machete(self, item):
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
120 return Result(_("Scratching the screen won't help you."))
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
121
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
122 def get_description(self):
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
123 return _("The main bridge computer screen.")
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
124
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
125
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
126 class MassageChairBase(Thing):
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
127 "The captain's massage chair, contains superconductor"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
128
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
129 NAME = 'bridge.massagechair_base'
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
130
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
131 INTERACTS = {
316
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
132 'chair': InteractNoImage(127, 518, 69, 64),
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
133 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
134
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
135 INITIAL = 'chair'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
136
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
137 INITIAL_DATA = {
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
138 'contains_superconductor': True,
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
139 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
140
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
141 def interact_without(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
142 return Result(detail_view='chair_detail')
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
143
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
144 def get_description(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
145 if self.get_data('contains_superconductor'):
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
146 return _("A top of the line Massage-o-Matic Captain's Executive Command Chair. " \
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
147 "It's massaging a skeleton.")
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
148 return _("The chair won't work any more, it has no power.")
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
149
327
67e8a547970b More engine room descs
Stefano Rivera <stefano@rivera.za.net>
parents: 316
diff changeset
150
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
151 class MassageChair(Thing):
316
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
152 "The captain's massage chair, contains superconductor"
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
153
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
154 NAME = 'bridge.massagechair'
316
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
155
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
156 INTERACTS = {
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
157 'chair': InteractRectUnion((
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
158 (148, 418, 77, 68),
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
159 (69, 363, 80, 156),
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
160 (104, 514, 18, 40),
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
161 (147, 487, 106, 32),
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
162 (220, 518, 83, 49),
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
163 (196, 502, 75, 34),
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
164 (207, 534, 69, 51),
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
165 )),
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
166 }
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
167
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
168 INITIAL = 'chair'
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
169
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
170 def get_description(self):
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
171 return self.state.current_scene.things['bridge.massagechair_base'] \
316
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
172 .get_description()
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
173
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
174 def is_interactive(self, tool=None):
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
175 return False
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
176
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
177
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
178 class Stethoscope(Item):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
179 "Used for cracking safes. Found on the doctor on the chair"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
180
269
95e4021e9959 Hook up stethoscope
Stefano Rivera <stefano@rivera.za.net>
parents: 267
diff changeset
181 INVENTORY_IMAGE = 'stethoscope.png'
302
6d93e04036c9 CursorSprite: Default pointer-position to the centre of the cursor
Stefano Rivera <stefano@rivera.za.net>
parents: 293
diff changeset
182 CURSOR = CursorSprite('stethoscope.png')
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
183
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
184
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
185 class StethoscopeThing(Thing):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
186 "Stehoscope on the doctor"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
187
476
c72946d3a59a Some minor pylint driven style fixes
Neil Muller <neil@dip.sun.ac.za>
parents: 474
diff changeset
188 NAME = 'bridge.stethoscope'
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
189
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
190 INTERACTS = {
269
95e4021e9959 Hook up stethoscope
Stefano Rivera <stefano@rivera.za.net>
parents: 267
diff changeset
191 'stethoscope': InteractImage(650, 178, 'hanging_stethoscope.png'),
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
192 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
193
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
194 INITIAL = 'stethoscope'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
195
291
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
196 def get_description(self):
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
197 return _("A stethoscope hangs from the neck of the skeleton.")
291
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
198
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
199 def interact_without(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
200 self.state.add_inventory_item('stethoscope')
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
201 self.scene.remove_thing(self)
291
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
202 # Fill in the doctor's rect
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
203 self.scene.doctor.rect.append(self.rect)
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
204 return Result(_("You pick up the stethoscope and verify that the doctor's "
765
2f1952748cdb merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 528 478
diff changeset
205 "heart has stopped. Probably a while ago."))
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
206
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
207
399
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
208 class TapedSuperconductor(Item):
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
209 "Used for connecting high-powered parts of the ship up"
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
210
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
211 INVENTORY_IMAGE = 'superconductor_taped.png'
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
212 CURSOR = CursorSprite('superconductor_taped_cursor.png')
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
213
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
214
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
215 class Superconductor(Item):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
216 "Used for connecting high-powered parts of the ship up"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
217
285
2ec328aeeaf8 Engine room mostly hooked up
Stefano Rivera <stefano@rivera.za.net>
parents: 278
diff changeset
218 INVENTORY_IMAGE = 'superconductor_fixed.png'
302
6d93e04036c9 CursorSprite: Default pointer-position to the centre of the cursor
Stefano Rivera <stefano@rivera.za.net>
parents: 293
diff changeset
219 CURSOR = CursorSprite('superconductor_fixed.png')
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
220
491
9f488671c02e No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents: 476
diff changeset
221 def interact_with_duct_tape(self, item):
399
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
222 taped_superconductor = TapedSuperconductor('taped_superconductor')
491
9f488671c02e No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents: 476
diff changeset
223 self.state.add_item(taped_superconductor)
9f488671c02e No more state in Item interacts.
Jeremy Thurgood <firxen@gmail.com>
parents: 476
diff changeset
224 self.state.replace_inventory_item(self.name, taped_superconductor.name)
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
225 return Result(_("You rip off a piece of duct tape and stick it on the superconductor. "
765
2f1952748cdb merge i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 528 478
diff changeset
226 "It almost sticks to itself, but you successfully avoid disaster."))
399
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
227
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
228
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
229 class SuperconductorThing(Thing):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
230 "Superconductor from the massage chair."
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
231
476
c72946d3a59a Some minor pylint driven style fixes
Neil Muller <neil@dip.sun.ac.za>
parents: 474
diff changeset
232 NAME = 'bridge.superconductor'
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
233
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
234 INTERACTS = {
259
b6e1c4e4e59d Superconductor Thing now works.
Jeremy Thurgood <firxen@gmail.com>
parents: 257
diff changeset
235 'superconductor': InteractImage(158, 138, 'superconductor.png'),
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
236 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
237
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
238 INITIAL = 'superconductor'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
239
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
240 def interact_without(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
241 self.state.add_inventory_item('superconductor')
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
242 self.state.current_scene.things['bridge.massagechair_base'] \
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
243 .set_data('contains_superconductor', False)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
244 self.scene.remove_thing(self)
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
245 return (Result(_("The superconductor module unclips easily.")),
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
246 make_jim_dialog(_("Prisoner %s. That chair you've destroyed was "
426
dabc9d15c18c Jim complains when you break the chair
Stefano Rivera <stefano@rivera.za.net>
parents: 424
diff changeset
247 "property of the ship's captain. "
dabc9d15c18c Jim complains when you break the chair
Stefano Rivera <stefano@rivera.za.net>
parents: 424
diff changeset
248 "You will surely be punished."
dabc9d15c18c Jim complains when you break the chair
Stefano Rivera <stefano@rivera.za.net>
parents: 424
diff changeset
249 ) % PLAYER_ID, self.state))
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
250
424
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
251 class StarField(Thing):
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
252
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
253 NAME = 'bridge.stars'
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
254
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
255 INTERACTS = {
427
201ffb539464 Tweak star pos
Neil Muller <neil@dip.sun.ac.za>
parents: 426
diff changeset
256 #'stars' : InteractImage(190, 145, 'stars_3.png'),
201ffb539464 Tweak star pos
Neil Muller <neil@dip.sun.ac.za>
parents: 426
diff changeset
257 'stars' : InteractAnimated(190, 145,
424
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
258 ['stars_%d.png' % (i+1) for i in range(3) + range(1,0,-1)], 30)
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
259 }
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
260
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
261 INITIAL = 'stars'
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
262
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
263 def is_interactive(self, tool=None):
424
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
264 return False
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
265
8d8ccae862ee Animated starfield for bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 412
diff changeset
266
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
267 class BlinkingLights(Thing):
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
268
370
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
269 def __init__(self):
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
270 super(BlinkingLights, self).__init__()
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
271 self.description = None
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
272
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
273 def is_interactive(self, tool=None):
270
d4f08abc58fb Interactivity status tweaks
Neil Muller <neil@dip.sun.ac.za>
parents: 269
diff changeset
274 return False
d4f08abc58fb Interactivity status tweaks
Neil Muller <neil@dip.sun.ac.za>
parents: 269
diff changeset
275
370
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
276 def leave(self):
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
277 self.description = random.choice([
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
278 _("The lights flash in interesting patterns."),
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
279 _("The flashing lights don't mean anything to you."),
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
280 _("The console lights flash and flicker."),
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
281 ])
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
282
370
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
283 def get_description(self):
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
284 if not self.description:
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
285 self.leave()
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
286 return self.description
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
287
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
288 class LeftLights(BlinkingLights):
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
289
476
c72946d3a59a Some minor pylint driven style fixes
Neil Muller <neil@dip.sun.ac.za>
parents: 474
diff changeset
290 NAME = 'bridge.lights.1'
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
291
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
292 INTERACTS = {
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
293 "lights": InteractAnimated(176, 337, ["bridge_lights_1_1.png", "bridge_lights_1_2.png", "bridge_lights_1_3.png", "bridge_lights_1_2.png"], 5)
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
294 }
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
295
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
296 INITIAL = 'lights'
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
297
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
298 class RightLights(BlinkingLights):
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
299
476
c72946d3a59a Some minor pylint driven style fixes
Neil Muller <neil@dip.sun.ac.za>
parents: 474
diff changeset
300 NAME = 'bridge.lights.2'
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
301
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
302 INTERACTS = {
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
303 "lights": InteractAnimated(559, 332, ["bridge_lights_2_1.png", "bridge_lights_2_2.png", "bridge_lights_2_3.png", "bridge_lights_2_2.png"], 5)
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
304 }
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
305
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
306 INITIAL = 'lights'
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
307
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
308 class JimPanel(Thing):
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
309 "The panel to JIM's internals'"
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
310
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
311 NAME = "jim_panel"
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
312
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
313 INTERACTS = {
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
314 'closed' : InteractNoImage(506, 430, 137, 47),
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
315 'open' : InteractImage(500, 427, 'jim_panel_open.png'),
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
316 'broken' : InteractImage(488, 412, 'jim_panel_destroyed.png'),
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
317 }
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
318
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
319 INITIAL = 'closed'
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
320
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
321 def get_description(self):
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
322 if self.scene.get_data('ai panel') == 'closed':
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
323 return _("The sign reads 'Warning: Authorized Techinicians Only'.")
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
324
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
325 def interact_without(self):
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
326 if self.scene.get_data('ai status') == 'online':
472
cab67fd696b9 Fix crash bug on the bridge. (JIM's panel really doesn't like items.)
Jeremy Thurgood <firxen@gmail.com>
parents: 469
diff changeset
327 return self.interact_default(None)
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
328 elif self.scene.get_data('ai panel') == 'closed':
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
329 return Result(_("You are unable to open the panel with your bare hands."))
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
330 elif self.scene.get_data('ai panel') == 'open':
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
331 self.scene.set_data('ai panel', 'broken')
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
332 self.scene.set_data('ai status', 'dead')
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
333 self.set_interact('broken')
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
334 return Result(_("You unplug various important-looking wires."))
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
335
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
336
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
337 def interact_with_machete(self, item):
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
338 if self.scene.get_data('ai status') == 'online':
472
cab67fd696b9 Fix crash bug on the bridge. (JIM's panel really doesn't like items.)
Jeremy Thurgood <firxen@gmail.com>
parents: 469
diff changeset
339 return self.interact_default(item)
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
340 elif self.scene.get_data('ai panel') == 'closed':
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
341 self.scene.set_data('ai panel', 'open')
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
342 self.set_interact('open')
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
343 return Result(_("Using the machete, you lever the panel off."))
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
344 elif self.scene.get_data('ai panel') == 'open':
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
345 self.scene.set_data('ai panel', 'broken')
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
346 self.scene.set_data('ai status', 'dead')
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
347 self.set_interact('broken')
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
348 return Result(_("You smash various delicate components with the machete."))
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
349
472
cab67fd696b9 Fix crash bug on the bridge. (JIM's panel really doesn't like items.)
Jeremy Thurgood <firxen@gmail.com>
parents: 469
diff changeset
350 def interact_default(self, item):
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
351 if self.scene.get_data('ai status') == 'online':
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
352 return (Result(_('You feel a shock from the panel.')),
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
353 make_jim_dialog(_("Prisoner %s. Please step away from the panel. "
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
354 "You are not an authorized technician.") % PLAYER_ID, self.state))
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
355
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
356 class ChairDetail(Scene):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
357
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
358 FOLDER = 'bridge'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
359 BACKGROUND = 'chair_detail.png'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
360 NAME = 'chair_detail'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
361
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
362 def __init__(self, state):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
363 super(ChairDetail, self).__init__(state)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
364 self.add_thing(SuperconductorThing())
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
365
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
366
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
367 # classes related the computer detail
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
368
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
369
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
370 class LogTab(Thing):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
371 """Tab for log screen"""
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
372
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
373 NAME = 'bridge_comp.screen'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
374
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
375 INTERACTS = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
376 'log tab' : InteractNoImage(100, 53, 94, 37)
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
377 }
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
378 INITIAL = 'log tab'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
379 COMPUTER = 'bridge_comp_detail'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
380
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
381 def is_interactive(self, tool=None):
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
382 return self.state.detail_views[self.COMPUTER].get_data('tab') != 'log'
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
383
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
384 def interact_without(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
385 self.state.detail_views[self.COMPUTER].set_data('tab', 'log')
453
ab628938b95c Move background setting. Set end_game flag
Neil Muller <neil@dip.sun.ac.za>
parents: 439
diff changeset
386 self.state.detail_views[self.COMPUTER].set_background()
257
59dba2dcb280 Make computer beep
Neil Muller <neil@dip.sun.ac.za>
parents: 256
diff changeset
387 return Result(soundfile='beep550.ogg')
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
388
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
389
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
390 class AlertTab(Thing):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
391 """Tab for alert screen"""
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
392
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
393 NAME = 'bridge_comp.alert_tab'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
394
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
395 INTERACTS = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
396 'alert tab' : InteractNoImage(12, 53, 88, 37)
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
397 }
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
398 INITIAL = 'alert tab'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
399 COMPUTER = 'bridge_comp_detail'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
400
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
401 def is_interactive(self, tool=None):
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
402 return self.state.detail_views[self.COMPUTER].get_data('tab') != 'alert'
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
403
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
404 def interact_without(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
405 self.state.detail_views[self.COMPUTER].set_data('tab', 'alert')
453
ab628938b95c Move background setting. Set end_game flag
Neil Muller <neil@dip.sun.ac.za>
parents: 439
diff changeset
406 self.state.detail_views[self.COMPUTER].set_background()
257
59dba2dcb280 Make computer beep
Neil Muller <neil@dip.sun.ac.za>
parents: 256
diff changeset
407 return Result(soundfile='beep550.ogg')
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
408
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
409 class NavTab(Thing):
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
410 """Tab for the Navigation screen"""
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
411
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
412 NAME = 'bridge_comp.nav_tab'
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
413
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
414 INTERACTS = {
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
415 'nav tab' : InteractNoImage(197, 53, 126, 37),
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
416 }
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
417 INITIAL = 'nav tab'
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
418 COMPUTER = 'bridge_comp_detail'
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
419
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
420 def is_interactive(self, tool=None):
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
421 return self.state.detail_views[self.COMPUTER].get_data('tab') != 'nav'
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
422
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
423 def interact_without(self):
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
424 self.state.detail_views[self.COMPUTER].set_data('tab', 'nav')
453
ab628938b95c Move background setting. Set end_game flag
Neil Muller <neil@dip.sun.ac.za>
parents: 439
diff changeset
425 self.state.detail_views[self.COMPUTER].set_background()
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
426 return Result(soundfile='beep550.ogg')
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
427
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
428 class DestNavPageLine(Thing):
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
429 """The destination navigation lines."""
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
430
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
431 INITIAL = 'line'
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
432 COMPUTER = 'bridge_comp_detail'
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
433
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
434 def __init__(self, number, rect, ai_blocked):
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
435 super(DestNavPageLine, self).__init__()
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
436 self.name = 'bridge_comp.nav_line%s' % number
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
437 if DEBUG:
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
438 self._interact_hilight_color = Color(THECOLORS.keys()[number])
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
439 r = Rect(rect)
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
440 self.interacts = {}
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
441 self.interacts['line'] = InteractNoImage(r.x, r.y, r.w, r.h)
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
442 # Whether JIM blocks this
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
443 self.ai_blocked = ai_blocked
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
444 self.set_interact('line')
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
445
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
446 def is_interactive(self, tool=None):
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
447 return self.state.detail_views[self.COMPUTER].get_data('tab') == 'nav'
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
448
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
449 def interact_without(self):
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
450 if self.state.scenes['bridge'].get_data('ai status') == 'online':
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
451 return make_jim_dialog(_("You are not authorized to change the destination."), self.state)
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
452 if not self.ai_blocked:
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
453 return Result(_("There's no good reason to choose to go to the penal colony."))
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
454 if self.state.scenes['bridge'].get_data('ai status') == 'looping':
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
455 return Result(_("You could change the destination, but when JIM recovers, it'll just get reset."))
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
456 if self.state.scenes['bridge'].get_data('ai status') == 'dead':
478
a9925aaf5f61 i18n and Russian translation
Stefano Rivera <stefano@rivera.za.net>
parents: 476
diff changeset
457 return Result(_("You change the destination."), soundfile="beep550.ogg", end_game=True)
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
458
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
459 class CompUpButton(Thing):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
460 """Up button on log screen"""
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
461
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
462 NAME = 'bridge_comp.up_button'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
463
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
464 INTERACTS = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
465 'up' : InteractNoImage(594, 82, 30, 58)
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
466 }
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
467 INITIAL = 'up'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
468 COMPUTER = 'bridge_comp_detail'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
469
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
470 def is_interactive(self, tool=None):
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
471 tab = self.state.detail_views[self.COMPUTER].get_data('tab')
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
472 page = self.state.detail_views[self.COMPUTER].get_data('log page')
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
473 return tab == 'log' and page > 0
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
474
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
475 def interact_without(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
476 page = self.state.detail_views[self.COMPUTER].get_data('log page')
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
477 self.state.detail_views[self.COMPUTER].set_data('log page', page-1)
453
ab628938b95c Move background setting. Set end_game flag
Neil Muller <neil@dip.sun.ac.za>
parents: 439
diff changeset
478 self.state.detail_views[self.COMPUTER].set_background()
257
59dba2dcb280 Make computer beep
Neil Muller <neil@dip.sun.ac.za>
parents: 256
diff changeset
479 return Result(soundfile='beep550.ogg')
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
480
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
481
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
482 class CompDownButton(Thing):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
483 """Down button on log screen"""
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
484
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
485 NAME = 'bridge_comp.down_button'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
486
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
487 INTERACTS = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
488 'down' : InteractNoImage(594, 293, 30, 58)
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
489 }
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
490 INITIAL = 'down'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
491 COMPUTER = 'bridge_comp_detail'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
492
519
8f3c82c685a4 Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents: 518
diff changeset
493 def is_interactive(self, tool=None):
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
494 tab = self.state.detail_views[self.COMPUTER].get_data('tab')
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
495 page = self.state.detail_views[self.COMPUTER].get_data('log page')
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
496 max_page = self.state.detail_views[self.COMPUTER].get_data('max page')
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
497 return tab == 'log' and (page + 1) < max_page
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
498
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
499 def interact_without(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
500 page = self.state.detail_views[self.COMPUTER].get_data('log page')
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
501 self.state.detail_views[self.COMPUTER].set_data('log page', page+1)
453
ab628938b95c Move background setting. Set end_game flag
Neil Muller <neil@dip.sun.ac.za>
parents: 439
diff changeset
502 self.state.detail_views[self.COMPUTER].set_background()
257
59dba2dcb280 Make computer beep
Neil Muller <neil@dip.sun.ac.za>
parents: 256
diff changeset
503 return Result(soundfile='beep550.ogg')
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
504
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
505
350
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
506 class MonitorCamera(BaseCamera):
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
507 "A camera on the bridge"
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
508
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
509 NAME = "bridge.camera"
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
510
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
511 INTERACTS = {
464
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 453
diff changeset
512 'online': InteractImage(33, 192, 'camera_small.png'),
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 453
diff changeset
513 'dead': InteractImage(33, 192, 'camera_small_gray.png'),
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 453
diff changeset
514 'looping': InteractAnimated(33, 192, ('camera_small.png',
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 453
diff changeset
515 'camera_small_gray.png'),
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 453
diff changeset
516 15),
54853e61b149 Blinken cameras
Stefano Rivera <stefano@rivera.za.net>
parents: 453
diff changeset
517 }
350
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
518
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
519
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
520 class BridgeCompDetail(Scene):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
521
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
522 FOLDER = 'bridge'
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
523 NAME = 'bridge_comp_detail'
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
524
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
525 ALERT_BASE = 'comp_alert_base.png'
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
526 ALERTS = {
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
527 'ai looping' : 'comp_alert_ai_looping.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
528 'ai offline' : 'comp_alert_ai_offline.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
529 'engine offline' : 'comp_alert_engine_offline.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
530 'life support' : 'comp_alert_life_support.png',
409
72baf5bfebc6 Support for partial fixed state (pending artwork)
Neil Muller <neil@dip.sun.ac.za>
parents: 403
diff changeset
531 'life support partial' : 'comp_alert_life_support_partial.png',
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
532 }
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
533
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
534 # Point to start drawing changeable alerts
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
535 ALERT_OFFSET = (16, 140)
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
536 ALERT_SPACING = 4
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
537
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
538 LOGS = ['comp_log_start.png', 'comp_log_1.png',
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
539 'comp_log_end.png']
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
540
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
541 NAVIGATION = {
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
542 'engine offline' : 'bridge_nav_engine.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
543 'life support' : 'bridge_nav_life_support.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
544 'final' : 'bridge_nav_dest.png'
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
545 }
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
546
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
547 BACKGROUND = ALERT_BASE
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
548
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
549
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
550 INITIAL_DATA = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
551 'tab' : 'alert',
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
552 'log page' : 0,
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
553 'max page' : len(LOGS),
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
554 }
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
555
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
556 def __init__(self, state):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
557 super(BridgeCompDetail, self).__init__(state)
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
558
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
559 self.add_thing(LogTab())
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
560 self.add_thing(AlertTab())
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
561 self.add_thing(NavTab())
412
14761edcccad Disable log screen
Neil Muller <neil@dip.sun.ac.za>
parents: 409
diff changeset
562 #self.add_thing(CompUpButton())
14761edcccad Disable log screen
Neil Muller <neil@dip.sun.ac.za>
parents: 409
diff changeset
563 #self.add_thing(CompDownButton())
315
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
564 self._scene_playlist = None
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
565 self._alert = get_image(self.FOLDER, self.ALERT_BASE)
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
566 self._alert_messages = {}
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
567 self._nav_messages = {}
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
568 for key, name in self.ALERTS.iteritems():
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
569 self._alert_messages[key] = get_image(self.FOLDER, name)
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
570 for key, name in self.NAVIGATION.iteritems():
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
571 self._nav_messages[key] = get_image(self.FOLDER, name)
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
572 self._nav_lines = []
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
573 self._nav_lines.append(DestNavPageLine(1, (14, 99, 595, 30), False))
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
574 self._nav_lines.append(DestNavPageLine(2, (14, 135, 595, 30), True))
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
575 self._nav_lines.append(DestNavPageLine(3, (14, 167, 595, 30), True))
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
576 self._nav_lines.append(DestNavPageLine(4, (14, 203, 595, 30), True))
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
577 self._nav_lines.append(DestNavPageLine(5, (14, 239, 595, 30), True))
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
578 self._logs = [get_image(self.FOLDER, x) for x in self.LOGS]
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
579
315
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
580 def enter(self):
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
581 self._scene_playlist = get_current_playlist()
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
582 change_playlist(None)
453
ab628938b95c Move background setting. Set end_game flag
Neil Muller <neil@dip.sun.ac.za>
parents: 439
diff changeset
583 self.set_background()
315
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
584
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
585 def leave(self):
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
586 change_playlist(self._scene_playlist)
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
587
453
ab628938b95c Move background setting. Set end_game flag
Neil Muller <neil@dip.sun.ac.za>
parents: 439
diff changeset
588 def set_background(self):
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
589 if self.get_data('tab') == 'alert':
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
590 self._clear_navigation()
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
591 self._background = self._alert
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
592 elif self.get_data('tab') == 'log':
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
593 self._clear_navigation()
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
594 self._background = self._logs[self.get_data('log page')]
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
595 elif self.get_data('tab') == 'nav':
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
596 self._background = self._get_nav_page()
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
597
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
598 def _clear_navigation(self):
435
19aff54b2e73 Many small fixes.
Jeremy Thurgood <firxen@gmail.com>
parents: 429
diff changeset
599 "Remove navigation things if necessary"
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
600 for thing in self._nav_lines:
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
601 if thing.name in self.things.keys():
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
602 # Much fiddling to do the right thing when we reinsert it
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
603 del self.things[thing.name]
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
604 thing.scene = None
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
605
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
606 def _get_nav_page(self):
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
607 if not self.state.scenes['engine'].get_data('engine online'):
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
608 return self._nav_messages['engine offline']
409
72baf5bfebc6 Support for partial fixed state (pending artwork)
Neil Muller <neil@dip.sun.ac.za>
parents: 403
diff changeset
609 elif not self.state.scenes['mess'].get_data('life support status') == 'fixed':
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
610 return self._nav_messages['life support']
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
611 else:
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
612 for thing in self._nav_lines:
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
613 if thing.name not in self.things:
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
614 self.add_thing(thing)
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
615 return self._nav_messages['final']
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
616
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
617 def _draw_alerts(self, surface):
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
618 xpos, ypos = self.ALERT_OFFSET
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
619 if self.state.scenes['bridge'].get_data('ai status') == 'looping':
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
620 surface.blit(self._alert_messages['ai looping'], (xpos, ypos))
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
621 ypos += self._alert_messages['ai looping'].get_size()[1] + self.ALERT_SPACING
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
622 if self.state.scenes['bridge'].get_data('ai status') == 'dead':
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
623 surface.blit(self._alert_messages['ai offline'], (xpos, ypos))
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
624 ypos += self._alert_messages['ai offline'].get_size()[1] + self.ALERT_SPACING
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
625 if not self.state.scenes['engine'].get_data('engine online'):
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
626 surface.blit(self._alert_messages['engine offline'], (xpos, ypos))
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
627 ypos += self._alert_messages['engine offline'].get_size()[1] + self.ALERT_SPACING
409
72baf5bfebc6 Support for partial fixed state (pending artwork)
Neil Muller <neil@dip.sun.ac.za>
parents: 403
diff changeset
628 if self.state.scenes['mess'].get_data('life support status') == 'broken':
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
629 surface.blit(self._alert_messages['life support'], (xpos, ypos))
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
630 ypos += self._alert_messages['life support'].get_size()[1] + self.ALERT_SPACING
409
72baf5bfebc6 Support for partial fixed state (pending artwork)
Neil Muller <neil@dip.sun.ac.za>
parents: 403
diff changeset
631 if self.state.scenes['mess'].get_data('life support status') == 'replaced':
72baf5bfebc6 Support for partial fixed state (pending artwork)
Neil Muller <neil@dip.sun.ac.za>
parents: 403
diff changeset
632 surface.blit(self._alert_messages['life support partial'], (xpos, ypos))
72baf5bfebc6 Support for partial fixed state (pending artwork)
Neil Muller <neil@dip.sun.ac.za>
parents: 403
diff changeset
633 ypos += self._alert_messages['life support partial'].get_size()[1] + self.ALERT_SPACING
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
634
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
635 def draw_things(self, surface):
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
636 if self.get_data('tab') == 'alert':
403
df3216b369b1 Hook up navigation tab, Add won condition
Neil Muller <neil@dip.sun.ac.za>
parents: 399
diff changeset
637 self._draw_alerts(surface)
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
638 super(BridgeCompDetail, self).draw_things(surface)
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
639
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
640
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
641 SCENES = [Bridge]
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
642 DETAIL_VIEWS = [ChairDetail, BridgeCompDetail]