Mercurial > mamba
changeset 322:86c5c6afdac0
Thumbnails on the level screen
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Fri, 16 Sep 2011 20:01:13 +0200 |
parents | 014aa3a97b2c |
children | c44821def687 |
files | data/menus/tick.png mamba/habitats/levelmenu.py mamba/widgets/levelbutton.py source/svg/menus/tick.svg |
diffstat | 4 files changed, 41 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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):
--- 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"> <defs id="defs4"> <marker inkscape:stockid="Arrow1Lstart" orient="auto" - refY="0.0" - refX="0.0" + refY="0" + refX="0" id="Arrow1Lstart" style="overflow:visible"> <path id="path3776" - d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " - style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" - transform="scale(0.8) translate(12.5,0)" /> + 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" /> </marker> </defs> <sodipodi:namedview @@ -38,19 +39,19 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="5.6" - inkscape:cx="-21.683944" - inkscape:cy="46.325811" + inkscape:zoom="3.959798" + inkscape:cx="-23.620305" + inkscape:cy="49.093981" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" showguides="true" inkscape:guide-bbox="true" - inkscape:window-width="1893" - inkscape:window-height="1078" - inkscape:window-x="25" - inkscape:window-y="0" - inkscape:window-maximized="0"> + inkscape:window-width="1280" + inkscape:window-height="776" + inkscape:window-x="0" + inkscape:window-y="24" + inkscape:window-maximized="1"> <sodipodi:guide orientation="1,0" position="5,0" @@ -88,13 +89,12 @@ inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" - transform="translate(0,-1002.3622)"> + transform="translate(0,-952.3622)"> <path - style="fill:#00ff00;stroke:#008600;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none" - d="M 5,31.817254 13.637059,45 17.803938,45 C 25,28.888747 33.914341,18.585871 45,5 32.904188,14.865058 22.323606,24.477578 15.909902,39.14086 L 8.2074894,28.407989 z" + style="fill:#00ff00;stroke:#008600;stroke-width:2px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none" + d="m 10,1015.9967 17.274118,26.3655 8.333758,0 C 50,1010.1397 67.828682,989.5339 90,962.3622 c -24.191624,19.7301 -45.352788,38.9552 -58.180196,68.2817 l -15.404825,-21.4657 z" id="path3003" inkscape:connector-curvature="0" - transform="translate(0,1002.3622)" sodipodi:nodetypes="ccccccc" /> </g> </svg>