diff options
author | Olivier Gayot <olivier.gayot@sigexec.com> | 2021-03-13 12:34:08 +0100 |
---|---|---|
committer | Olivier Gayot <olivier.gayot@sigexec.com> | 2021-03-13 16:29:50 +0100 |
commit | 6f6b6ceb8a1bca2d7ab08528ddb64f49e71b7283 (patch) | |
tree | 4502eb5acb6bd5c313ceae057a9060b7ffed2e84 /pycameltris/screens/Pause.py | |
parent | 11ed646b1fa625e746a935762ed5ff03f1de05c0 (diff) |
Allow to pause the game
Signed-off-by: Olivier Gayot <olivier.gayot@sigexec.com>
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 |