changeset 413:cbbba6ddc77d

Use cached level images for extra blazing fastitude.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 17 Sep 2011 14:51:59 +0200
parents e2d5d937eac1
children 442007704a9a
files mamba/widgets/levelbutton.py
diffstat 1 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/widgets/levelbutton.py	Sat Sep 17 14:49:19 2011 +0200
+++ b/mamba/widgets/levelbutton.py	Sat Sep 17 14:51:59 2011 +0200
@@ -20,19 +20,24 @@
         self.rect.height = 100
         self.prepare()
 
+    def make_thumbnail(self, dest_rect):
+        level_surface = pygame.Surface(self.level.get_size(), SRCALPHA)
+        self.level.draw(level_surface)
+        size = level_surface.get_rect().fit(dest_rect).size
+        level_thumbnail = pygame.transform.scale(level_surface, size)
+        return level_thumbnail
+
     def prepare(self):
         self.surface = pygame.Surface(self.rect.size, SRCALPHA)
         self.surface.fill(0)
 
-        # Level Thumbnail
-        level_surface = pygame.Surface(self.level.get_size(), SRCALPHA)
-        self.level.draw(level_surface)
         dest_rect = pygame.Rect((self.border, self.border),
                                 (self.rect.width - self.border,
                                  self.rect.height - self.border))
-        size = level_surface.get_rect().fit(dest_rect).size
-        level_thumbnail = pygame.transform.scale(level_surface, size)
-        self.surface.blit(level_thumbnail, dest_rect)
+        # Level Thumbnail
+        if not hasattr(self.level, 'button_thumbnail'):
+            self.level.button_thumbnail = self.make_thumbnail(dest_rect)
+        self.surface.blit(self.level.button_thumbnail, dest_rect)
 
         if self.done:
             image = load_image('menus/tick.png')