""" mainmenu.mainmenu - Let's user choose """ from enum import IntEnum import pygame from screens import mainmenu_screen from game.anykey import anykey class MenuItems(IntEnum): """ Items in the menu. Should match mainmenu_screen """ NEWGAME = 0 HISCORES = 1 INSTRUCT = 2 QUIT = 3 class Mainmenu(pygame.sprite.Group): """ sprite group with imputs to make selection """ def __init__(self): super().__init__() self.add(mainmenu_screen(0)) self.explode = False self.active = True self.fadeout = 1_000 self.selection = 0 def update(self, dt = 0): """ Does it all. Reads keyboard and updates screen """ if not self.active: return if self.explode: for sprite in self.sprites(): sprite.update(dt = dt, explode = self.explode) if self.fadeout <= 0: self.active = False else: if anykey(): self.fadeout = 0 self.active = False self.fadeout -= dt return for event in pygame.event.get(): if event.type == pygame.QUIT: self.selection = MenuItems.QUIT self.explode = True break if event.type == pygame.KEYDOWN: match event.key: case pygame.K_KP_ENTER | pygame.K_RETURN | pygame.K_RIGHT: self.explode = True break case pygame.K_ESCAPE | pygame.K_q | pygame.K_LEFT: self.selection = MenuItems.QUIT self.explode = True break case pygame.K_UP: self.selection -= 1 self.selection %= len(MenuItems) case pygame.K_DOWN: self.selection += 1 self.selection %= len(MenuItems) self.empty() self.add(mainmenu_screen(self.selection))