diff mamba/widgets/levelbutton.py @ 322:86c5c6afdac0

Thumbnails on the level screen
author Stefano Rivera <stefano@rivera.za.net>
date Fri, 16 Sep 2011 20:01:13 +0200
parents fba74abad7b7
children cbbba6ddc77d
line wrap: on
line diff
--- a/mamba/widgets/levelbutton.py	Fri Sep 16 19:51:51 2011 +0200
+++ b/mamba/widgets/levelbutton.py	Fri Sep 16 20:01:13 2011 +0200
@@ -15,29 +15,40 @@
         self.text = level.name
         self.done = done
         self.focussable = True
-        self.border = 3
-        self.rect.width = 50
-        self.rect.height = 50
+        self.border = 2
+        self.rect.width = 100
+        self.rect.height = 100
         self.prepare()
 
     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)
+
         if self.done:
             image = load_image('menus/tick.png')
             self.surface.blit(image, image.get_rect())
 
-        self._text = TextWidget((0, 0), self.text, fontsize=24)
+        self._text = TextWidget((0, 0), self.text, fontsize=12)
         self._text.prepare()
+        text_rect = pygame.Rect((0, 0), self.rect.size).inflate(
+                self._text.rect.width - self.rect.width,
+                self._text.rect.height - self.rect.height)
+        text_rect.top = self.rect.height - self._text.rect.height - self.border
+        self.surface.blit(self._text.surface, text_rect)
 
         color = pygame.Color(FOCUS_COLOR if self.focussed else COLOR)
         pygame.draw.rect(self.surface, color, self.surface.get_rect(),
-                         self.border)
-        text_rect = pygame.Rect((0, 0), self.rect.size).inflate(
-                self._text.rect.width - self.rect.width,
-                self._text.rect.height - self.rect.height)
-        self.surface.blit(self._text.surface, text_rect)
+                         self.border + 1)
         self._state = (self.done, self.focussed)
 
     def draw(self, surface):