Files
Super-HUGS-Revolution-98/menu.py

117 lines
4.6 KiB
Python

############################################
# Created on 1-7-2013. Miguel Angel Astor #
############################################
import pygame
try:
import android
except ImportError:
android = None
from constants import DEBUG
from imloader import cached_image_loader
from actor import BaseActor
from state import BaseState, VALID_STATES
MENUS = {'MAIN':0, 'SCORE':1, 'INTRO':2}
class MenuState(BaseState):
def __init__(self):
BaseState.__init__(self)
self.next_transition = VALID_STATES['STAY']
self.current_menu = MENUS['MAIN']
self.intro_time = 0
self.intro_max_time = 5000 # Miliseconds.
self.then = 0
self.cursor_x = 0
self.cursor_y = 0
# Load main menu buttons.
image = cached_image_loader.get_image_to_screen_percent('gfx/logo.png')
self.logo = BaseActor(0, image, "SHR98 logo", False, True, False)
self.logo.set_position([pygame.display.Info().current_w // 2, (image.get_height() // 2) + 20])
image2 = cached_image_loader.get_image_to_screen_percent('gfx/boton_socre.png')
self.scr_button = BaseActor(1, image2, "Score Button", False, True, False)
self.scr_button.set_position([pygame.display.Info().current_w // 2,
self.logo.get_position()[1] + (image.get_height()) + 20])
image = cached_image_loader.get_image_to_screen_percent('gfx/boton_new.png')
self.new_button = BaseActor(2, image, "New button", False, True, False)
self.new_button.set_position([pygame.display.Info().current_w // 2 - 10 -image2.get_width(),
self.scr_button.get_position()[1]])
image = cached_image_loader.get_image_to_screen_percent('gfx/boton_salir.png')
self.quit_button = BaseActor(3, image, "Quit button", False, True, False)
self.quit_button.set_position([pygame.display.Info().current_w // 2 + 10 +image2.get_width(),
self.scr_button.get_position()[1]])
# Load score menu buttons.
image = cached_image_loader.get_image_to_screen_percent('gfx/MenosMalos.png')
self.scoreboard = BaseActor(4, image, "Scoreboard", False, True, False)
self.scoreboard.set_position([(image.get_width() // 2) + 20, pygame.display.Info().current_h // 2])
image2 = cached_image_loader.get_image_to_screen_percent('gfx/boton_back.png')
self.back_button = BaseActor(5, image2, "Back button", False, True, False)
self.back_button.set_position([self.scoreboard.get_position()[0] + image.get_width() - (image.get_width() // 10),
pygame.display.Info().current_h // 2])
# Load story screen sprites.
# Add sound support.
def input(self):
for event in pygame.event.get():
if android:
if android.check_pause():
android.wait_for_resume()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.next_transition = VALID_STATES['QUIT']
if event.type == pygame.QUIT:
self.next_transition = VALID_STATES['QUIT']
# Catch the position of a mouse click (or tap).
if event.type == pygame.MOUSEBUTTONDOWN:
(self.cursor_x, self.cursor_y) = event.pos
def update(self):
if android is None:
pygame.mouse.set_visible(True)
if self.next_transition != VALID_STATES['QUIT']:
if self.current_menu == MENUS['MAIN']:
if self.quit_button.rect.collidepoint(self.cursor_x, self.cursor_y):
self.next_transition = VALID_STATES['QUIT']
elif self.scr_button.rect.collidepoint(self.cursor_x, self.cursor_y):
self.current_menu = MENUS['SCORE']
elif self.new_button.rect.collidepoint(self.cursor_x, self.cursor_y):
self.current_menu = MENUS['INTRO']
elif self.current_menu == MENUS['SCORE']:
if self.back_button.rect.collidepoint(self.cursor_x, self.cursor_y):
self.current_menu = MENUS['MAIN']
elif self.current_menu == MENUS['INTRO']:
pass
self.cursor_x = 0
self.cursor_y = 0
return self.next_transition
def render(self, canvas):
canvas.fill(self.background_color)
if self.current_menu == MENUS['MAIN']:
self.logo.draw(canvas)
self.scr_button.draw(canvas)
self.new_button.draw(canvas)
self.quit_button.draw(canvas)
elif self.current_menu == MENUS['SCORE']:
self.scoreboard.draw(canvas)
self.back_button.draw(canvas)