Mercurial > boomslang
diff gamelib/state.py @ 263:3b4a78422201
Shuffled a bunch of stuff into more appropriate places.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Fri, 27 Aug 2010 19:29:37 +0200 |
parents | dfc89bc64fdb |
children | 3cedc4f95925 |
line wrap: on
line diff
--- a/gamelib/state.py Fri Aug 27 19:22:47 2010 +0200 +++ b/gamelib/state.py Fri Aug 27 19:29:37 2010 +0200 @@ -5,7 +5,6 @@ from widgets import BoomLabel from pygame.locals import BLEND_ADD from pygame.rect import Rect -from pygame.surface import Surface from pygame.color import Color import constants @@ -345,109 +344,6 @@ return self._background.get_size() -class Interact(object): - - def __init__(self, image, rect, interact_rect): - self.image = image - self.rect = rect - self.interact_rect = interact_rect - - def set_thing(self, thing): - pass - - def draw(self, surface): - if self.image is not None: - surface.blit(self.image, self.rect, None) - - def animate(self): - return False - - -class InteractNoImage(Interact): - - def __init__(self, x, y, w, h): - super(InteractNoImage, self).__init__(None, None, Rect(x, y, w, h)) - - -class InteractText(Interact): - """Display box with text to interact with -- mostly for debugging.""" - - def __init__(self, x, y, text, bg_color=None): - if bg_color is None: - bg_color = (127, 127, 127) - label = BoomLabel(text) - label.set_margin(5) - label.border_width = 1 - label.border_color = (0, 0, 0) - label.bg_color = bg_color - label.fg_color = (0, 0, 0) - image = Surface(label.size) - rect = Rect((x, y), label.size) - label.draw_all(image) - super(InteractText, self).__init__(image, rect, rect) - - -class InteractRectUnion(Interact): - - def __init__(self, rect_list): - # pygame.rect.Rect.unionall should do this, but is broken - # in some pygame versions (including 1.8, it appears) - rect_list = [Rect(x) for x in rect_list] - union_rect = rect_list[0] - for rect in rect_list[1:]: - union_rect = union_rect.union(rect) - super(InteractRectUnion, self).__init__(None, None, union_rect) - self.interact_rect = rect_list - - -class InteractImage(Interact): - - def __init__(self, x, y, image_name): - super(InteractImage, self).__init__(None, None, None) - self._pos = (x, y) - self._image_name = image_name - - def set_thing(self, thing): - self.image = get_image(thing.folder, self._image_name) - self.rect = Rect(self._pos, self.image.get_size()) - self.interact_rect = self.rect - - -class InteractAnimated(Interact): - """Interactive with an animation rather than an image""" - - # FIXME: Assumes all images are the same size - # anim_seq - sequence of image names - # delay - number of frames to wait between changing images - - def __init__(self, x, y, anim_seq, delay): - self._pos = (x, y) - self._anim_pos = 0 - self._names = anim_seq - self._frame_count = 0 - self._anim_seq = None - self._delay = delay - - def set_thing(self, thing): - self._anim_seq = [get_image(thing.folder, x) for x in self._names] - self.image = self._anim_seq[0] - self.rect = Rect(self._pos, self.image.get_size()) - self.interact_rect = self.rect - - def animate(self): - if self._anim_seq: - self._frame_count += 1 - if self._frame_count > self._delay: - self._frame_count = 0 - self._anim_pos += 1 - if self._anim_pos >= len(self._anim_seq): - self._anim_pos = 0 - self.image = self._anim_seq[self._anim_pos] - # queue redraw - return True - return False - - class Thing(StatefulGizmo): """Base class for things in a scene that you can interact with."""