Mercurial > skaapsteker
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") |