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
Binary file data/menus/tick.png has changed
--- 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>