diff options
Diffstat (limited to 'pycameltris/screens/Pause.py')
-rw-r--r-- | pycameltris/screens/Pause.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/pycameltris/screens/Pause.py b/pycameltris/screens/Pause.py new file mode 100644 index 0000000..f9f8859 --- /dev/null +++ b/pycameltris/screens/Pause.py @@ -0,0 +1,34 @@ +import contextlib +import sys + +import pygame + +from ..controller import KeyboardController, JoystickController, Input +from ..misc import UnPause + + +def handle_input_pressed(controller, event): + if controller.get_input_down(event) == Input.PAUSE: + raise UnPause() + + +class Pause: + def __init__(self, screen): + self.event_handler = dict() + + self.event_handler[pygame.QUIT] = lambda _: sys.exit() + self.event_handler[pygame.JOYBUTTONDOWN] = lambda evt: handle_input_pressed(JoystickController(evt.joy), evt) + self.event_handler[pygame.KEYDOWN] = lambda evt: handle_input_pressed(KeyboardController(pygame.key), evt) + + + def refresh(self): + pass + + def oneframe(self): + try: + for event in pygame.event.get(): + with contextlib.suppress(KeyError): + self.event_handler[event.type](event) + except UnPause: + pygame.event.clear() + raise |