Mercurial > boomslang
changeset 278:8e27efd331aa
Offset support for scenes
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Fri, 27 Aug 2010 22:04:25 +0200 |
parents | 01b22664a12c |
children | c67a4a4d78f6 |
files | gamelib/scenes/bridge.py gamelib/state.py |
diffstat | 2 files changed, 16 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/gamelib/scenes/bridge.py Fri Aug 27 21:43:07 2010 +0200 +++ b/gamelib/scenes/bridge.py Fri Aug 27 22:04:25 2010 +0200 @@ -18,6 +18,8 @@ FOLDER = "bridge" BACKGROUND = 'bridge.png' + OFFSET = (0, -50) + MUSIC = [ 'beep1.ogg', 'beep2.ogg',
--- a/gamelib/state.py Fri Aug 27 21:43:07 2010 +0200 +++ b/gamelib/state.py Fri Aug 27 22:04:25 2010 +0200 @@ -222,6 +222,9 @@ # name of scene (optional, defaults to folder) NAME = None + # Offset of the background image + OFFSET = (0, 0) + # size (for detail views) SIZE = constants.SCENE_SIZE @@ -269,7 +272,7 @@ def draw_background(self, surface): if self._background is not None: - surface.blit(self._background, (0, 0), None) + surface.blit(self._background, self.OFFSET, None) else: surface.fill((200, 200, 200)) @@ -379,6 +382,14 @@ self.rect = None # TODO: add masks + def _fix_rect(self): + """Fix rects to compensate for scene offset""" + if hasattr(self.rect, 'collidepoint'): + self.rect.move_ip(self.scene.OFFSET) + else: + for rect in list(self.rect): + rect.move_ip(self.scene.OFFSET) + def set_scene(self, scene): assert self.scene is None self.scene = scene @@ -392,6 +403,8 @@ def set_interact(self, name): self.current_interact = self.interacts[name] self.rect = self.current_interact.interact_rect + if self.scene: + self._fix_rect() assert self.rect is not None, name def contains(self, pos):