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