diff scripts/level-editor @ 40:fa1bb94cfa76

Re-factor drawing to blit to a clip rect in the One True Level Surface before blitting that to the screen.
author Simon Cross <hodgestar@gmail.com>
date Sun, 03 Apr 2011 20:24:47 +0200
parents 38d2f7c43d86
children 4a9e26f1f35a
line wrap: on
line diff
--- a/scripts/level-editor	Sun Apr 03 20:24:17 2011 +0200
+++ b/scripts/level-editor	Sun Apr 03 20:24:47 2011 +0200
@@ -19,8 +19,9 @@
 
 def run(levelname):
     clock = pygame.time.Clock()
-    surface = pygame.display.get_surface()
+    screen_surface = pygame.display.get_surface()
     level = Level(levelname)
+    level_surface = level.get_surface()
     position = [0, 0]
     while True:
         events = pygame.event.get()
@@ -47,7 +48,11 @@
         position[1] = max(position[1], 0)
         position[1] = min(position[1], level.pixel_size[1] - SCREEN[1])
 
-        level.draw(surface, position)
+        clip_rect = pygame.Rect(position, screen_surface.get_size())
+        level_surface.set_clip(clip_rect)
+        level.draw(level_surface)
+        screen_surface.blit(level_surface, (0, 0), area=clip_rect)
+
         pygame.display.flip()
         clock.tick(FRAMERATE)