Mercurial > boomslang
annotate gamelib/scenes/machine.py @ 764:a8510f4e2ea1 pyntnclick
Conditionally add things based on state.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 26 Jan 2013 15:24:56 +0200 |
parents | 386475464202 |
children | a35f5364437d |
rev | line source |
---|---|
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
1 """Machine room where tools and machines are found.""" |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
2 |
549 | 3 from pyntnclick.state import Scene, Item, Thing, Result |
4 from pyntnclick.cursor import CursorSprite | |
764
a8510f4e2ea1
Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents:
759
diff
changeset
|
5 from pyntnclick.scenewidgets import ( |
a8510f4e2ea1
Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents:
759
diff
changeset
|
6 InteractNoImage, InteractImage, InteractAnimated, GenericDescThing, |
a8510f4e2ea1
Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents:
759
diff
changeset
|
7 TakeableThing) |
525
821b322e903b
Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
519
diff
changeset
|
8 |
821b322e903b
Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
519
diff
changeset
|
9 from gamelib.scenes.game_widgets import Door |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
10 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
11 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
12 class Machine(Scene): |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
13 |
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
14 FOLDER = "machine" |
260
020f83305bf3
Line art machine room.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
252
diff
changeset
|
15 BACKGROUND = "machine_room.png" |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
16 |
592
4e9178215e75
Introduce .setup() for GameDeveloperGizmos.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
549
diff
changeset
|
17 def setup(self): |
151
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
18 self.add_thing(ToMap()) |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
19 self.add_thing(LaserWelderSlot()) |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
20 self.add_thing(LaserWelderButton()) |
281
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
21 self.add_thing(LaserWelderPowerLights()) |
194 | 22 self.add_thing(Grinder()) |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
23 self.add_thing(ManualThing()) |
219
326300c218a6
Choppable cryopipes and can refactoring.
Jeremy Thurgood <firxen@gmail.com>
parents:
215
diff
changeset
|
24 self.add_item(TitaniumMachete('machete')) |
329 | 25 self.add_item(CryoPipesOne('cryo_pipes_one')) |
26 self.add_item(CryoPipesTwo('cryo_pipes_two')) | |
27 self.add_item(CryoPipesThree('cryo_pipes_three')) | |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
28 self.add_item(Manual('manual')) |
297
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
29 self.add_thing(GenericDescThing('machine.wires', 2, |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
30 "Wires run to all the machines in the room", |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
31 ( |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
32 (250, 172, 252, 12), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
33 (388, 183, 114, 13), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
34 (496, 112, 36, 64), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
35 (533, 85, 19, 45), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
36 (647, 114, 10, 308), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
37 (111, 96, 13, 285), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
38 (152, 106, 34, 30), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
39 (189, 136, 27, 28), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
40 (222, 157, 24, 25), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
41 (120, 86, 34, 29), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
42 (110, 80, 21, 15), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
43 (383, 196, 12, 56), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
44 (553, 61, 26, 50), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
45 (574, 39, 16, 48), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
46 (648, 85, 22, 26), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
47 (674, 54, 23, 36), |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
48 ))) |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
49 self.add_thing(GenericDescThing('machine.diagram', 3, |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
50 "A wiring diagram of some sort", |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
51 ((694, 140, 94, 185),))) |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
52 self.add_thing(GenericDescThing('machine.powerpoint', 4, |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
53 "The cables to this power point have been cut", |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
54 ((155, 22, 92, 74),))) |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
55 self.add_thing(GenericDescThing("machine.powerpoint", 5, |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
56 "All the machines run off this powerpoint", |
4adb64d349bc
Add some flavour text to machine room. Tweak rects
Neil Muller <neil@dip.sun.ac.za>
parents:
283
diff
changeset
|
57 ((593, 19, 74, 57),))) |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
58 self.add_thing(GenericDescThing("machine.drill_press", 6, |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
59 "An impressive looking laser drill press", |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
60 ( |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
61 (519, 338, 36, 63), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
62 (545, 348, 93, 46), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
63 (599, 309, 41, 150), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
64 (588, 445, 66, 42), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
65 (616, 479, 41, 14), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
66 (527, 393, 15, 17), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
67 (510, 360, 13, 11), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
68 (532, 331, 14, 11), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
69 (605, 304, 26, 8), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
70 ))) |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
71 self.add_thing(GenericDescThing("machine.drill_press_block", 7, |
753
c910c8b51d55
No idea what that TODO thinks needs to be done, but we've done it.
Stefano Rivera <stefano@rivera.za.net>
parents:
750
diff
changeset
|
72 "The block for the laser drill press", |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
73 ((461, 446, 38, 27),))) |
151
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
74 |
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
75 |
242 | 76 class ToMap(Door): |
151
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
77 |
252
dfc89bc64fdb
Start of walkthrough "unit test" and associated fixes and tweaks.
Jeremy Thurgood <firxen@gmail.com>
parents:
242
diff
changeset
|
78 SCENE = "machine" |
151
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
79 |
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
80 INTERACTS = { |
262
5f58da9eeb52
Replace text interacts with doors.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
260
diff
changeset
|
81 "door": InteractNoImage(695, 350, 97, 212), |
151
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
82 } |
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
83 |
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
84 INITIAL = "door" |
d00aa26941c4
Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
55
diff
changeset
|
85 |
281
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
86 |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
87 class LaserWelderSlot(Thing): |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
88 |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
89 NAME = "machine.welder.slot" |
190
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
90 |
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
91 INTERACTS = { |
329 | 92 "empty": InteractImage(241, 310, "welder_empty.png"), |
93 "can": InteractImage(241, 310, "welder_can.png"), | |
94 "tube": InteractImage(241, 310, "welder_pipe.png"), | |
95 "can_and_tube": InteractImage(241, 310, "welder_can_pipe.png"), | |
96 } | |
97 | |
98 INITIAL = "empty" | |
99 | |
100 INITIAL_DATA = { | |
101 'contents': set(), | |
190
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
102 } |
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
103 |
759
386475464202
Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents:
753
diff
changeset
|
104 def select_interact(self): |
329 | 105 contents = self.get_data('contents') |
106 if not contents: | |
759
386475464202
Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents:
753
diff
changeset
|
107 return "empty" |
329 | 108 elif len(contents) == 1: |
109 if "can" in contents: | |
759
386475464202
Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents:
753
diff
changeset
|
110 return "can" |
329 | 111 elif "tube" in contents: |
759
386475464202
Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents:
753
diff
changeset
|
112 return "tube" |
329 | 113 else: |
759
386475464202
Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents:
753
diff
changeset
|
114 return "can_and_tube" |
190
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
115 |
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
116 def interact_without(self): |
406 | 117 return Result("You really don't want to put your hand in there.") |
190
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
118 |
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
119 def interact_with_empty_can(self, item): |
329 | 120 contents = self.get_data('contents') |
121 if "can" in contents: | |
122 return Result("There is already a can in the welder.") | |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
123 self.game.remove_inventory_item(item.name) |
329 | 124 contents.add("can") |
759
386475464202
Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents:
753
diff
changeset
|
125 self.set_interact() |
329 | 126 return Result("You carefully place the can in the laser welder.") |
127 | |
128 def interact_with_tube_fragment(self, item): | |
129 contents = self.get_data('contents') | |
130 if "tube" in contents: | |
131 return Result("There is already a tube fragment in the welder.") | |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
132 self.game.remove_inventory_item(item.name) |
329 | 133 contents.add("tube") |
759
386475464202
Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents:
753
diff
changeset
|
134 self.set_interact() |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
135 return Result("You carefully place the tube fragments in the" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
136 " laser welder.") |
190
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
137 |
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
138 def get_description(self): |
329 | 139 contents = self.get_data('contents') |
140 if not contents: | |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
141 return ("This is a Smith and Wesson 'zOMG' class high-precision" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
142 " laser welder.") |
329 | 143 if len(contents) == 1: |
144 msg = "The laser welder looks hungry, somehow." | |
145 if "can" in contents: | |
146 msg += " It currently contains an empty can." | |
731 | 147 elif "tube" in contents: |
329 | 148 msg += " It currently contains a tube fragment." |
149 elif len(contents) == 2: | |
150 msg = "The laser welder looks expectant. " | |
151 if "can" in contents and "tube" in contents: | |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
152 msg += (" It currently contains an empty can and a" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
153 " tube fragment.") |
190
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
154 return msg |
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
155 |
30f2308c1efc
Fix tests and add a (currently unhooked) laser welder.
Jeremy Thurgood <firxen@gmail.com>
parents:
151
diff
changeset
|
156 |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
157 class LaserWelderButton(Thing): |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
158 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
159 NAME = "machine.welder.button" |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
160 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
161 INTERACTS = { |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
162 "button": InteractNoImage(406, 389, 28, 31), |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
163 } |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
164 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
165 INITIAL = "button" |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
166 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
167 def interact_without(self): |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
168 welder_slot = self.scene.things["machine.welder.slot"] |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
169 contents = welder_slot.get_data("contents") |
329 | 170 if not contents: |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
171 return Result("The laser welder doesn't currently contain" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
172 " anything weldable.") |
329 | 173 elif len(contents) == 1: |
174 if "can" in contents: | |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
175 return Result("The laser welder needs something to weld the" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
176 " can to.") |
329 | 177 elif "tube" in contents: |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
178 return Result("The laser welder needs something to weld the" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
179 " tube fragments to.") |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
180 else: |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
181 welder_slot.set_data("contents", set()) |
759
386475464202
Inspect game state for Thing.set_interact() instead of setting it manually everywhere.
Jeremy Thurgood <firxen@gmail.com>
parents:
753
diff
changeset
|
182 welder_slot.set_interact() |
750
ef4bda7d623d
Better state and inventory management.
Jeremy Thurgood <firxen@gmail.com>
parents:
731
diff
changeset
|
183 if self.game.is_in_inventory("cryo_pipes_one"): |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
184 self.game.replace_inventory_item("cryo_pipes_one", |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
185 "cryo_pipes_two") |
459 | 186 return Result("With high-precision spitzensparken, you weld" |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
187 " together a second pipe. You bundle the two" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
188 " pipes together.", |
459 | 189 soundfile='laser.ogg') |
750
ef4bda7d623d
Better state and inventory management.
Jeremy Thurgood <firxen@gmail.com>
parents:
731
diff
changeset
|
190 elif self.game.is_in_inventory("cryo_pipes_two"): |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
191 self.game.replace_inventory_item("cryo_pipes_two", |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
192 "cryo_pipes_three") |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
193 return Result("With high-precision spitzensparken, you create" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
194 " yet another pipe. You store it with the other" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
195 " two.", |
459 | 196 soundfile='laser.ogg') |
750
ef4bda7d623d
Better state and inventory management.
Jeremy Thurgood <firxen@gmail.com>
parents:
731
diff
changeset
|
197 elif self.game.is_in_inventory("cryo_pipes_three"): |
329 | 198 # just for safety |
459 | 199 return None |
329 | 200 else: |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
201 self.game.add_inventory_item("cryo_pipes_one") |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
202 return Result("With high-precision spitzensparken, the can and" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
203 " tube are welded into a whole greater than the" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
204 " sum of the parts.", |
329 | 205 soundfile='laser.ogg') |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
206 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
207 |
281
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
208 class LaserWelderPowerLights(Thing): |
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
209 |
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
210 NAME = "machine.welder.lights" |
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
211 |
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
212 INTERACTS = { |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
213 "lights": InteractAnimated(199, 273, ["power_lights_%d.png" % i for i |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
214 in range(8) + range(6, 0, -1)], |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
215 10), |
281
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
216 } |
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
217 |
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
218 INITIAL = 'lights' |
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
219 |
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
220 def get_description(self): |
372
3aee5895c2c6
remove random out of 1 choice
Neil Muller <neil@dip.sun.ac.za>
parents:
333
diff
changeset
|
221 return "The power lights pulse expectantly." |
281
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
222 |
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
223 |
329 | 224 class CryoPipesOne(Item): |
225 "A single cryo pipe (made from a tube fragment and can)." | |
226 | |
227 INVENTORY_IMAGE = "cryo_pipes_one.png" | |
228 CURSOR = CursorSprite('cryo_pipes_one_cursor.png') | |
229 TOOL_NAME = "cryo_pipes_one" | |
230 | |
231 | |
232 class CryoPipesTwo(Item): | |
233 "Two cryo pipes (each made from a tube fragment and can)." | |
226 | 234 |
329 | 235 INVENTORY_IMAGE = "cryo_pipes_two.png" |
236 CURSOR = CursorSprite('cryo_pipes_two_cursor.png') | |
237 TOOL_NAME = "cryo_pipes_two" | |
238 | |
239 | |
240 class CryoPipesThree(Item): | |
241 "Three cryo pipes (each made from a tube fragment and can)." | |
242 | |
243 INVENTORY_IMAGE = "cryo_pipes_three.png" | |
244 CURSOR = CursorSprite('cryo_pipes_three_cursor.png') | |
245 TOOL_NAME = "cryo_pipes_three" | |
226 | 246 |
247 | |
194 | 248 class Grinder(Thing): |
249 | |
250 NAME = "machine.grinder" | |
251 | |
252 INTERACTS = { | |
281
eb3cfcaff469
Too long since last commit. Felt like showing off some machine room progress.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
263
diff
changeset
|
253 "grind": InteractNoImage(86, 402, 94, 63), |
194 | 254 } |
255 | |
256 INITIAL = "grind" | |
257 | |
258 def interact_without(self): | |
539
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
259 return Result("It looks like it eats fingers. Perhaps a different" |
11530992924a
PEP8 clean-up for engine, machine and mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
528
diff
changeset
|
260 " approach is in order?") |
194 | 261 |
262 def interact_with_titanium_leg(self, item): | |
603
3ce19d33b51f
Rename state to game to not cause confusion with the other state
Neil Muller <neil@dip.sun.ac.za>
parents:
592
diff
changeset
|
263 self.game.replace_inventory_item(item.name, 'machete') |
194 | 264 return Result("After much delicate grinding and a few close calls with" |
265 " various body parts, the titanium femur now resembles" | |
206
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
194
diff
changeset
|
266 " a machete more than a bone. Nice and sharp, too.", |
6a52752f4920
some more interacations. Add sound to grinder
Neil Muller <neil@dip.sun.ac.za>
parents:
194
diff
changeset
|
267 soundfile="grinder.ogg") |
194 | 268 |
269 def get_description(self): | |
270 return "A pretty ordinary, albeit rather industrial, grinding machine." | |
271 | |
272 | |
273 class TitaniumMachete(Item): | |
274 "Titanium machete, formerly a leg." | |
275 | |
307
5031b84fbb4c
Hook up new machete, can_opener, and titanium_femur images
Stefano Rivera <stefano@rivera.za.net>
parents:
306
diff
changeset
|
276 INVENTORY_IMAGE = "machete.png" |
5031b84fbb4c
Hook up new machete, can_opener, and titanium_femur images
Stefano Rivera <stefano@rivera.za.net>
parents:
306
diff
changeset
|
277 CURSOR = CursorSprite('machete_cursor.png', 23, 1) |
194 | 278 |
279 | |
764
a8510f4e2ea1
Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents:
759
diff
changeset
|
280 class ManualThing(TakeableThing): |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
281 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
282 NAME = "machine.manual" |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
283 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
284 INTERACTS = { |
333 | 285 "manual": InteractImage(432, 493, "manual_on_floor.png"), |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
286 } |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
287 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
288 INITIAL = "manual" |
764
a8510f4e2ea1
Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents:
759
diff
changeset
|
289 ITEM = 'manual' |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
290 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
291 def interact_without(self): |
764
a8510f4e2ea1
Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents:
759
diff
changeset
|
292 self.take() |
333 | 293 return Result("Ah! The ship's instruction manual. You'd feel better" |
294 " if the previous owner wasn't lying next to it with a" | |
295 " gaping hole in his rib cage.") | |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
296 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
297 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
298 class Manual(Item): |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
299 "A ship instruction manual." |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
300 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
301 INVENTORY_IMAGE = "manual.png" |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
372
diff
changeset
|
302 CURSOR = None |
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
372
diff
changeset
|
303 |
519
8f3c82c685a4
Fix is_interactive() by adding tool param.
Jeremy Thurgood <firxen@gmail.com>
parents:
513
diff
changeset
|
304 def is_interactive(self, tool=None): |
513
0e8487038834
fixed crash caused by the manual item's special snowflakeness
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
512
diff
changeset
|
305 return True |
0e8487038834
fixed crash caused by the manual item's special snowflakeness
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
512
diff
changeset
|
306 |
512 | 307 def interact_without(self): |
384
56a05ae56574
Initial manual implementation.
Jeremy Thurgood <firxen@gmail.com>
parents:
372
diff
changeset
|
308 return Result(detail_view='manual_detail') |
317
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
309 |
3d1a5c0c362a
Split laser welder slot and on button. Add manual thing. Add descriptions for drill press and block.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
307
diff
changeset
|
310 |
47
8f1fccb8cadf
Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff
changeset
|
311 SCENES = [Machine] |