Mercurial > mamba
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):