annotate gamelib/scenes/cryo.py @ 147:a039d3b81b3d

Deselect tools and get to the Mess.
author Jeremy Thurgood <firxen@gmail.com>
date Tue, 24 Aug 2010 23:16:23 +0200
parents 29ba5456e8b3
children d6b293d46d23
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
39
088a101f5b94 Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 35
diff changeset
1 """Cryo room where the prisoner starts out."""
088a101f5b94 Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 35
diff changeset
2
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
3 import random
141
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
4 from albow.music import change_playlist, get_music, PlayList
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
5
135
b43599b7f8a2 Cursor highlights
Stefano Rivera <stefano@rivera.za.net>
parents: 134
diff changeset
6 from gamelib import speech
141
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
7 from gamelib.sound import get_sound
135
b43599b7f8a2 Cursor highlights
Stefano Rivera <stefano@rivera.za.net>
parents: 134
diff changeset
8 from gamelib.cursor import CursorSprite
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
9 from gamelib.state import Scene, Item, Thing, Result, \
105
65976205fc2d Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents: 103
diff changeset
10 InteractImage, InteractNoImage, InteractRectUnion, \
65976205fc2d Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents: 103
diff changeset
11 InteractAnimated
39
088a101f5b94 Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 35
diff changeset
12
28
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
13
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
14 class Cryo(Scene):
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
15
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
16 FOLDER = "cryo"
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
17 BACKGROUND = "cryo_room.png"
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
18
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
19 INITIAL_DATA = {
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
20 'accessible': True,
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
21 'greet' : True
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
22 }
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
23
141
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
24 # sounds that will be played randomly as background noise
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
25 MUSIC = [
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
26 'drip1.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
27 'drip2.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
28 'creaking.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
29 'silent.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
30 'silent.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
31 ]
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
32
28
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
33 def __init__(self, state):
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
34 super(Cryo, self).__init__(state)
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
35 self.add_item(TitaniumLeg("titanium_leg"))
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
36 self.add_thing(CryoUnitAlpha())
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
37 self.add_thing(CryoRoomDoor())
89
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
38 self.add_thing(CryoComputer())
35
ebc76bc0c067 First item!
Simon Cross <hodgestar+bzr@gmail.com>
parents: 28
diff changeset
39
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
40 def enter(self):
141
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
41 # Setup music
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
42 pieces = [get_music(x, prefix='sounds') for x in self.MUSIC]
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
43 background_playlist = PlayList(pieces, random=True, repeat=True)
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
44 change_playlist(background_playlist)
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
45 if self.get_data('greet'):
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
46 self.set_data('greet', False)
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
47 return Result("Greetings Prisoner id. You have woken early under"
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
48 " the terms of the emergency conscription act to help with"
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
49 " repairs to the ship. Your behaviour during this time will"
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
50 " be added to your record and will be relayed to "
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
51 " prison officials when we reach the destination."
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
52 " Please report to the bridge.")
35
ebc76bc0c067 First item!
Simon Cross <hodgestar+bzr@gmail.com>
parents: 28
diff changeset
53
141
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
54 def leave(self):
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
55 # Stop music
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
56 change_playlist(None)
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
57
35
ebc76bc0c067 First item!
Simon Cross <hodgestar+bzr@gmail.com>
parents: 28
diff changeset
58
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
59 class TitaniumLeg(Item):
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
60 "Titanium leg, found on a piratical corpse."
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
61
91
542ede2896bb Link in femur inventory image.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 89
diff changeset
62 INVENTORY_IMAGE = "titanium_femur.png"
135
b43599b7f8a2 Cursor highlights
Stefano Rivera <stefano@rivera.za.net>
parents: 134
diff changeset
63 CURSOR = CursorSprite('titanium_femur_cursor.png', 47, 3)
28
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
64
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
65
39
088a101f5b94 Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 35
diff changeset
66 class CryoUnitAlpha(Thing):
67
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
67 "Cryo unit containing titanium leg."
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
68
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
69 NAME = "cryo.unit.1"
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
70
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
71 INTERACTS = {
133
0530547a131f Better map handling, detail_view stuff in Result.
Jeremy Thurgood <firxen@gmail.com>
parents: 131
diff changeset
72 "unit": InteractRectUnion((
0530547a131f Better map handling, detail_view stuff in Result.
Jeremy Thurgood <firxen@gmail.com>
parents: 131
diff changeset
73 (520, 430, 80, 50),
0530547a131f Better map handling, detail_view stuff in Result.
Jeremy Thurgood <firxen@gmail.com>
parents: 131
diff changeset
74 (550, 470, 90, 60),
0530547a131f Better map handling, detail_view stuff in Result.
Jeremy Thurgood <firxen@gmail.com>
parents: 131
diff changeset
75 (600, 510, 60, 40),
0530547a131f Better map handling, detail_view stuff in Result.
Jeremy Thurgood <firxen@gmail.com>
parents: 131
diff changeset
76 ))
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
77 }
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
78
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
79 INITIAL = "unit"
67
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
80
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
81 INITIAL_DATA = {
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
82 'contains_titanium_leg': True,
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
83 }
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
84
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
85 def interact_without(self):
134
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
86 return Result(detail_view='cryo_detail')
39
088a101f5b94 Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 35
diff changeset
87
94
ce23fad8ecb3 More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents: 91
diff changeset
88 def get_description(self):
ce23fad8ecb3 More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents: 91
diff changeset
89 if self.get_data('contains_titanium_leg'):
ce23fad8ecb3 More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents: 91
diff changeset
90 return "A broken cryo chamber, with an poor unfortunate corpse inside"
ce23fad8ecb3 More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents: 91
diff changeset
91 return "A broken cryo chamber. The corpse inside is missing a leg"
ce23fad8ecb3 More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents: 91
diff changeset
92
39
088a101f5b94 Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 35
diff changeset
93
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
94 class CryoRoomDoor(Thing):
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
95 "Door to the cryo room."
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
96
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
97 NAME = "cryo.door"
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
98
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
99 INTERACTS = {
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
100 "shut": InteractNoImage(290, 260, 99, 152),
87
4c6fea1b242b Fix interact positions.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 86
diff changeset
101 "ajar": InteractImage(290, 260, "door_ajar.png"),
4c6fea1b242b Fix interact positions.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 86
diff changeset
102 "open": InteractImage(290, 260, "door_open.png"),
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
103 }
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
104
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
105 INITIAL = "shut"
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
106
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
107 INITIAL_DATA = {
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
108 'door': "shut",
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
109 }
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
110
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
111 def interact_with_titanium_leg(self, item):
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
112 if self.get_data('door') == "ajar":
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
113 self.open_door()
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
114 return Result("You wedge the titanium femur into the chain and twist. With a satisfying *snap*, the chain breaks and the door opens.")
118
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
115 elif self.get_data('door') == "shut":
109
66898d810247 Add hackish speech support (run regen-speech.py to generate files -- needs espeak and oggenc).
Simon Cross <simon@simonx>
parents: 105
diff changeset
116 text = "You bang on the door with the titanium femur. It makes a clanging sound."
66898d810247 Add hackish speech support (run regen-speech.py to generate files -- needs espeak and oggenc).
Simon Cross <simon@simonx>
parents: 105
diff changeset
117 speech.say(self.name, text)
141
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
118 return Result(text, soundfile='clang.ogg')
118
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
119 else:
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
120 return Result("You wave the femur in the doorway. Nothing happens.")
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
121
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
122 def interact_without(self):
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
123 if self.get_data('door') == "shut":
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
124 self.half_open_door()
118
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
125 if self.get_data('door') != "open":
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
126 return Result("It moves slightly and then stops. A chain on the other side is preventing it from opening completely.")
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
127 else:
131
97c5ff0a05bb Hook up map.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 129
diff changeset
128 self.state.set_current_scene('map')
144
29ba5456e8b3 Removed a bunch of cruft.
Jeremy Thurgood <firxen@gmail.com>
parents: 141
diff changeset
129 return None
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
130
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
131 def interact_default(self, item):
78
6bfebfbce42e Partial message support
Neil Muller <neil@dip.sun.ac.za>
parents: 67
diff changeset
132 return Result(random.choice([
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
133 "Sadly, this isn't that sort of game.",
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
134 "Your valiant efforts are foiled by the Evil Game Designer.",
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
135 "The door resists. Try something else, perhaps?",
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
136 ]))
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
137
56
75bf3d3689e9 Refactor thing interactivity and add "fake" bridge scene.
Jeremy Thurgood <firxen@gmail.com>
parents: 55
diff changeset
138 def is_interactive(self):
118
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
139 return True
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
140
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
141 def half_open_door(self):
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
142 self.set_data('door', "ajar")
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
143 self.set_interact("ajar")
56
75bf3d3689e9 Refactor thing interactivity and add "fake" bridge scene.
Jeremy Thurgood <firxen@gmail.com>
parents: 55
diff changeset
144
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
145 def open_door(self):
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
146 self.set_data('door', "open")
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
147 self.set_interact("open")
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
148 self.state.scenes['bridge'].set_data('accessible', True)
147
a039d3b81b3d Deselect tools and get to the Mess.
Jeremy Thurgood <firxen@gmail.com>
parents: 144
diff changeset
149 self.state.scenes['mess'].set_data('accessible', True)
67
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
150 self.state.remove_inventory_item('titanium_leg')
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
151
63
3087be3463e0 Some framework support for better message handling
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
152 def get_description(self):
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
153 if self.get_data('door') == "open":
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
154 return 'An open doorway leads to the rest of the ship.'
103
0f799b6f40bc Fix ajar door description
Neil Muller <neil@dip.sun.ac.za>
parents: 95
diff changeset
155 elif self.get_data('door') == "ajar":
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
156 return "A rusty door. It can't open all the way because of a chain on the other side."
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
157 return 'A rusty door. It is currently closed.'
63
3087be3463e0 Some framework support for better message handling
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
158
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
159
89
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
160 class CryoComputer(Thing):
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
161 "Computer in the cryo room."
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
162
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
163 NAME = "cryo.computer"
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
164
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
165 INTERACTS = {
105
65976205fc2d Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents: 103
diff changeset
166 "info": InteractAnimated(416, 290, ["comp_info.png", "comp_warn.png"],
65976205fc2d Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents: 103
diff changeset
167 10),
89
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
168 "warn": InteractImage(416, 290, "comp_warn.png"),
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
169 "error": InteractImage(416, 290, "comp_error.png"),
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
170 }
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
171
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
172 INITIAL = "info"
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
173
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
174
125
d3ca34a664fd Some detail view and data cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 120
diff changeset
175 class TitaniumLegThing(Thing):
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
176 "Triangle in the cryo room."
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
177
125
d3ca34a664fd Some detail view and data cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 120
diff changeset
178 NAME = "cryo.titanium_leg"
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
179
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
180 INTERACTS = {
134
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
181 "leg": InteractImage(50, 50, "triangle.png"),
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
182 }
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
183
134
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
184 INITIAL = "leg"
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
185
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
186 def interact_without(self):
134
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
187 self.state.add_inventory_item('titanium_leg')
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
188 self.state.current_scene.things['cryo.unit.1'].set_data('contains_titanium_leg', False)
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
189 self.scene.remove_thing(self)
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
190 return Result("The skeletal occupant of this cryo unit has an artificial femur made of titanium. You take it.")
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
191
136
d264850806dc Better description handling in detail windows. (Sort of.)
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
192 def get_description(self):
d264850806dc Better description handling in detail windows. (Sort of.)
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
193 return "This femur looks synthetic."
d264850806dc Better description handling in detail windows. (Sort of.)
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
194
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
195
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
196 class CryoUnitWithCorpse(Scene):
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
197
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
198 FOLDER = "cryo"
127
9646e7c8bb97 Size detail window based on the Scene background image.
Jeremy Thurgood <firxen@gmail.com>
parents: 125
diff changeset
199 BACKGROUND = "cryo_unit_detail.png"
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
200 NAME = "cryo_detail"
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
201
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
202 SIZE = (300, 300)
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
203
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
204 def __init__(self, state):
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
205 super(CryoUnitWithCorpse, self).__init__(state)
125
d3ca34a664fd Some detail view and data cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 120
diff changeset
206 self.add_thing(TitaniumLegThing())
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
207
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
208
28
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
209 SCENES = [Cryo]
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
210 DETAIL_VIEWS = [CryoUnitWithCorpse]