summaryrefslogtreecommitdiff
path: root/src/sliceitoff/game/mainmenu.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sliceitoff/game/mainmenu.py')
-rw-r--r--src/sliceitoff/game/mainmenu.py68
1 files changed, 5 insertions, 63 deletions
diff --git a/src/sliceitoff/game/mainmenu.py b/src/sliceitoff/game/mainmenu.py
index 8db0536..fbd91c9 100644
--- a/src/sliceitoff/game/mainmenu.py
+++ b/src/sliceitoff/game/mainmenu.py
@@ -1,16 +1,10 @@
""" game.mainmenu - Let's user choose """
from enum import IntEnum
-import pygame
from sliceitoff.screens import mainmenu_screen
-from sliceitoff.display import Scaling
-from sliceitoff.sfx import sfx
+from .menu import Menu
-from .explodeout import ExplodeOutGroup
-
-MOUSE_TRESHOLD = 100
-
-class MenuItems(IntEnum):
+class MainMenuItems(IntEnum):
""" Items in the menu. Should match mainmenu_screen """
NEWGAME = 0
HISCORES = 1
@@ -18,59 +12,7 @@ class MenuItems(IntEnum):
SETTINGS = 3
QUIT = 4
-class Mainmenu(ExplodeOutGroup):
- """ sprite group with imputs to make selection """
+class MainMenu(Menu):
+ """ Main menu """
def __init__(self):
- super().__init__()
- self.add(mainmenu_screen(0))
- self.selection = 0
- self.mousey = 0
-
- def update(self, dt = 0, **kwargs):
- """ Does it all. Reads keyboard and updates screen """
- if not super().update(dt = dt, **kwargs) or self.explode:
- return
-
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- self.selection = MenuItems.QUIT
- self.do_fadeout()
- break
- if event.type == pygame.MOUSEBUTTONDOWN and event.button <= 3:
- self.do_fadeout()
- break
- if event.type == pygame.KEYDOWN:
- if self.process_key(event.key):
- break
- elif event.type == pygame.MOUSEMOTION:
- self.process_mouse_motion()
- self.empty()
- self.add(mainmenu_screen(self.selection))
-
- def process_mouse_motion(self):
- """ Mouse movement up or down moves menu selection """
- self.mousey += pygame.mouse.get_rel()[1]
- pygame.mouse.set_pos(Scaling.center)
- if abs(self.mousey) > MOUSE_TRESHOLD:
- self.selection += 1 if self.mousey > 0 else -1
- self.selection %= len(MenuItems)
- self.mousey = 0
-
- def process_key(self, key):
- """ Processes known key presses """
- match key:
- case pygame.K_KP_ENTER | pygame.K_RETURN | pygame.K_RIGHT:
- self.do_fadeout()
- return True
- case pygame.K_ESCAPE | pygame.K_q | pygame.K_LEFT:
- self.selection = MenuItems.QUIT
- self.do_fadeout()
- sfx.music(None)
- return True
- case pygame.K_UP:
- self.selection -= 1
- self.selection %= len(MenuItems)
- case pygame.K_DOWN:
- self.selection += 1
- self.selection %= len(MenuItems)
- return False
+ super().__init__(mainmenu_screen, len(MainMenuItems))