Mercurial > skaapsteker
view skaapsteker/menuscene.py @ 479:fb9258d66137
New Main Menu
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 09 Apr 2011 21:59:59 +0200 |
parents | 95527fd29872 |
children | a5a57abd5472 |
line wrap: on
line source
import pygame from pygame.locals import K_ESCAPE, K_q, K_UP, K_DOWN, K_RETURN, KEYDOWN, QUIT from .data import load_image from .cutscene import OpeningCutScene, UsageCutScene, CreditsCutScene from .engine import ChangeScene, Scene from .levelscene import LevelScene from .widgets.text import Text, TextChoice class MenuScene(Scene): def __init__(self, game_state, soundsystem): super(MenuScene, self).__init__(game_state, soundsystem) self._background = load_image('backgrounds/main-menu.png') self._cursor = load_image('sprites/main-menu-cursor.png') self._selected = 0 self._options = ['restart', 'usage', 'credits', 'quit'] self._can_resume = self.game_state.world is not None if self._can_resume: resume = load_image('sprites/main-menu-resume.png') self._background.blit(resume, (73, 180)) self._options.insert(0, 'resume') def selected(self, option, data): if data == 'resume': fox = self.game_state.world.fox ChangeScene.post((LevelScene, '.'.join([fox.level, fox.doorway]))) elif data == 'restart': self.game_state.new_game() ChangeScene.post(OpeningCutScene(self.game_state, self._soundsystem)) elif data == 'usage': ChangeScene.post(UsageCutScene(self.game_state, self._soundsystem)) elif data == 'credits': ChangeScene.post(CreditsCutScene(self.game_state, self._soundsystem)) elif data == 'quit': pygame.event.post(pygame.event.Event(QUIT)) def draw(self, surface, engine): cursor_x = 35 cursor_y = 232 if self._can_resume: cursor_y -= 43 cursor_y += 43 * self._selected surface.blit(self._background, (0, 0)) surface.blit(self._cursor, (cursor_x, cursor_y)) def dispatch(self, ev): if ev.type is KEYDOWN: if ev.key in (K_q, K_ESCAPE): pygame.event.post(pygame.event.Event(QUIT)) elif ev.key == K_DOWN: self._selected += 1 elif ev.key == K_UP: self._selected -= 1 elif ev.key == K_RETURN: self.selected(self._selected, self._options[self._selected]) self._selected %= 4 + int(self._can_resume)