Mercurial > nagslang
changeset 511:a98ae2bc4957
Fix slow rendering. \o/
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 07 Sep 2013 19:28:27 +0200 |
parents | 2cdfbc483d57 |
children | a46767c61ad6 |
files | nagslang/screens/area.py |
diffstat | 1 files changed, 13 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/nagslang/screens/area.py Sat Sep 07 19:22:15 2013 +0200 +++ b/nagslang/screens/area.py Sat Sep 07 19:28:27 2013 +0200 @@ -92,6 +92,8 @@ self.add_game_objects() self.save_progress() sound.play_music("POL-cyber-factory-short.ogg") + self._background = None + self._surface = None def teardown(self): sound.stop() @@ -230,17 +232,19 @@ def render(self, surface): if self._disable_render: return - background = self._level.get_background() - render_rect = self._calc_viewport(background, surface) - #mysurface = background.copy() - mysurface = pygame.surface.Surface(background.get_size()) - mysurface.set_clip(render_rect) - mysurface.blit(background, render_rect.topleft, render_rect) + if self._background is None: + bg = self._level.get_background() + self._background = pygame.surface.Surface(bg.get_size()) + self._background.blit(bg, (0, 0)) + self._surface = pygame.surface.Surface(self._background.get_size()) + render_rect = self._calc_viewport(self._surface, surface) + self._surface.set_clip(render_rect) + self._surface.blit(self._background, render_rect.topleft, render_rect) for drawable in self._drawables: - drawable.render(mysurface) - surface.blit(mysurface, (0, 0), render_rect) + drawable.render(self._surface) + surface.blit(self._surface, (0, 0), render_rect) # Maximum width we allow for overlays - max_width = min(render_rect.width, mysurface.get_width()) + max_width = min(render_rect.width, self._surface.get_width()) for overlay in self._level.overlay_drawables: if overlay.is_visible(): overlay.render(surface, render_rect.topleft, max_width)