Mercurial > skaapsteker
changeset 111:601d2a500e4a
Hook up scrolling.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Mon, 04 Apr 2011 21:37:31 +0200 |
parents | f64c38c5512d |
children | 394a032aeac7 |
files | skaapsteker/levelscene.py |
diffstat | 1 files changed, 15 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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: