changeset 665:12149ea1c18e pyntnclick

Menu button.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 12 Feb 2012 17:06:45 +0200
parents d1c1253fcd77
children de3f6ad0da9d
files pyntnclick/gamescreen.py pyntnclick/widgets/text.py
diffstat 2 files changed, 21 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/pyntnclick/gamescreen.py	Sun Feb 12 16:53:40 2012 +0200
+++ b/pyntnclick/gamescreen.py	Sun Feb 12 17:06:45 2012 +0200
@@ -242,24 +242,26 @@
         self.bg_color = (31, 31, 31)
         self.left = self.rect.left
 
-        # TODO: Menu button
-        # XXX: self.popup_menu = PopupMenu(self)
-        # XXX: self.menubutton = PopupMenuButton('Menu',
-        #        action=self.popup_menu.show_menu)
+        self.menu_button = self.add_tool(
+            0, TextButton, gd, "Menu", fontname="VeraBd.ttf", color="red",
+            padding=2, border=0)
+        self.menu_button.add_callback(MOUSEBUTTONDOWN, self.menu_callback)
 
         hand_image = gd.resource.get_image('items', 'hand.png')
         self.hand_button = self.add_tool(
-            hand_image.get_width(), ImageButtonWidget, gd, hand_image)
-        self.hand_button.add_callback(MOUSEBUTTONDOWN, self.hand_pressed)
+            None, ImageButtonWidget, gd, hand_image)
+        self.hand_button.add_callback(MOUSEBUTTONDOWN, self.hand_callback)
 
         self.inventory = self.add_tool(
             self.rect.width - self.left, InventoryView, gd, screen)
 
     def add_tool(self, width, cls, *args, **kw):
-        rect = Rect((self.left, self.rect.top), (width, self.rect.height))
+        rect = (self.left, self.rect.top)
+        if width is not None:
+            rect = Rect(rect, (width, self.rect.height))
         tool = cls(rect, *args, **kw)
         self.add(tool)
-        self.left += width
+        self.left += tool.rect.width
         return tool
 
     def draw(self, surface):
@@ -268,9 +270,12 @@
         surface.blit(bg, self.rect)
         super(ToolBar, self).draw(surface)
 
-    def hand_pressed(self, event, widget):
+    def hand_callback(self, event, widget):
         self.inventory.unselect()
 
+    def menu_callback(self, event, widget):
+        self.screen.change_screen('menu')
+
 
 class GameScreen(CursorScreen):
 
@@ -313,14 +318,6 @@
         if event.key == K_ESCAPE:
             self.change_screen('menu')
 
-    # albow callback:
-    def main_menu_cmd(self):
-        self.shell.show_screen(self.shell.menu_screen)
-
-    # albow callback:
-    def quit_cmd(self):
-        self.shell.quit()
-
 
 class DefEndScreen(Screen):
     """A placeholder 'Game Over' screen so people can get started easily"""
--- a/pyntnclick/widgets/text.py	Sun Feb 12 16:53:40 2012 +0200
+++ b/pyntnclick/widgets/text.py	Sun Feb 12 17:06:45 2012 +0200
@@ -86,10 +86,13 @@
         self.rect.height = max(self.rect.height, height)
         self.surface = pygame.Surface(self.rect.size, SRCALPHA)
         self.surface.fill(0)
-        self.surface.blit(text, text.get_rect().move(self.padding,
-                                                     self.padding))
-        pygame.draw.rect(self.surface, color, self.surface.get_rect(),
-                         self.border)
+        offset = (
+            (self.rect.width - width) / 2 + self.padding,
+            (self.rect.height - height) / 2 + self.padding)
+        self.surface.blit(text, text.get_rect().move(offset))
+        if self.border:
+            pygame.draw.rect(self.surface, color, self.surface.get_rect(),
+                             self.border)
 
     def draw(self, surface):
         super(TextButton, self).draw(surface)