summaryrefslogtreecommitdiff
path: root/pycameltris/screens/Pause.py
diff options
context:
space:
mode:
authorOlivier Gayot <olivier.gayot@sigexec.com>2021-03-13 12:34:08 +0100
committerOlivier Gayot <olivier.gayot@sigexec.com>2021-03-13 16:29:50 +0100
commit6f6b6ceb8a1bca2d7ab08528ddb64f49e71b7283 (patch)
tree4502eb5acb6bd5c313ceae057a9060b7ffed2e84 /pycameltris/screens/Pause.py
parent11ed646b1fa625e746a935762ed5ff03f1de05c0 (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.py34
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