annotate gamelib/scenes/mess.py @ 192:b1f4262139e7

Only vend three cans.
author Jeremy Thurgood <firxen@gmail.com>
date Wed, 25 Aug 2010 21:42:01 +0200
parents 278774b31d3c
children 6a52752f4920
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
1 """Mess where crew eat. Fun stuff."""
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
2
175
3d3efc5648cc Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents: 170
diff changeset
3 from random import choice
3d3efc5648cc Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents: 170
diff changeset
4
191
278774b31d3c CloneableItems.
Jeremy Thurgood <firxen@gmail.com>
parents: 175
diff changeset
5 from gamelib.state import Scene, Item, CloneableItem, Thing, InteractImage, InteractNoImage, Result
145
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
6 from gamelib.cursor import CursorSprite
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
7
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
8
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
9 class Mess(Scene):
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
10
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
11 FOLDER = "mess"
140
95d882eeba12 Link up mess hall background.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 55
diff changeset
12 BACKGROUND = "mess_hall.png"
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
13
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
14 INITIAL_DATA = {
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
15 'accessible': True,
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
16 }
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
17
143
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
18 def __init__(self, state):
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
19 super(Mess, self).__init__(state)
145
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
20 self.add_item(TubeFragments("tube_fragments"))
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
21 self.add_item(ReplacementTubes("replacement_tubes"))
143
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
22 self.add_thing(CansOnShelf())
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
23 self.add_thing(Tubes())
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
24 self.add_thing(ToMap())
143
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
25
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
26
191
278774b31d3c CloneableItems.
Jeremy Thurgood <firxen@gmail.com>
parents: 175
diff changeset
27 class EmptyCan(CloneableItem):
145
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
28 "After emptying the full can."
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
29
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
30 INVENTORY_IMAGE = "empty_can.png"
168
de249f7867fc Set cursor points
Stefano Rivera <stefano@rivera.za.net>
parents: 167
diff changeset
31 CURSOR = CursorSprite('empty_can_cursor.png', 20, 30)
145
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
32
191
278774b31d3c CloneableItems.
Jeremy Thurgood <firxen@gmail.com>
parents: 175
diff changeset
33
278774b31d3c CloneableItems.
Jeremy Thurgood <firxen@gmail.com>
parents: 175
diff changeset
34 class FullCan(CloneableItem):
145
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
35 "Found on the shelf."
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
36
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
37 INVENTORY_IMAGE = "full_can.png"
168
de249f7867fc Set cursor points
Stefano Rivera <stefano@rivera.za.net>
parents: 167
diff changeset
38 CURSOR = CursorSprite('full_can_cursor.png', 20, 30)
145
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
39
191
278774b31d3c CloneableItems.
Jeremy Thurgood <firxen@gmail.com>
parents: 175
diff changeset
40 def interact_with_titanium_leg(self, item, state):
170
179913efac85 Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents: 168
diff changeset
41 dented = DentedCan("dented_can")
191
278774b31d3c CloneableItems.
Jeremy Thurgood <firxen@gmail.com>
parents: 175
diff changeset
42 state.add_item(dented)
170
179913efac85 Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents: 168
diff changeset
43 state.replace_inventory_item(self, dented)
167
5845a3ed4dad Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents: 151
diff changeset
44 return Result("You club the can with the femur. The can gets dented, but doesn't open.")
5845a3ed4dad Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents: 151
diff changeset
45
5845a3ed4dad Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents: 151
diff changeset
46
191
278774b31d3c CloneableItems.
Jeremy Thurgood <firxen@gmail.com>
parents: 175
diff changeset
47 class DentedCan(CloneableItem):
167
5845a3ed4dad Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents: 151
diff changeset
48 "A can banged on with the femur"
5845a3ed4dad Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents: 151
diff changeset
49
170
179913efac85 Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents: 168
diff changeset
50 INVENTORY_IMAGE = "dented_can.png"
179913efac85 Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents: 168
diff changeset
51 CURSOR = CursorSprite('dented_can_cursor.png', 20, 30)
179913efac85 Add dented can image to item
Neil Muller <neil@dip.sun.ac.za>
parents: 168
diff changeset
52
191
278774b31d3c CloneableItems.
Jeremy Thurgood <firxen@gmail.com>
parents: 175
diff changeset
53 def interact_with_titanium_leg(self, item, state):
167
5845a3ed4dad Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents: 151
diff changeset
54 return Result("You club the can with the femur. The dents shift around, but it still doesn't open.")
5845a3ed4dad Inventory interaction can (surprisingly) affect the inventory
Neil Muller <neil@dip.sun.ac.za>
parents: 151
diff changeset
55
145
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
56
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
57 class TubeFragments(Item):
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
58 "Old tubes that need repair."
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
59
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
60 INVENTORY_IMAGE = "tube_fragments.png"
168
de249f7867fc Set cursor points
Stefano Rivera <stefano@rivera.za.net>
parents: 167
diff changeset
61 CURSOR = CursorSprite('tube_fragments_cursor.png', 3, 60)
145
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
62
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
63
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
64 class ReplacementTubes(Item):
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
65 "Repaired tubes."
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
66
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
67 INVENTORY_IMAGE = "replacement_tubes.png"
168
de249f7867fc Set cursor points
Stefano Rivera <stefano@rivera.za.net>
parents: 167
diff changeset
68 CURSOR = CursorSprite('replacement_tubes.png', 53, 46)
145
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
69
ce419fb7ab8a Add items to mess.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 143
diff changeset
70
143
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
71 class CansOnShelf(Thing):
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
72
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
73 NAME = "mess.cans"
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
74
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
75 INTERACTS = {
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
76 "cans": InteractImage(165, 209, "cans_on_shelf.png"),
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
77 "nocans": InteractNoImage(165, 209, 50, 50),
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
78 }
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
79
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
80 INITIAL = "cans"
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
81
146
1be149cc42db Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 145
diff changeset
82 INITIAL_DATA = {
192
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
83 'cans_vended': 0,
146
1be149cc42db Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 145
diff changeset
84 }
1be149cc42db Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 145
diff changeset
85
1be149cc42db Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 145
diff changeset
86 def interact_without(self):
192
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
87 starting_cans = self.get_data('cans_vended')
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
88 if starting_cans < 3:
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
89 can = FullCan("full_can")
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
90 self.state.add_item(can)
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
91 self.state.add_inventory_item(can.name)
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
92 self.set_data('cans_vended', starting_cans + 1)
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
93 return Result({
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
94 0: "Best before along time in the past. Better not eat these.",
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
95 1: "Mmmm. Nutritious Bacteria Stew.",
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
96 2: "Candied silkworms. Who stocked this place!?",
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
97 }[starting_cans])
175
3d3efc5648cc Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents: 170
diff changeset
98 else:
192
b1f4262139e7 Only vend three cans.
Jeremy Thurgood <firxen@gmail.com>
parents: 191
diff changeset
99 return Result("The rest of the cans are rusted beyond usefulness.")
146
1be149cc42db Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 145
diff changeset
100
1be149cc42db Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 145
diff changeset
101 def get_description(self):
175
3d3efc5648cc Allow multiple cans to be picked up
Stefano Rivera <stefano@rivera.za.net>
parents: 170
diff changeset
102 return "The contents of these cans looks synthetic."
146
1be149cc42db Allow can to be picked up.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 145
diff changeset
103
143
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
104
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
105 class Tubes(Thing):
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
106
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
107 NAME = "mess.tubes"
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
108
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
109 INTERACTS = {
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
110 "blocked": InteractImage(250, 130, "blocking_broccoli.png"),
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
111 "broken": InteractImage(250, 183, "broken_tubes.png"),
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
112 "fixed": InteractImage(252, 183, "fixed_tubes.png"),
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
113 }
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
114
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
115 INITIAL = "blocked"
d15270c2898c Hook up brocolli and cans. Rotate brocolli to correct orientation.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 140
diff changeset
116
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
117
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
118 class ToMap(Thing):
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
119 "Way to map."
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
120
151
d00aa26941c4 Add machine and engine rooms to map. Fix typo in name of mess hall doorway thing.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 150
diff changeset
121 NAME = "mess.tomap"
150
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
122 DEST = "map"
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
123
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
124 INTERACTS = {
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
125 "door": InteractNoImage(20, 390, 85, 150),
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
126 }
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
127
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
128 INITIAL = "door"
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
129
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
130 def interact_without(self):
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
131 """Go to map."""
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
132 self.state.set_current_scene("map")
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
133
5e5d71e40e54 Add bridge and mess to map and ways back.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 146
diff changeset
134
47
8f1fccb8cadf Skeletons for scenes in plot outline.
Simon Cross <simon@simonx>
parents:
diff changeset
135 SCENES = [Mess]