annotate pyntnclick/scenewidgets.py @ 819:80ff3c9187bc pyntnclick

Rename InteractText to InteractDebugText to better reflect it's aim
author Neil Muller <neil@dip.sun.ac.za>
date Mon, 28 Jan 2013 15:48:31 +0200
parents 8b4a0aad8aeb
children e42d19c2237b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 """Interactive elements within a Scene."""
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
4 from pygame import Rect
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
5 from pygame.color import Color
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6 from pygame.colordict import THECOLORS
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
7 from pygame.surface import Surface
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
8
551
38fb04728ac5 Rearrange import.
Jeremy Thurgood <firxen@gmail.com>
parents: 548
diff changeset
9 from pyntnclick.state import Thing
649
e59b119bb0f9 Evict the last BoomLabel.
Jeremy Thurgood <firxen@gmail.com>
parents: 625
diff changeset
10 from pyntnclick.widgets.text import LabelWidget
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
11
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
12
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
13 class Interact(object):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
14
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
15 def __init__(self, image, rect, interact_rect):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
16 self.image = image
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
17 self.rect = rect
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
18 self.interact_rect = interact_rect
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
19
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
20 def set_thing(self, thing):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
21 pass
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
22
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
23 def draw(self, surface):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
24 if self.image is not None:
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
25 surface.blit(self.image, self.rect, None)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
26
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
27 def animate(self):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
28 return False
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
29
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
30
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
31 class InteractNoImage(Interact):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
32
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
33 def __init__(self, x, y, w, h):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
34 super(InteractNoImage, self).__init__(None, None, Rect(x, y, w, h))
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
35
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
36
819
80ff3c9187bc Rename InteractText to InteractDebugText to better reflect it's aim
Neil Muller <neil@dip.sun.ac.za>
parents: 818
diff changeset
37 class InteractDebugText(Interact):
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
38 """Display box with text to interact with -- mostly for debugging."""
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
39
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
40 def __init__(self, x, y, text, bg_color=None):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
41 if bg_color is None:
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
42 bg_color = (127, 127, 127)
649
e59b119bb0f9 Evict the last BoomLabel.
Jeremy Thurgood <firxen@gmail.com>
parents: 625
diff changeset
43 label = LabelWidget((0, 0), text)
e59b119bb0f9 Evict the last BoomLabel.
Jeremy Thurgood <firxen@gmail.com>
parents: 625
diff changeset
44 # label.set_margin(5)
e59b119bb0f9 Evict the last BoomLabel.
Jeremy Thurgood <firxen@gmail.com>
parents: 625
diff changeset
45 # label.border_width = 1
e59b119bb0f9 Evict the last BoomLabel.
Jeremy Thurgood <firxen@gmail.com>
parents: 625
diff changeset
46 # label.border_color = (0, 0, 0)
e59b119bb0f9 Evict the last BoomLabel.
Jeremy Thurgood <firxen@gmail.com>
parents: 625
diff changeset
47 # label.bg_color = bg_color
e59b119bb0f9 Evict the last BoomLabel.
Jeremy Thurgood <firxen@gmail.com>
parents: 625
diff changeset
48 # label.fg_color = (0, 0, 0)
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
49 image = Surface(label.size)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
50 rect = Rect((x, y), label.size)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
51 label.draw_all(image)
819
80ff3c9187bc Rename InteractText to InteractDebugText to better reflect it's aim
Neil Muller <neil@dip.sun.ac.za>
parents: 818
diff changeset
52 super(InteractDebugText, self).__init__(image, rect, rect)
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
53
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
54
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
55 class InteractRectUnion(Interact):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
56
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
57 def __init__(self, rect_list):
818
8b4a0aad8aeb Remove unneeded rect union code
Neil Muller <neil@dip.sun.ac.za>
parents: 764
diff changeset
58 super(InteractRectUnion, self).__init__(None, None, None)
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
59 rect_list = [Rect(x) for x in rect_list]
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
60 self.interact_rect = rect_list
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
61
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
62
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
63 class InteractImage(Interact):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
64
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
65 def __init__(self, x, y, image_name):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
66 super(InteractImage, self).__init__(None, None, None)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
67 self._pos = (x, y)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
68 self._image_name = image_name
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
69
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
70 def set_thing(self, thing):
763
afe7b1cb16c0 Interacts should get their images through the game's resource module
Stefano Rivera <stefano@rivera.za.net>
parents: 760
diff changeset
71 self.image = thing.resource.get_image(thing.folder, self._image_name)
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
72 self.rect = Rect(self._pos, self.image.get_size())
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
73 self.interact_rect = self.rect
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
74
763
afe7b1cb16c0 Interacts should get their images through the game's resource module
Stefano Rivera <stefano@rivera.za.net>
parents: 760
diff changeset
75 def __repr__(self):
afe7b1cb16c0 Interacts should get their images through the game's resource module
Stefano Rivera <stefano@rivera.za.net>
parents: 760
diff changeset
76 return '<InteractImage: %s>' % self._image_name
afe7b1cb16c0 Interacts should get their images through the game's resource module
Stefano Rivera <stefano@rivera.za.net>
parents: 760
diff changeset
77
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
78
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
79 class InteractImageRect(InteractImage):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
80 def __init__(self, x, y, image_name, r_x, r_y, r_w, r_h):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
81 super(InteractImageRect, self).__init__(x, y, image_name)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
82 self._r_pos = (r_x, r_y)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
83 self._r_size = (r_w, r_h)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
84
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
85 def set_thing(self, thing):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
86 super(InteractImageRect, self).set_thing(thing)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
87 self.interact_rect = Rect(self._r_pos, self._r_size)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
88
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
89
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
90 class InteractAnimated(Interact):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
91 """Interactive with an animation rather than an image"""
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
92
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
93 # anim_seq - sequence of image names
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
94 # delay - number of frames to wait between changing images
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
95
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
96 def __init__(self, x, y, anim_seq, delay):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
97 self._pos = (x, y)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
98 self._anim_pos = 0
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
99 self._names = anim_seq
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
100 self._frame_count = 0
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
101 self._anim_seq = None
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
102 self._delay = delay
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
103
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
104 def set_thing(self, thing):
763
afe7b1cb16c0 Interacts should get their images through the game's resource module
Stefano Rivera <stefano@rivera.za.net>
parents: 760
diff changeset
105 self._anim_seq = [thing.resource.get_image(thing.folder, x)
afe7b1cb16c0 Interacts should get their images through the game's resource module
Stefano Rivera <stefano@rivera.za.net>
parents: 760
diff changeset
106 for x in self._names]
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
107 self.image = self._anim_seq[0]
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
108 self.rect = Rect(self._pos, self.image.get_size())
760
f288e5ec0a75 Convert FIXME about animation image size equivalence into an assertion
Stefano Rivera <stefano@rivera.za.net>
parents: 739
diff changeset
109 for image in self._anim_seq:
f288e5ec0a75 Convert FIXME about animation image size equivalence into an assertion
Stefano Rivera <stefano@rivera.za.net>
parents: 739
diff changeset
110 assert image.get_size() == self.rect.size
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
111 self.interact_rect = self.rect
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
112
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
113 def animate(self):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
114 if self._anim_seq:
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
115 self._frame_count += 1
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
116 if self._frame_count > self._delay:
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
117 self._frame_count = 0
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
118 self._anim_pos += 1
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
119 if self._anim_pos >= len(self._anim_seq):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
120 self._anim_pos = 0
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
121 self.image = self._anim_seq[self._anim_pos]
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
122 # queue redraw
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
123 return True
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
124 return False
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
125
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
126
764
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
127 class TakeableThing(Thing):
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
128 "Thing that can be taken."
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
129
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
130 INITIAL_DATA = {
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
131 'taken': False,
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
132 }
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
133
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
134 ITEM = None
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
135
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
136 def __init__(self):
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
137 # In case a subclass replaces INITIAL_DATA and breaks 'taken'.
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
138 assert self.INITIAL_DATA['taken'] in (True, False)
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
139 super(TakeableThing, self).__init__()
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
140
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
141 def should_add(self):
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
142 return not self.get_data('taken')
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
143
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
144 def take(self):
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
145 self.set_data('taken', True)
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
146 self.game.add_inventory_item(self.ITEM)
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
147 self.scene.remove_thing(self)
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
148
a8510f4e2ea1 Conditionally add things based on state.
Jeremy Thurgood <firxen@gmail.com>
parents: 763
diff changeset
149
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
150 class GenericDescThing(Thing):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
151 "Thing with an InteractiveUnionRect and a description"
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
152
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
153 INITIAL = "description"
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
154
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
155 def __init__(self, prefix, number, description, areas):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
156 super(GenericDescThing, self).__init__()
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
157 self.description = description
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
158 self.name = '%s.%s' % (prefix, number)
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
159 self.interacts = {
533
42742a62f9c3 More pep8 cleanups
Neil Muller <neil@dip.sun.ac.za>
parents: 525
diff changeset
160 'description': InteractRectUnion(areas)
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
161 }
578
356795038b87 Remove a couple of uses os DEBUG.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 576
diff changeset
162 # Individual colors to make debugging easier
356795038b87 Remove a couple of uses os DEBUG.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 576
diff changeset
163 self._interact_hilight_color = Color(THECOLORS.keys()[number])
525
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
164
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
165 def get_description(self):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
166 return self.description
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
167
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
168 def is_interactive(self, tool=None):
821b322e903b Separate "scene widgets" from "game-specific widgets".
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
169 return False