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: