Mercurial > boomslang
diff gamelib/menu.py @ 600:fabce47e542f pyntnclick
Stop using albow (at least for the menu). Breaks the world. Please fix it, kthx
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 11 Feb 2012 19:56:30 +0200 |
parents | 2d2ea51b73ad |
children | ac3690c299e6 |
line wrap: on
line diff
--- a/gamelib/menu.py Sat Feb 11 18:46:19 2012 +0200 +++ b/gamelib/menu.py Sat Feb 11 19:56:30 2012 +0200 @@ -2,34 +2,30 @@ # Copyright Boomslang team, 2010 (see COPYING File) # Main menu for the game -from albow.screen import Screen - -from pyntnclick.widgets import BoomImageButton +from pyntnclick.engine import Screen +from pyntnclick.widgets.imagebutton import ImageButtonWidget - -class SplashButton(BoomImageButton): - - FOLDER = 'splash' +import pygame.event +from pygame.locals import QUIT class MenuScreen(Screen): - def __init__(self, shell, game_description): - Screen.__init__(self, shell) - self._background = game_description.resource.get_image( - ('splash', 'splash.png')) - self._start_button = SplashButton('play.png', 16, 523, self.start) - self._resume_button = SplashButton('resume.png', 256, 523, self.resume, - enable=self.check_running) - self._quit_button = SplashButton('quit.png', 580, 523, shell.quit) - self.add(self._start_button) - self.add(self._resume_button) - self.add(self._quit_button) + def setup(self): + self._background = self.resource.get_image(('splash', 'splash.png')) + + self.add_image_button((16, 523), ('splash', 'play.png'), self.start) + # FIXME: Only show this when check_running: + self.add_image_button((256, 523), ('splash', 'resume.png'), self.resume) + self.add_image_button((580, 523), ('splash', 'quit.png'), self.quit) - def draw(self, surface): - surface.blit(self._background, (0, 0)) - self._start_button.draw(surface) - self._resume_button.draw(surface) - self._quit_button.draw(surface) + def add_image_button(self, rect, image_name, callback): + image = self.resource.get_image(image_name) + widget = ImageButtonWidget(rect, image) + widget.add_callback('clicked', callback) + self.container.add(widget) + + def draw_background(self): + self.surface.blit(self._background, self.surface.get_rect()) def start(self): self.shell.game_screen.start_game() @@ -41,3 +37,6 @@ def resume(self): if self.shell.game_screen.running: self.shell.show_screen(self.shell.game_screen) + + def quit(self): + pygame.event.Event(QUIT)