comparison 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
comparison
equal deleted inserted replaced
39:34038447be23 40:fa1bb94cfa76
17 17
18 FRAMERATE = 60 18 FRAMERATE = 60
19 19
20 def run(levelname): 20 def run(levelname):
21 clock = pygame.time.Clock() 21 clock = pygame.time.Clock()
22 surface = pygame.display.get_surface() 22 screen_surface = pygame.display.get_surface()
23 level = Level(levelname) 23 level = Level(levelname)
24 level_surface = level.get_surface()
24 position = [0, 0] 25 position = [0, 0]
25 while True: 26 while True:
26 events = pygame.event.get() 27 events = pygame.event.get()
27 for ev in events: 28 for ev in events:
28 if ev.type is QUIT: 29 if ev.type is QUIT:
45 position[0] = max(position[0], 0) 46 position[0] = max(position[0], 0)
46 position[0] = min(position[0], level.pixel_size[0] - SCREEN[0]) 47 position[0] = min(position[0], level.pixel_size[0] - SCREEN[0])
47 position[1] = max(position[1], 0) 48 position[1] = max(position[1], 0)
48 position[1] = min(position[1], level.pixel_size[1] - SCREEN[1]) 49 position[1] = min(position[1], level.pixel_size[1] - SCREEN[1])
49 50
50 level.draw(surface, position) 51 clip_rect = pygame.Rect(position, screen_surface.get_size())
52 level_surface.set_clip(clip_rect)
53 level.draw(level_surface)
54 screen_surface.blit(level_surface, (0, 0), area=clip_rect)
55
51 pygame.display.flip() 56 pygame.display.flip()
52 clock.tick(FRAMERATE) 57 clock.tick(FRAMERATE)
53 58
54 def main(): 59 def main():
55 p = optparse.OptionParser(usage="%prog [options] levelname") 60 p = optparse.OptionParser(usage="%prog [options] levelname")