# HG changeset patch # User Simon Cross # Date 1301945851 -7200 # Node ID 601d2a500e4a7c6f6698aaecbe3353ee82150bf5 # Parent f64c38c5512d76c739d1cea338053ea18ec69520 Hook up scrolling. diff -r f64c38c5512d -r 601d2a500e4a skaapsteker/levelscene.py --- a/skaapsteker/levelscene.py Mon Apr 04 21:34:04 2011 +0200 +++ b/skaapsteker/levelscene.py Mon Apr 04 21:37:31 2011 +0200 @@ -19,7 +19,7 @@ self._player = player self._level = level.Level(leveldef, self._player) self._level_surface = self._level.get_surface() - self._pos = (0, 0) + self._clip_rect = None self._world = physics.World() self.frozen = False @@ -71,15 +71,25 @@ self.frozen = False def draw(self, screen_surface): - self._world.update() + if self._clip_rect is None: + self._clip_rect = pygame.Rect((0, 0), screen_surface.get_size()) - clip_rect = pygame.Rect(self._pos, screen_surface.get_size()) - self._level_surface.set_clip(clip_rect) + self._world.update() + self._update_clip_rect() + self._level_surface.set_clip(self._clip_rect) self._level.draw(self._level_surface) self._world.draw(self._level_surface) - screen_surface.blit(self._level_surface, (0, 0), clip_rect) + screen_surface.blit(self._level_surface, (0, 0), self._clip_rect) + + def _update_clip_rect(self): + cr = self._clip_rect + lr = self._level_surface.get_rect() + cr.center = self._player.rect.center + cr.move_ip(-min(cr.left - lr.left, 0), -min(cr.top - lr.top, 0)) + cr.move_ip(min(lr.right - cr.right, 0), min(lr.bottom - cr.bottom, 0)) + print cr def dispatch(self, ev): if ev.type is KEYDOWN: