From 97c7ef0c29f6e361a2699410dcc2c46c87cdf70f Mon Sep 17 00:00:00 2001
From: fheinrich <fheinrich@techfak.uni-bielefeld.de>
Date: Mon, 18 Dec 2023 13:54:27 +0100
Subject: [PATCH] Program should exit better now. Catches KeyboardInterrupt in
 pygame_gui.py and quits properly

---
 overcooked_simulator/pygame_gui/pygame_gui.py | 27 ++++++++++++-------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/overcooked_simulator/pygame_gui/pygame_gui.py b/overcooked_simulator/pygame_gui/pygame_gui.py
index 06310948..f303bebb 100644
--- a/overcooked_simulator/pygame_gui/pygame_gui.py
+++ b/overcooked_simulator/pygame_gui/pygame_gui.py
@@ -1,5 +1,6 @@
 import colorsys
 import math
+import sys
 
 import numpy as np
 import numpy.typing as npt
@@ -401,15 +402,21 @@ class PyGameGUI:
         # Game loop
         running = True
         while running:
-            for event in pygame.event.get():
-                if event.type == pygame.QUIT:
-                    running = False
-                if event.type in [pygame.KEYDOWN, pygame.KEYUP]:
-                    self.handle_key_event(event)
-
-            self.handle_keys()
-            clock.tick(self.FPS)
-            state = self.simulator.get_state()
-            self.draw(state)
+            try:
+                for event in pygame.event.get():
+                    if event.type == pygame.QUIT:
+                        running = False
+                    if event.type in [pygame.KEYDOWN, pygame.KEYUP]:
+                        self.handle_key_event(event)
+
+                self.handle_keys()
+                clock.tick(self.FPS)
+                state = self.simulator.get_state()
+                self.draw(state)
+
+            except KeyboardInterrupt:
+                pygame.quit()
+                self.simulator.stop()
+                sys.exit()
 
         pygame.quit()
-- 
GitLab