Mercurial > skaapsteker
view skaapsteker/menuscene.py @ 632:0675f390653c
Initial port to Python 3 and Pygame 2.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Fri, 20 Jan 2023 20:01:06 +0100 |
parents | a5a57abd5472 |
children |
line wrap: on
line source
import pygame from pygame.locals import K_ESCAPE, K_q, K_UP, K_DOWN, K_RETURN, K_SPACE, 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 == 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 in [K_RETURN, K_SPACE]: self.selected(self._selected, self._options[self._selected]) self._selected %= 4 + int(self._can_resume)