From 238488fbf472765cc8e69e3de57c8c82db709ff7 Mon Sep 17 00:00:00 2001
From: Janos <janol55@zedat.fu-berlin.de>
Date: Thu, 21 Mar 2024 14:08:46 +0100
Subject: [PATCH] Korrekte Fehlerbehandlung und das Spiel wird immer richtig
 verlassen

---
 main.c         | 10 ++++++++--
 menu2.c        | 11 +++++------
 menu2.h        |  2 +-
 title_screen.c |  2 +-
 4 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/main.c b/main.c
index 6a97d0f..41919d0 100644
--- a/main.c
+++ b/main.c
@@ -48,10 +48,13 @@ int main(void) {
     }
 
     //Lädt den Titelbildschirm
-    title_screen(renderer);
+    if (title_screen(renderer)){
+        exitGame(renderer,window);
+        return(0);
+    }
 
     int theme; 
-    bool change_Map = true;
+    int change_Map = 1;
 
     while (true) {
         if (change_Map){
@@ -63,6 +66,9 @@ int main(void) {
         if (gameLoop(theme,renderer))
             break;
         change_Map = end_screen(renderer);
+        if (change_Map == 2 || change_Map == -1){
+            break;
+        }
 
     }
     
diff --git a/menu2.c b/menu2.c
index 5724d76..3a1df1a 100644
--- a/menu2.c
+++ b/menu2.c
@@ -206,7 +206,7 @@ enum vehicle startscreen(SDL_Renderer* renderer){
 Vorb.: Das Spiel ist angehalten und es wird "Nochmal (y)/(n)" angezeigt 
 Nachb.: Das Spiel wird erneut gestartet, wenn y gedrückt wird. Wenn n gedrückt wird, wird die Levelauswahl geöffnet
 */
-bool end_screen(SDL_Renderer* renderer) {
+int end_screen(SDL_Renderer* renderer) {
 
 //Schriftart, -farbe und -groesse festesetzen
 
@@ -258,24 +258,23 @@ bool end_screen(SDL_Renderer* renderer) {
       switch (e.type) {
       //fclose(my_file);
       case SDL_QUIT:
-          exit(0);
+          return(2); // Spiel wird geschlossen
       case SDL_KEYDOWN:
           input = e.key.keysym.scancode;
           if (input == y) {
             SDL_FreeSurface(surfaceMessage);
             SDL_DestroyTexture(Message);
-            quit = true;
-            return(false);
+            return(0);
           }
           
           if (input == n) {
             SDL_FreeSurface(surfaceMessage);
             SDL_DestroyTexture(Message);
-            return(true);
+            return(1);
           }
       }
     }
   }
-  return(true);
+  return(1);
 }
 
diff --git a/menu2.h b/menu2.h
index a7c9e28..f5a679d 100644
--- a/menu2.h
+++ b/menu2.h
@@ -15,7 +15,7 @@
 
 
 //Declaration of functions
-bool end_screen(SDL_Renderer*);
+int end_screen(SDL_Renderer*);
 
 enum vehicle startscreen(SDL_Renderer*);
 
diff --git a/title_screen.c b/title_screen.c
index 89f6873..206acda 100644
--- a/title_screen.c
+++ b/title_screen.c
@@ -100,7 +100,7 @@ int title_screen(SDL_Renderer* renderer){
         while (SDL_PollEvent(&e)) {
           switch (e.type) {
           case SDL_QUIT:
-              exit(0);
+              return(1);
           case SDL_KEYDOWN:
             return(0);
           }
-- 
GitLab