Mercurial > boomslang
annotate gamelib/scenes/cryo.py @ 164:b317cdd638c2
Note some TODOs before I forget them.
author | Simon Cross <simon@simonx> |
---|---|
date | Wed, 25 Aug 2010 10:59:09 +0200 |
parents | 153dcb313057 |
children | 0db92b3b5833 |
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 | 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 | 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 | 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 | 61 |
120 | 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 | 67 if self.get_data('greet'): |
68 self.set_data('greet', False) | |
69 return Result("Greetings Prisoner id. You have woken early under" | |
70 " the terms of the emergency conscription act to help with" | |
71 " repairs to the ship. Your behaviour during this time will" | |
72 " be added to your record and will be relayed to " | |
73 " prison officials when we reach the destination." | |
74 " Please report to the bridge.") | |
35 | 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 | 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 | 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 |
0f25f7b9b37a
Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
87 |
39
088a101f5b94
Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
35
diff
changeset
|
88 class CryoUnitAlpha(Thing): |
67
6b0f7364f3bf
Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents:
63
diff
changeset
|
89 "Cryo unit containing titanium leg." |
6b0f7364f3bf
Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents:
63
diff
changeset
|
90 |
86
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
91 NAME = "cryo.unit.1" |
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
92 |
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
93 INTERACTS = { |
133
0530547a131f
Better map handling, detail_view stuff in Result.
Jeremy Thurgood <firxen@gmail.com>
parents:
131
diff
changeset
|
94 "unit": InteractRectUnion(( |
157
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
95 (530, 430, 80, 50), |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
96 (560, 470, 70, 50), |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
97 (600, 510, 70, 40), |
133
0530547a131f
Better map handling, detail_view stuff in Result.
Jeremy Thurgood <firxen@gmail.com>
parents:
131
diff
changeset
|
98 )) |
86
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
99 } |
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
100 |
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
101 INITIAL = "unit" |
67
6b0f7364f3bf
Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents:
63
diff
changeset
|
102 |
6b0f7364f3bf
Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents:
63
diff
changeset
|
103 INITIAL_DATA = { |
6b0f7364f3bf
Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents:
63
diff
changeset
|
104 'contains_titanium_leg': True, |
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 |
6b0f7364f3bf
Inventory-related game state.
Jeremy Thurgood <firxen@gmail.com>
parents:
63
diff
changeset
|
107 def interact_without(self): |
134
faac82748f5a
Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents:
133
diff
changeset
|
108 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
|
109 |
94
ce23fad8ecb3
More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents:
91
diff
changeset
|
110 def get_description(self): |
ce23fad8ecb3
More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents:
91
diff
changeset
|
111 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
|
112 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
|
113 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
|
114 |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
115 class GenericCryoUnit(Thing): |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
116 "Generic Cryo unit" |
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 INITIAL = 'unit' |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
119 |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
120 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
|
121 super(GenericCryoUnit, self).__init__() |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
122 self.description = description |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
123 self.detailed_description = detailed_description |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
124 self.name = 'cryo.unit.%d' % number |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
125 self.interacts = { |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
126 'unit' : InteractRectUnion(areas) |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
127 } |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
128 if DEBUG: |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
129 # Individual colors to make debugging easier |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
130 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
|
131 |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
132 def interact_without(self): |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
133 return Result(self.detailed_description) |
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 get_description(self): |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
136 return self.description |
94
ce23fad8ecb3
More complex shaped interactables
Neil Muller <neil@dip.sun.ac.za>
parents:
91
diff
changeset
|
137 |
39
088a101f5b94
Add an example Thing to cryo scene.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
35
diff
changeset
|
138 |
41
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
139 class CryoRoomDoor(Thing): |
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
140 "Door to the cryo room." |
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
141 |
86
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
142 NAME = "cryo.door" |
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
143 |
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
144 INTERACTS = { |
95
7590586180f5
door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
94
diff
changeset
|
145 "shut": InteractNoImage(290, 260, 99, 152), |
87
4c6fea1b242b
Fix interact positions.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
86
diff
changeset
|
146 "ajar": InteractImage(290, 260, "door_ajar.png"), |
4c6fea1b242b
Fix interact positions.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
86
diff
changeset
|
147 "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
|
148 } |
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
149 |
95
7590586180f5
door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
94
diff
changeset
|
150 INITIAL = "shut" |
41
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
151 |
55
2e2f6ff54780
Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents:
41
diff
changeset
|
152 INITIAL_DATA = { |
95
7590586180f5
door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
94
diff
changeset
|
153 'door': "shut", |
55
2e2f6ff54780
Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents:
41
diff
changeset
|
154 } |
2e2f6ff54780
Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents:
41
diff
changeset
|
155 |
41
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
156 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
|
157 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
|
158 self.open_door() |
7590586180f5
door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
94
diff
changeset
|
159 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
|
160 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
|
161 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
|
162 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
|
163 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
|
164 else: |
e548f4a13741
Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents:
109
diff
changeset
|
165 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
|
166 |
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
167 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
|
168 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
|
169 self.half_open_door() |
118
e548f4a13741
Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents:
109
diff
changeset
|
170 if self.get_data('door') != "open": |
e548f4a13741
Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents:
109
diff
changeset
|
171 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
|
172 else: |
131 | 173 self.state.set_current_scene('map') |
144
29ba5456e8b3
Removed a bunch of cruft.
Jeremy Thurgood <firxen@gmail.com>
parents:
141
diff
changeset
|
174 return None |
41
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
175 |
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
176 def interact_default(self, item): |
78 | 177 return Result(random.choice([ |
41
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
178 "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
|
179 "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
|
180 "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
|
181 ])) |
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
182 |
56
75bf3d3689e9
Refactor thing interactivity and add "fake" bridge scene.
Jeremy Thurgood <firxen@gmail.com>
parents:
55
diff
changeset
|
183 def is_interactive(self): |
118
e548f4a13741
Add a transition, on general principles
Neil Muller <neil@dip.sun.ac.za>
parents:
109
diff
changeset
|
184 return True |
95
7590586180f5
door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
94
diff
changeset
|
185 |
7590586180f5
door goes from shut to ajar to open
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
94
diff
changeset
|
186 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
|
187 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
|
188 self.set_interact("ajar") |
56
75bf3d3689e9
Refactor thing interactivity and add "fake" bridge scene.
Jeremy Thurgood <firxen@gmail.com>
parents:
55
diff
changeset
|
189 |
55
2e2f6ff54780
Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents:
41
diff
changeset
|
190 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
|
191 self.set_data('door', "open") |
86
593bddfacf18
Refactor Things a bit to render images.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
78
diff
changeset
|
192 self.set_interact("open") |
55
2e2f6ff54780
Part of the cryo door puzzle.
Jeremy Thurgood <firxen@gmail.com>
parents:
41
diff
changeset
|
193 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
|
194 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
|
195 |
63
3087be3463e0
Some framework support for better message handling
Neil Muller <neil@dip.sun.ac.za>
parents:
56
diff
changeset
|
196 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
|
197 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
|
198 return 'An open doorway leads to the rest of the ship.' |
103 | 199 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
|
200 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
|
201 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
|
202 |
41
ad6f56bfa8b7
Cryo door, titanium leg and some interaction prototypes.
Jeremy Thurgood <firxen@gmail.com>
parents:
39
diff
changeset
|
203 |
89
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
204 class CryoComputer(Thing): |
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
205 "Computer in the cryo room." |
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
206 |
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
207 NAME = "cryo.computer" |
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
208 |
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
209 INTERACTS = { |
105
65976205fc2d
Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents:
103
diff
changeset
|
210 "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
|
211 10), |
89
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
212 "warn": InteractImage(416, 290, "comp_warn.png"), |
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
213 "error": InteractImage(416, 290, "comp_error.png"), |
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
214 } |
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
215 |
4625efe69c37
Hook up cryo computer.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
87
diff
changeset
|
216 INITIAL = "info" |
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 |
125
d3ca34a664fd
Some detail view and data cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
219 class TitaniumLegThing(Thing): |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
220 "Triangle in the cryo room." |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
221 |
125
d3ca34a664fd
Some detail view and data cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
222 NAME = "cryo.titanium_leg" |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
223 |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
224 INTERACTS = { |
134
faac82748f5a
Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents:
133
diff
changeset
|
225 "leg": InteractImage(50, 50, "triangle.png"), |
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 |
134
faac82748f5a
Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents:
133
diff
changeset
|
228 INITIAL = "leg" |
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 def interact_without(self): |
134
faac82748f5a
Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents:
133
diff
changeset
|
231 self.state.add_inventory_item('titanium_leg') |
faac82748f5a
Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents:
133
diff
changeset
|
232 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
|
233 self.scene.remove_thing(self) |
faac82748f5a
Put the leg inside the cryo unit.
Jeremy Thurgood <firxen@gmail.com>
parents:
133
diff
changeset
|
234 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
|
235 |
136
d264850806dc
Better description handling in detail windows. (Sort of.)
Jeremy Thurgood <firxen@gmail.com>
parents:
135
diff
changeset
|
236 def get_description(self): |
d264850806dc
Better description handling in detail windows. (Sort of.)
Jeremy Thurgood <firxen@gmail.com>
parents:
135
diff
changeset
|
237 return "This femur looks synthetic." |
d264850806dc
Better description handling in detail windows. (Sort of.)
Jeremy Thurgood <firxen@gmail.com>
parents:
135
diff
changeset
|
238 |
157
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
239 class PlaqueThing(Thing): |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
240 "Plaque on the detailed cryo chamber" |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
241 |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
242 NAME = "cryo.plaque" |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
243 |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
244 INTERACTS = { |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
245 "plaque": InteractImage(150, 150, "triangle.png"), |
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 |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
248 INITIAL = "plaque" |
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 def interact_without(self): |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
251 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
|
252 |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
253 def get_description(self): |
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
254 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
|
255 |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
256 |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
257 class CryoUnitWithCorpse(Scene): |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
258 |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
259 FOLDER = "cryo" |
127
9646e7c8bb97
Size detail window based on the Scene background image.
Jeremy Thurgood <firxen@gmail.com>
parents:
125
diff
changeset
|
260 BACKGROUND = "cryo_unit_detail.png" |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
261 NAME = "cryo_detail" |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
262 |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
263 SIZE = (300, 300) |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
264 |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
265 def __init__(self, state): |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
266 super(CryoUnitWithCorpse, self).__init__(state) |
125
d3ca34a664fd
Some detail view and data cleanup.
Jeremy Thurgood <firxen@gmail.com>
parents:
120
diff
changeset
|
267 self.add_thing(TitaniumLegThing()) |
157
153dcb313057
Fill in more cryo room stuff
Neil Muller <neil@dip.sun.ac.za>
parents:
148
diff
changeset
|
268 self.add_thing(PlaqueThing()) |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
269 |
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
270 |
28
0f25f7b9b37a
Add loading of initial state.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff
changeset
|
271 SCENES = [Cryo] |
119
d5f7cccfdb6c
Hook up "detail view" scenes.
Jeremy Thurgood <firxen@gmail.com>
parents:
118
diff
changeset
|
272 DETAIL_VIEWS = [CryoUnitWithCorpse] |