import pygame from engine import * from engine.event import * ##from breakout_ingame import * from breakout_graphics import * from breakout_levelselect import * from breakout_playername import * class breakout_startup(model.abstract_gamestate): def __init__(self): self.selected = 0 self.menu_options = {0: self.start_game,\ 1: self.start_editor,\ 2: self.quit} self.menu_text = ["Start game",\ "Edit levels",\ "Quit"] self.logo = breakout_sprite() self.logo.set_image(misc.load_image("logo.png")) self.logo.set_pos((110,50)) ## Draws the menu to screen with the selected item in ## a differenct color. def draw_menu(self, screen, pos): x,y = pos for i in range(0, len(self.menu_text)): y += 25 if self.selected == i: color = (255,0,0) else: color = (0,0,0) misc.draw_text(self.menu_text[i],\ 20,\ color,\ screen,\ (x,y)) ## Change state to the actual game! def start_game(self): self.set_state(breakout_playername()) ## .. or to the editor. def start_editor(self): state = breakout_levelselect() state.set_announce_method(self.announce_method) self.set_state(state) def quit(self): self.announce_method(quit_event()) ## This is only needed to be able to quit the game. def set_announce_method(self, announce_method): self.announce_method = announce_method ## These two methods are used to navigate through the menu. def increase_selection(self): self.selected = (self.selected + 1) % len(self.menu_text) def decrease_selection(self): self.selected = (self.selected - 1) % len(self.menu_text) ## Handle keystrokes. def key_pressed(self, key): if key == pygame.locals.K_UP: self.decrease_selection() elif key == pygame.locals.K_DOWN: self.increase_selection() elif key == pygame.locals.K_RETURN: self.menu_options[self.selected]() def draw(self, screen): self.logo.draw(screen) self.draw_menu(screen, (200,140))