changeset 68:7309392d9ca9

fixed widget drawing bugs
author Rizmari Versfeld <rizziepit@gmail.com>
date Tue, 08 May 2012 23:05:58 +0200
parents 06c8539df478
children 626b1eaec13c
files gamelib/engine.py gamelib/gui.py gamelib/gui_base.py
diffstat 3 files changed, 17 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/engine.py	Tue May 08 22:28:00 2012 +0200
+++ b/gamelib/engine.py	Tue May 08 23:05:58 2012 +0200
@@ -66,8 +66,8 @@
             clock.tick(FPS)
 
     def draw(self):
-        for view in self._window_stack:
-            view.draw(self._screen)
+        #for view in self._window_stack:
+        self._window_stack[-1].draw(self._screen)
         pygame.display.flip()
 
     def process_input(self):
--- a/gamelib/gui.py	Tue May 08 22:28:00 2012 +0200
+++ b/gamelib/gui.py	Tue May 08 23:05:58 2012 +0200
@@ -20,7 +20,7 @@
     BG_IMAGE_NORMAL = image.load(data.filepath('images/button_normal.png'))
     BG_IMAGE_DOWN = image.load(data.filepath('images/button_down.png'))
 
-    def __init__(self, pos, text, font=font_large, shadow=True):
+    def __init__(self, pos, text, font=font_large, shadow=False):
         rect1 = (0, 0, self.WIDTH, self.HEIGHT)
         n = ImageDrawable(rect1, self.BG_IMAGE_NORMAL)
         d = ImageDrawable(rect1, self.BG_IMAGE_DOWN)
--- a/gamelib/gui_base.py	Tue May 08 22:28:00 2012 +0200
+++ b/gamelib/gui_base.py	Tue May 08 23:05:58 2012 +0200
@@ -104,6 +104,8 @@
     def draw(self, screen):
         if self.background_colour:
             self.surface.fill(self.background_colour)
+        else:
+            self.surface.fill((0, 0, 0, 255))
         if self.background_image:
             self.surface.blit(self.background_image, (0, 0))
         self.draw_children(self.surface)
@@ -155,7 +157,7 @@
     def __init__(self, rect, normal_drawable, down_drawable, text, font,
             shadow):
         super(TextButton, self).__init__(rect, normal_drawable, down_drawable)
-        self.surface = Surface((rect[2], rect[3]))
+        self.surface = Surface((rect[2], rect[3]), pygame.SRCALPHA)
         self.text = text
         self.font = font
         self.shadow = shadow
@@ -163,14 +165,19 @@
 
     def _draw_text(self):
         self.font.set_bold(True)
-        self.text_surface = self.font.render(self.text, True, (128, 128, 128))
+        self.text_surface = self.font.render(self.text, True, (0, 0, 0))
+        size = self.font.size(self.text) 
         if self.shadow:
-            shadow = self.font.render(self.text, True, (0, 0, 0))
-            self.text_surface.blit(shadow, (-2, -2))
-        self.font.set_bold(False)
-        size = self.font.size(self.text)
+            shadow = self.font.render(self.text, True, (128, 128, 128))
+            temp_surface = Surface((shadow.get_width() + 2, shadow.get_width() + 2), pygame.SRCALPHA)
+            temp_surface.fill((255, 255, 255, 0))
+            temp_surface.blit(shadow, (2, 2))
+            temp_surface.blit(self.text_surface, (0, 0))
+            self.text_surface = temp_surface
+            size = [s + 2 for s in size]
         self.text_offset = ((self.rect[2] - size[0]) / 2,
                 (self.rect[3] - size[1]) / 2)
+        self.font.set_bold(False)
 
     def draw(self, surface):
         self.surface.fill((0, 0, 0, 0))
@@ -183,7 +190,7 @@
 
     def __init__(self, rect, text, font, color):
         super(TextLabel, self).__init__(rect)
-        self.surface = Surface((rect[2], rect[3]))
+        self.surface = Surface((rect[2], rect[3]), pygame.SRCALPHA)
         self.text = text
         self.font = font
         self.color = color