Beispiel #1
0
class GameMenu(State):
    def __init__(self, *args, **kwargs):
        State.__init__(self, *args, **kwargs)
        self.state_vars["MENU"] = self
        self.surface = None
        self.clock = None
        self.controls = None
        self.font = None
        self.exit = False
        self.buttons = None
        self.setup()

    def setup(self):
        self.surface = Layer(GameConfig.SCREEN_SIZE)
        self.surface.fill(GameConfig.MENU_COLOR)
        self.clock = pygame.time.Clock()
        self.controls = EventControl({
            pygame.QUIT: self.quit,
            pygame.MOUSEMOTION: self.mouse_movement_event
        })
        self.font = pygame.font.Font(None, GameConfig.MENU_FONT_SIZE)
        self.buttons = [
            self.font.render("Start", True, GameConfig.MENU_TEXT_COLOR),
            self.font.render("Options", True, GameConfig.MENU_TEXT_COLOR),
            self.font.render("Exit", True, GameConfig.MENU_TEXT_COLOR)
        ]

    def run(self):
        while not self.exit:
            self.clock.tick(GameConfig.FRAMES_PER_SECOND)
            self.controls.poll_event()
            self.draw_menu()
            Layer.update()

        return None

    def draw_menu(self):
        offset = 0
        for button in self.buttons:
            self.surface.blit(button, ((self.surface.get_width() - button.get_width()) / 2,
                                       (self.surface.get_height() - button.get_height()) / 2 + offset))
            offset += button.get_height() + GameConfig.MENU_TEXT_OFFSET

    def mouse_movement_event(self, event):
        for button in self.buttons:
            if button.get_rect(left=self.surface.get_width() - 100).collidepoint(event.pos):
                print button

    def quit(self, event):
        self.exit = True