annotate gamelib/scenes/cryo.py @ 166:0db92b3b5833

Add inventory interactions
author Neil Muller <neil@dip.sun.ac.za>
date Wed, 25 Aug 2010 12:03:08 +0200
parents 153dcb313057
children 5845a3ed4dad
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
157
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
5 from pygame.colordict import THECOLORS
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
6 from pygame.color import Color
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
7
135
b43599b7f8a2 Cursor highlights
Stefano Rivera <stefano@rivera.za.net>
parents: 134
diff changeset
8 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
9 from gamelib.sound import get_sound
135
b43599b7f8a2 Cursor highlights
Stefano Rivera <stefano@rivera.za.net>
parents: 134
diff changeset
10 from gamelib.cursor import CursorSprite
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
11 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
12 InteractImage, InteractNoImage, InteractRectUnion, \
65976205fc2d Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents: 103
diff changeset
13 InteractAnimated
157
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
14 from gamelib.constants import DEBUG
39
088a101f5b94 Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 35
diff changeset
15
28
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
16
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
17 class Cryo(Scene):
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
18
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
19 FOLDER = "cryo"
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
20 BACKGROUND = "cryo_room.png"
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
21
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
22 INITIAL_DATA = {
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
23 'accessible': True,
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
24 'greet' : True
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
25 }
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
26
141
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
27 # 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
28 MUSIC = [
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
29 'drip1.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
30 'drip2.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
31 'creaking.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
32 'silent.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
33 'silent.ogg',
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
34 ]
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
35
28
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
36 def __init__(self, state):
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
37 super(Cryo, self).__init__(state)
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
38 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
39 self.add_thing(CryoUnitAlpha())
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
40 self.add_thing(CryoRoomDoor())
89
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
41 self.add_thing(CryoComputer())
157
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
42 self.add_thing(GenericCryoUnit(2,
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
43 "An empty cryo chamber.",
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
44 "Prisoner 81e4-c8900480e635. Embezzlement. 10 years.",
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
45 ((155, 430, 50, 35), (125, 450, 60, 35), (95, 470, 60, 35),
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
46 (55, 490, 60, 55))))
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
47 self.add_thing(GenericCryoUnit(3,
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
48 "A working cryo chamber. The frosted glass obscures the details of the occupant.",
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
49 "Prisoner 9334-ce1eb0243bab. Murder. 40 years.",
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
50 ((215, 430, 50, 35), (205, 450, 50, 35), (185, 470, 50, 35),
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
51 (125, 505, 80, 40))))
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
52 self.add_thing(GenericCryoUnit(4,
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
53 "A broken cryo chamber. The skeleton inside has been picked clean.",
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
54 "Prisoner bfbc-8bf4c6b7492b. Importing illegal alien biomatter. 15 years.",
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
55 ((275, 430, 50, 70), (255, 460, 50, 70), (235, 490, 50, 60))))
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
56 self.add_thing(GenericCryoUnit(5,
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
57 "A working cryo chamber. The frosted glass obscures the details of the occupant.",
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
58 "Prisoner b520-99495b8c41ce. Copyright infringment. 60 years.",
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
59 ((340, 430, 50, 70), (330, 500, 60, 50))))
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
60
35
ebc76bc0c067 First item!
Simon Cross <hodgestar+bzr@gmail.com>
parents: 28
diff changeset
61
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
62 def enter(self):
141
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
63 # Setup music
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
64 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
65 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
66 change_playlist(background_playlist)
120
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
67 if self.get_data('greet'):
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
68 self.set_data('greet', False)
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
69 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
70 " 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
71 " 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
72 " 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
73 " prison officials when we reach the destination."
48d24a48d0ce Enter and leave hooks
Neil Muller <neil@dip.sun.ac.za>
parents: 119
diff changeset
74 " Please report to the bridge.")
35
ebc76bc0c067 First item!
Simon Cross <hodgestar+bzr@gmail.com>
parents: 28
diff changeset
75
141
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
76 def leave(self):
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
77 # Stop music
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
78 change_playlist(None)
4f18e68fd0dc Add a few sounds to the cryo room
Neil Muller <neil@dip.sun.ac.za>
parents: 136
diff changeset
79
35
ebc76bc0c067 First item!
Simon Cross <hodgestar+bzr@gmail.com>
parents: 28
diff changeset
80
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
81 class TitaniumLeg(Item):
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
82 "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
83
91
542ede2896bb Link in femur inventory image.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 89
diff changeset
84 INVENTORY_IMAGE = "titanium_femur.png"
135
b43599b7f8a2 Cursor highlights
Stefano Rivera <stefano@rivera.za.net>
parents: 134
diff changeset
85 CURSOR = CursorSprite('titanium_femur_cursor.png', 47, 3)
28
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
86
166
0db92b3b5833 Add inventory interactions
Neil Muller <neil@dip.sun.ac.za>
parents: 157
diff changeset
87 def interact_with_full_can(self, tool):
0db92b3b5833 Add inventory interactions
Neil Muller <neil@dip.sun.ac.za>
parents: 157
diff changeset
88 return Result("You club the can with the femur. It doesn't help")
0db92b3b5833 Add inventory interactions
Neil Muller <neil@dip.sun.ac.za>
parents: 157
diff changeset
89
28
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
90
39
088a101f5b94 Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 35
diff changeset
91 class CryoUnitAlpha(Thing):
67
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
92 "Cryo unit containing titanium leg."
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
93
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
94 NAME = "cryo.unit.1"
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
95
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
96 INTERACTS = {
133
0530547a131f Better map handling, detail_view stuff in Result.
Jeremy Thurgood <firxen@gmail.com>
parents: 131
diff changeset
97 "unit": InteractRectUnion((
157
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
98 (530, 430, 80, 50),
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
99 (560, 470, 70, 50),
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
100 (600, 510, 70, 40),
133
0530547a131f Better map handling, detail_view stuff in Result.
Jeremy Thurgood <firxen@gmail.com>
parents: 131
diff changeset
101 ))
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
102 }
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 INITIAL = "unit"
67
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
105
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
106 INITIAL_DATA = {
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
107 'contains_titanium_leg': True,
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
108 }
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
109
6b0f7364f3bf Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents: 63
diff changeset
110 def interact_without(self):
134
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
111 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
112
94
ce23fad8ecb3 More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents: 91
diff changeset
113 def get_description(self):
ce23fad8ecb3 More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents: 91
diff changeset
114 if self.get_data('contains_titanium_leg'):
157
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
115 return "A broken cryo chamber, with an poor unfortunate corpse inside."
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
116 return "A broken cryo chamber. The corpse inside is missing a leg."
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
117
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
118 class GenericCryoUnit(Thing):
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
119 "Generic Cryo unit"
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
120
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
121 INITIAL = 'unit'
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
122
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
123 def __init__(self, number, description, detailed_description, areas):
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
124 super(GenericCryoUnit, self).__init__()
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
125 self.description = description
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
126 self.detailed_description = detailed_description
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
127 self.name = 'cryo.unit.%d' % number
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
128 self.interacts = {
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
129 'unit' : InteractRectUnion(areas)
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
130 }
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
131 if DEBUG:
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
132 # Individual colors to make debugging easier
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
133 self._interact_hilight_color = Color(THECOLORS.keys()[number])
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
134
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
135 def interact_without(self):
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
136 return Result(self.detailed_description)
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
137
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
138 def get_description(self):
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
139 return self.description
94
ce23fad8ecb3 More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents: 91
diff changeset
140
39
088a101f5b94 Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 35
diff changeset
141
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
142 class CryoRoomDoor(Thing):
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
143 "Door to the cryo room."
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
144
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
145 NAME = "cryo.door"
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
146
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
147 INTERACTS = {
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
148 "shut": InteractNoImage(290, 260, 99, 152),
87
4c6fea1b242b Fix interact positions.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 86
diff changeset
149 "ajar": InteractImage(290, 260, "door_ajar.png"),
4c6fea1b242b Fix interact positions.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 86
diff changeset
150 "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
151 }
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
152
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
153 INITIAL = "shut"
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
154
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
155 INITIAL_DATA = {
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
156 'door': "shut",
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
157 }
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
158
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
159 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
160 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
161 self.open_door()
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
162 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
163 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
164 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
165 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
166 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
167 else:
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
168 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
169
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
170 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
171 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
172 self.half_open_door()
118
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
173 if self.get_data('door') != "open":
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
174 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
175 else:
131
97c5ff0a05bb Hook up map.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 129
diff changeset
176 self.state.set_current_scene('map')
144
29ba5456e8b3 Removed a bunch of cruft.
Jeremy Thurgood <firxen@gmail.com>
parents: 141
diff changeset
177 return None
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
178
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
179 def interact_default(self, item):
78
6bfebfbce42e Partial message support
Neil Muller <neil@dip.sun.ac.za>
parents: 67
diff changeset
180 return Result(random.choice([
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
181 "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
182 "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
183 "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
184 ]))
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
185
56
75bf3d3689e9 Refactor thing interactivity and add "fake" bridge scene.
Jeremy Thurgood <firxen@gmail.com>
parents: 55
diff changeset
186 def is_interactive(self):
118
e548f4a13741 Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents: 109
diff changeset
187 return True
95
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
188
7590586180f5 door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents: 94
diff changeset
189 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
190 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
191 self.set_interact("ajar")
56
75bf3d3689e9 Refactor thing interactivity and add "fake" bridge scene.
Jeremy Thurgood <firxen@gmail.com>
parents: 55
diff changeset
192
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
193 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
194 self.set_data('door', "open")
86
593bddfacf18 Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 78
diff changeset
195 self.set_interact("open")
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
196 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
197 self.state.scenes['mess'].set_data('accessible', True)
55
2e2f6ff54780 Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents: 41
diff changeset
198
63
3087be3463e0 Some framework support for better message handling
Neil Muller <neil@dip.sun.ac.za>
parents: 56
diff changeset
199 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
200 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
201 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
202 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
203 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
204 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
205
41
ad6f56bfa8b7 Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents: 39
diff changeset
206
89
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
207 class CryoComputer(Thing):
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
208 "Computer in the cryo room."
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
209
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
210 NAME = "cryo.computer"
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
211
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
212 INTERACTS = {
105
65976205fc2d Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents: 103
diff changeset
213 "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
214 10),
89
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
215 "warn": InteractImage(416, 290, "comp_warn.png"),
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
216 "error": InteractImage(416, 290, "comp_error.png"),
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
217 }
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
218
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
219 INITIAL = "info"
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
220
4625efe69c37 Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 87
diff changeset
221
125
d3ca34a664fd Some detail view and data cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 120
diff changeset
222 class TitaniumLegThing(Thing):
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
223 "Triangle in the cryo room."
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
224
125
d3ca34a664fd Some detail view and data cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 120
diff changeset
225 NAME = "cryo.titanium_leg"
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
226
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
227 INTERACTS = {
134
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
228 "leg": InteractImage(50, 50, "triangle.png"),
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
229 }
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
230
134
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
231 INITIAL = "leg"
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
232
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
233 def interact_without(self):
134
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
234 self.state.add_inventory_item('titanium_leg')
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
235 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
236 self.scene.remove_thing(self)
faac82748f5a Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents: 133
diff changeset
237 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
238
136
d264850806dc Better description handling in detail windows. (Sort of.)
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
239 def get_description(self):
d264850806dc Better description handling in detail windows. (Sort of.)
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
240 return "This femur looks synthetic."
d264850806dc Better description handling in detail windows. (Sort of.)
Jeremy Thurgood <firxen@gmail.com>
parents: 135
diff changeset
241
157
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
242 class PlaqueThing(Thing):
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
243 "Plaque on the detailed cryo chamber"
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
244
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
245 NAME = "cryo.plaque"
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
246
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
247 INTERACTS = {
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
248 "plaque": InteractImage(150, 150, "triangle.png"),
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
249 }
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
250
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
251 INITIAL = "plaque"
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
252
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
253 def interact_without(self):
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
254 return Result("The plaque is welded to the unit. You can't shift it")
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
255
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
256 def get_description(self):
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
257 return "'Prisoner 98cc-764e646391ee. War crimes. 45 years."
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
258
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
259
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
260 class CryoUnitWithCorpse(Scene):
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
261
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
262 FOLDER = "cryo"
127
9646e7c8bb97 Size detail window based on the Scene background image.
Jeremy Thurgood <firxen@gmail.com>
parents: 125
diff changeset
263 BACKGROUND = "cryo_unit_detail.png"
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
264 NAME = "cryo_detail"
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
265
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
266 SIZE = (300, 300)
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
267
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
268 def __init__(self, state):
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
269 super(CryoUnitWithCorpse, self).__init__(state)
125
d3ca34a664fd Some detail view and data cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents: 120
diff changeset
270 self.add_thing(TitaniumLegThing())
157
153dcb313057 Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents: 148
diff changeset
271 self.add_thing(PlaqueThing())
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
272
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
273
28
0f25f7b9b37a Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
274 SCENES = [Cryo]
119
d5f7cccfdb6c Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents: 118
diff changeset
275 DETAIL_VIEWS = [CryoUnitWithCorpse]