# HG changeset patch # User Stefano Rivera # Date 1316196073 -7200 # Node ID 86c5c6afdac0d02f6e2e3c3c6e13bd96a2973124 # Parent 014aa3a97b2c8032434bd22ee93f12a5c52d4db6 Thumbnails on the level screen diff -r 014aa3a97b2c -r 86c5c6afdac0 data/menus/tick.png Binary file data/menus/tick.png has changed diff -r 014aa3a97b2c -r 86c5c6afdac0 mamba/habitats/levelmenu.py --- a/mamba/habitats/levelmenu.py Fri Sep 16 19:51:51 2011 +0200 +++ b/mamba/habitats/levelmenu.py Fri Sep 16 20:01:13 2011 +0200 @@ -16,7 +16,7 @@ self.level_buttons = {} for i, name in enumerate(levels): level = Level(name) - button = LevelButton((50 + 75 * i, 100), level, + button = LevelButton((20 + 120 * i, 20), level, done=name in done_levels) button.add_callback('clicked', self.level_selected, name) self.container.add(button) diff -r 014aa3a97b2c -r 86c5c6afdac0 mamba/widgets/levelbutton.py --- 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): diff -r 014aa3a97b2c -r 86c5c6afdac0 source/svg/menus/tick.svg --- a/source/svg/menus/tick.svg Fri Sep 16 19:51:51 2011 +0200 +++ b/source/svg/menus/tick.svg Fri Sep 16 20:01:13 2011 +0200 @@ -9,26 +9,27 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="50" - height="50" + width="100" + height="100" id="svg2" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48.2 r9819" sodipodi:docname="tick.svg"> + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" + inkscape:connector-curvature="0" /> + inkscape:window-width="1280" + inkscape:window-height="776" + inkscape:window-x="0" + inkscape:window-y="24" + inkscape:window-maximized="1"> + transform="translate(0,-952.3622)">