annotate gamelib/scenes/bridge.py @ 399:1cfcd82519b6

You have to duct tape the superconductor
author Stefano Rivera <stefano@rivera.za.net>
date Sat, 28 Aug 2010 21:24:04 +0200
parents 21faf5c8804c
children df3216b369b1
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
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
5 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
6 from albow.resource import get_image
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
7
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
8 from gamelib.cursor import CursorSprite
263
3b4a78422201 Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents: 259
diff changeset
9 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
10 from gamelib.sound import get_current_playlist
263
3b4a78422201 Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents: 259
diff changeset
11
352
88c1a59b0544 Add sentence for bridge. Have poster break AI
Neil Muller <neil@dip.sun.ac.za>
parents: 350
diff changeset
12 from gamelib.scenes.game_constants import PLAYER_ID
263
3b4a78422201 Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents: 259
diff changeset
13 from gamelib.scenes.scene_widgets import (Door, InteractText, InteractNoImage,
3b4a78422201 Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents: 259
diff changeset
14 InteractRectUnion, InteractImage,
350
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
15 InteractAnimated, GenericDescThing,
360
452230d78541 Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents: 354
diff changeset
16 BaseCamera, make_jim_dialog)
263
3b4a78422201 Shuffled a bunch of stuff into more appropriate places.
Jeremy Thurgood <firxen@gmail.com>
parents: 259
diff changeset
17
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
18
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
19 class Bridge(Scene):
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
20
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
21 FOLDER = "bridge"
235
b0add10f7556 Hook up bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 222
diff changeset
22 BACKGROUND = 'bridge.png'
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
23
278
8e27efd331aa Offset support for scenes
Neil Muller <neil@dip.sun.ac.za>
parents: 277
diff changeset
24 OFFSET = (0, -50)
8e27efd331aa Offset support for scenes
Neil Muller <neil@dip.sun.ac.za>
parents: 277
diff changeset
25
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
26 MUSIC = [
256
5213ee33ec1b More varied beeps
Neil Muller <neil@dip.sun.ac.za>
parents: 255
diff changeset
27 'beep1.ogg',
5213ee33ec1b More varied beeps
Neil Muller <neil@dip.sun.ac.za>
parents: 255
diff changeset
28 'beep2.ogg',
5213ee33ec1b More varied beeps
Neil Muller <neil@dip.sun.ac.za>
parents: 255
diff changeset
29 'beep880.ogg',
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
30 'beep660.ogg',
256
5213ee33ec1b More varied beeps
Neil Muller <neil@dip.sun.ac.za>
parents: 255
diff changeset
31 'beep3.ogg',
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
32 'silent.ogg',
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
33 'creaking.ogg',
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
34 'silent.ogg',
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
35 ]
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
36
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
37 INITIAL_DATA = {
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
38 'accessible': True,
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
39 'ai status' : 'online',
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
40 'ai panel' : 'closed',
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
41 }
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
42
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
43 def __init__(self, state):
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
44 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
45 self.background_playlist = None
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
46 self.add_item(Superconductor('superconductor'))
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
47 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
48 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
49 self.add_thing(MonitorCamera())
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
50 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
51 self.add_thing(MassageChairBase())
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
52 self.add_thing(StethoscopeThing())
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
53 self.add_thing(BridgeComputer())
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
54 self.add_thing(LeftLights())
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
55 self.add_thing(RightLights())
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
56 self.add_thing(JimPanel())
277
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
57 self.add_thing(GenericDescThing('bridge.wires', 1,
293
4012d50a4674 more spelling and full stops
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 292
diff changeset
58 "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
59 ((46, 4, 711, 143),)))
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
60 self.add_thing(GenericDescThing('bridge.note', 2,
293
4012d50a4674 more spelling and full stops
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 292
diff changeset
61 "\"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
62 (
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
63 (491, 494, 194, 105),
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
64 (422, 533, 71, 66),
01b22664a12c coloured wires in bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 270
diff changeset
65 )))
291
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
66 self.doctor = GenericDescThing('bridge.skel', 3,
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
67 "A skeleton hangs improbably from the wires.",
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
68 (
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
69 (632, 148, 40, 29),
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
70 (683, 176, 30, 101),
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
71 (652, 274, 45, 96),
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
72 (639, 180, 11, 95),
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 self.add_thing(self.doctor)
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
75
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
76
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
77 def enter(self):
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
78 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
79 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
80 change_playlist(self.background_playlist)
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
81
248
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
82 def leave(self):
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
83 change_playlist(None)
37f892b59c4b Beeps on the bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 242
diff changeset
84
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
85
242
12c4f87ea424 Unify doors a bit
Neil Muller <neil@dip.sun.ac.za>
parents: 237
diff changeset
86 class ToMap(Door):
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
87
252
dfc89bc64fdb Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents: 251
diff changeset
88 SCENE = "bridge"
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
89
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
90 INTERACTS = {
235
b0add10f7556 Hook up bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 222
diff changeset
91 "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
92 }
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
93
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
94 INITIAL = "door"
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 120
diff changeset
95
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
96
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
97 class BridgeComputer(Thing):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
98 """The bridge computer. Gives status updates"""
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
99
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
100 NAME = "bridge.comp"
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
101
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
102 INTERACTS = {
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
103 'screen' : InteractNoImage(338, 296, 123, 74),
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
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
106 INITIAL = 'screen'
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
107
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
108 def interact_without(self):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
109 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
110
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
111 def interact_with_titanium_leg(self):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
112 return Result("You can't break the duraplastic screen.")
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
113
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
114 def interact_with_machete(self):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
115 return Result("Scratching the screen won't help you.")
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
116
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
117 def get_description(self):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
118 return "The main bridge computer screen."
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
119
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
120
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
121 class MassageChairBase(Thing):
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
122 "The captain's massage chair, contains superconductor"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
123
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
124 NAME = 'bridge.massagechair_base'
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
125
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
126 INTERACTS = {
316
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
127 'chair': InteractNoImage(127, 518, 69, 64),
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
128 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
129
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
130 INITIAL = 'chair'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
131
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
132 INITIAL_DATA = {
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
133 'contains_superconductor': True,
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
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
136 def interact_without(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
137 return Result(detail_view='chair_detail')
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
138
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
139 def get_description(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
140 if self.get_data('contains_superconductor'):
316
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
141 return "A top of the line Massage-o-Matic Captain's Executive Command Chair. " \
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
142 "It's massaging a skeleton."
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
143 return "The chair won't work any more, it has no power."
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
144
327
67e8a547970b More engine room descs
Stefano Rivera <stefano@rivera.za.net>
parents: 316
diff changeset
145
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
146 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
147 "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
148
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
149 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
150
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
151 INTERACTS = {
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
152 'chair': InteractRectUnion((
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
153 (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
154 (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
155 (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
156 (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
157 (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
158 (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
159 (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
160 )),
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
161 }
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
162
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
163 INITIAL = 'chair'
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
164
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
165 def get_description(self):
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
166 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
167 .get_description()
4a7aa7fcd191 Only the base of the massage chair brings up the subscene
Stefano Rivera <stefano@rivera.za.net>
parents: 315
diff changeset
168
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
169 def is_interactive(self):
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
170 return False
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
171
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
172
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
173 class Stethoscope(Item):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
174 "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
175
269
95e4021e9959 Hook up stethoscope
Stefano Rivera <stefano@rivera.za.net>
parents: 267
diff changeset
176 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
177 CURSOR = CursorSprite('stethoscope.png')
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
178
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
179
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
180 class StethoscopeThing(Thing):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
181 "Stehoscope on the doctor"
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
182
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
183 NAME ='bridge.stethoscope'
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 INTERACTS = {
269
95e4021e9959 Hook up stethoscope
Stefano Rivera <stefano@rivera.za.net>
parents: 267
diff changeset
186 'stethoscope': InteractImage(650, 178, 'hanging_stethoscope.png'),
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
187 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
188
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
189 INITIAL = 'stethoscope'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
190
291
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
191 def get_description(self):
293
4012d50a4674 more spelling and full stops
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 292
diff changeset
192 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
193
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
194 def interact_without(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
195 self.state.add_inventory_item('stethoscope')
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
196 self.scene.remove_thing(self)
291
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
197 # Fill in the doctor's rect
beb9d6935b33 Tweak bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 285
diff changeset
198 self.scene.doctor.rect.append(self.rect)
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
199 return Result("You pick up the stethoscope and verify that the doctor's "
292
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 291
diff changeset
200 "heart has stopped. Probably a while ago.")
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
201
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
202
399
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
203 class TapedSuperconductor(Item):
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
204 "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
205
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
206 INVENTORY_IMAGE = 'superconductor_taped.png'
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
207 CURSOR = CursorSprite('superconductor_taped_cursor.png')
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
208
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
209
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
210 class Superconductor(Item):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
211 "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
212
285
2ec328aeeaf8 Engine room mostly hooked up
Stefano Rivera <stefano@rivera.za.net>
parents: 278
diff changeset
213 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
214 CURSOR = CursorSprite('superconductor_fixed.png')
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
215
399
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
216 def interact_with_duct_tape(self, item, state):
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
217 taped_superconductor = TapedSuperconductor('taped_superconductor')
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
218 state.add_item(taped_superconductor)
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
219 state.replace_inventory_item(self.name, taped_superconductor.name)
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
220 return Result("You rip off a piece of duct tape and stick it on the superconductor. "
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
221 "It almost sticks to itself, but you successfully avoid disaster.")
1cfcd82519b6 You have to duct tape the superconductor
Stefano Rivera <stefano@rivera.za.net>
parents: 393
diff changeset
222
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
223
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
224 class SuperconductorThing(Thing):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
225 "Superconductor from the massage chair."
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
226
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
227 NAME ='bridge.superconductor'
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 INTERACTS = {
259
b6e1c4e4e59d Superconductor Thing now works.
Jeremy Thurgood <firxen@gmail.com>
parents: 257
diff changeset
230 'superconductor': InteractImage(158, 138, 'superconductor.png'),
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
231 }
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
232
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
233 INITIAL = 'superconductor'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
234
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
235 def interact_without(self):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
236 self.state.add_inventory_item('superconductor')
330
8f85902f4cb6 Massage chair and base where swapped
Stefano Rivera <stefano@rivera.za.net>
parents: 327
diff changeset
237 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
238 .set_data('contains_superconductor', False)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
239 self.scene.remove_thing(self)
259
b6e1c4e4e59d Superconductor Thing now works.
Jeremy Thurgood <firxen@gmail.com>
parents: 257
diff changeset
240 return Result("The superconductor module unclips easily.")
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
241
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
242 class BlinkingLights(Thing):
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
243
370
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
244 def __init__(self):
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
245 super(BlinkingLights, self).__init__()
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
246 self.description = None
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
247
270
d4f08abc58fb Interactivity status tweaks
Neil Muller <neil@dip.sun.ac.za>
parents: 269
diff changeset
248 def is_interactive(self):
d4f08abc58fb Interactivity status tweaks
Neil Muller <neil@dip.sun.ac.za>
parents: 269
diff changeset
249 return False
d4f08abc58fb Interactivity status tweaks
Neil Muller <neil@dip.sun.ac.za>
parents: 269
diff changeset
250
370
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
251 def leave(self):
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
252 self.description = random.choice([
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
253 "The lights flash in interesting patterns.",
292
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 291
diff changeset
254 "The flashing lights don't mean anything to you.",
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 291
diff changeset
255 "The console lights flash and flicker.",
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
256 ])
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
257
370
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
258 def get_description(self):
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
259 if not self.description:
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
260 self.leave()
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
261 return self.description
8936c043d7a1 Fix bliken lights description
Neil Muller <neil@dip.sun.ac.za>
parents: 369
diff changeset
262
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
263 class LeftLights(BlinkingLights):
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
264
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
265 NAME ='bridge.lights.1'
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
266
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
267 INTERACTS = {
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
268 "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
269 }
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
270
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
271 INITIAL = 'lights'
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
272
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
273 class RightLights(BlinkingLights):
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
274
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
275 NAME ='bridge.lights.2'
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
276
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
277 INTERACTS = {
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
278 "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
279 }
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
280
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
281 INITIAL = 'lights'
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
282
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
283 class JimPanel(Thing):
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
284 "The panel to JIM's internals'"
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
285
354
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
286 NAME = "jim_panel"
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
287
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
288 INTERACTS = {
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
289 '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
290 '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
291 '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
292 }
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
293
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
294 INITIAL = 'closed'
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
295
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
296 def get_description(self):
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
297 if self.scene.get_data('ai panel') == 'closed':
369
8a288db78f40 speling
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 368
diff changeset
298 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
299
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
300 def interact_without(self):
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
301 if self.scene.get_data('ai status') == 'online':
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
302 return self.interact_default()
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
303 elif self.scene.get_data('ai panel') == 'closed':
368
a95bfba3acd5 speling
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 360
diff changeset
304 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
305 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
306 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
307 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
308 self.set_interact('broken')
368
a95bfba3acd5 speling
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 360
diff changeset
309 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
310
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
311
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
312 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
313 if self.scene.get_data('ai status') == 'online':
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
314 return self.interact_default()
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
315 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
316 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
317 self.set_interact('open')
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
318 return Result("Using the machete, you lever the panel off.")
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
319 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
320 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
321 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
322 self.set_interact('broken')
09efb8b7c132 Hook up panel part of AI puzzle
Neil Muller <neil@dip.sun.ac.za>
parents: 352
diff changeset
323 return Result("You smash various delicate components with the machete.")
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_default(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':
368
a95bfba3acd5 speling
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 360
diff changeset
327 return (Result('You feel a shock from the panel.'),
360
452230d78541 Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents: 354
diff changeset
328 make_jim_dialog("Prisoner %s. Please step away from the panel. "
452230d78541 Use make_jim_dialog everywhere
Neil Muller <neil@dip.sun.ac.za>
parents: 354
diff changeset
329 "You are not an authorized techinican." % PLAYER_ID, self.state))
251
602fe654bd37 Das blinken lights
Neil Muller <neil@dip.sun.ac.za>
parents: 248
diff changeset
330
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
331 class ChairDetail(Scene):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
332
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
333 FOLDER = 'bridge'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
334 BACKGROUND = 'chair_detail.png'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
335 NAME = 'chair_detail'
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
336
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
337 SIZE = (300, 300)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
338
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
339 def __init__(self, state):
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
340 super(ChairDetail, self).__init__(state)
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
341 self.add_thing(SuperconductorThing())
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
342
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
343
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
344 # 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
345
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
346
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
347 class LogTab(Thing):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
348 """Tab for log screen"""
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
349
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
350 NAME = 'bridge_comp.screen'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
351
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
352 INTERACTS = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
353 '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
354 }
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
355 INITIAL = 'log tab'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
356 COMPUTER = 'bridge_comp_detail'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
357
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
358 def is_interactive(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
359 return self.state.detail_views[self.COMPUTER].get_data('tab') == 'alert'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
360
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
361 def interact_without(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
362 self.state.detail_views[self.COMPUTER].set_data('tab', 'log')
257
59dba2dcb280 Make computer beep
Neil Muller <neil@dip.sun.ac.za>
parents: 256
diff changeset
363 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
364
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
365
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
366 class AlertTab(Thing):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
367 """Tab for alert screen"""
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 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
370
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
371 INTERACTS = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
372 '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
373 }
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
374 INITIAL = 'alert tab'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
375 COMPUTER = 'bridge_comp_detail'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
376
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
377 def is_interactive(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
378 return self.state.detail_views[self.COMPUTER].get_data('tab') == 'log'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
379
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
380 def interact_without(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
381 self.state.detail_views[self.COMPUTER].set_data('tab', 'alert')
257
59dba2dcb280 Make computer beep
Neil Muller <neil@dip.sun.ac.za>
parents: 256
diff changeset
382 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
383
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
384
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
385 class CompUpButton(Thing):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
386 """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
387
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
388 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
389
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
390 INTERACTS = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
391 '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
392 }
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
393 INITIAL = 'up'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
394 COMPUTER = 'bridge_comp_detail'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
395
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
396 def is_interactive(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
397 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
398 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
399 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
400
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
401 def interact_without(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
402 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
403 self.state.detail_views[self.COMPUTER].set_data('log page', page-1)
257
59dba2dcb280 Make computer beep
Neil Muller <neil@dip.sun.ac.za>
parents: 256
diff changeset
404 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
405
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
406
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
407 class CompDownButton(Thing):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
408 """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
409
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
410 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
411
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
412 INTERACTS = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
413 '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
414 }
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
415 INITIAL = 'down'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
416 COMPUTER = 'bridge_comp_detail'
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
417
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
418 def is_interactive(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
419 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
420 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
421 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
422 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
423
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
424 def interact_without(self):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
425 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
426 self.state.detail_views[self.COMPUTER].set_data('log page', page+1)
257
59dba2dcb280 Make computer beep
Neil Muller <neil@dip.sun.ac.za>
parents: 256
diff changeset
427 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
428
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
429
350
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
430 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
431 "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
432
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
433 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
434
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
435 INTERACTS = {
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
436 'camera' : InteractImage(33, 192, 'camera_small.png')
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
437 }
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
438
125cb389ab90 Hook up poster. Add cameras to crew_quarters and bridge
Neil Muller <neil@dip.sun.ac.za>
parents: 341
diff changeset
439
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
440 class BridgeCompDetail(Scene):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
441
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
442 FOLDER = 'bridge'
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
443 NAME = 'bridge_comp_detail'
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
444
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
445 SIZE = (640, 400)
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
446
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
447 ALERT_BASE = 'comp_alert_base.png'
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
448 ALERTS = {
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
449 'ai looping' : 'comp_alert_ai_looping.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
450 'ai offline' : 'comp_alert_ai_offline.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
451 'engine offline' : 'comp_alert_engine_offline.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
452 'life support' : 'comp_alert_life_support.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
453 }
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
454
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
455 # Point to start drawing changeable alerts
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
456 ALERT_OFFSET = (16, 140)
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
457 ALERT_SPACING = 4
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
458
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
459 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
460 'comp_log_end.png']
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
461
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
462 NAVIGATION = {
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
463 'engine offline' : 'bridge_nav_engine.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
464 'life support' : 'bridge_nav_life_support.png',
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
465 'final' : 'bridge_nav_dest.png'
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
466 }
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
467
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
468 BACKGROUND = ALERT_BASE
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
469
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
470
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
471 INITIAL_DATA = {
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
472 'tab' : 'alert',
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
473 'log page' : 0,
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
474 'max page' : len(LOGS),
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
475 }
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
476
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
477 def __init__(self, state):
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
478 super(BridgeCompDetail, self).__init__(state)
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
479
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
480 self.add_thing(LogTab())
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
481 self.add_thing(AlertTab())
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
482 self.add_thing(CompUpButton())
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
483 self.add_thing(CompDownButton())
315
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
484 self._scene_playlist = None
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
485 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
486 self._alert_messages = {}
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
487 self._nav_message = {}
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
488 for key, name in self.ALERTS.iteritems():
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
489 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
490 for key, name in self.NAVIGATION.iteritems():
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
491 self._nav_message[key] = get_image(self.FOLDER, name)
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
492 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
493
315
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
494 def enter(self):
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
495 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
496 change_playlist(None)
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
497
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
498 def leave(self):
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
499 change_playlist(self._scene_playlist)
7b07ffc37ec0 Suspend background sound for bridge computer detail
Neil Muller <neil@dip.sun.ac.za>
parents: 302
diff changeset
500
255
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
501 def draw_background(self, surface):
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
502 if self.get_data('tab') == 'alert':
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
503 self._background = self._alert
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
504 else:
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
505 self._background = self._logs[self.get_data('log page')]
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
506 super(BridgeCompDetail, self).draw_background(surface)
2bd28030e8e4 Hook up parts of the bridge computer system
Neil Muller <neil@dip.sun.ac.za>
parents: 252
diff changeset
507
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
508 def draw_things(self, surface):
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
509 if self.get_data('tab') == 'alert':
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
510 xpos, ypos = self.ALERT_OFFSET
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
511 if self.state.scenes['bridge'].get_data('ai status') == 'looping':
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
512 surface.blit(self._alert_messages['ai looping'], (xpos, ypos))
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
513 ypos += self._alert_messages['ai looping'].get_size()[1] + self.ALERT_SPACING
393
21faf5c8804c Fix ai dead check
Neil Muller <neil@dip.sun.ac.za>
parents: 389
diff changeset
514 if self.state.scenes['bridge'].get_data('ai status') == 'dead':
389
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
515 surface.blit(self._alert_messages['ai offline'], (xpos, ypos))
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
516 ypos += self._alert_messages['ai offline'].get_size()[1] + self.ALERT_SPACING
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
517 if not self.state.scenes['engine'].get_data('engine online'):
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
518 surface.blit(self._alert_messages['engine offline'], (xpos, ypos))
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
519 ypos += self._alert_messages['engine offline'].get_size()[1] + self.ALERT_SPACING
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
520 if not self.state.scenes['mess'].get_data('life support online'):
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
521 surface.blit(self._alert_messages['life support'], (xpos, ypos))
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
522 ypos += self._alert_messages['life support'].get_size()[1] + self.ALERT_SPACING
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
523 super(BridgeCompDetail, self).draw_things(surface)
eef2fca1aa11 Hook up updated alert screens
Neil Muller <neil@dip.sun.ac.za>
parents: 370
diff changeset
524
222
b03debaec72d Things and Items for bridge
Stefano Rivera <stefano@rivera.za.net>
parents: 150
diff changeset
525
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
526 SCENES = [Bridge]
237
ae01c10497b3 Start work on bridge comp detail
Neil Muller <neil@dip.sun.ac.za>
parents: 235
diff changeset
527 DETAIL_VIEWS = [ChairDetail, BridgeCompDetail]