summaryrefslogtreecommitdiff
path: root/pycameltris/screens/Pause.py
diff options
context:
space:
mode:
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