]> git.mcshandy.xyz Git - barrow_crawler/commitdiff
Clean up old files on a New Game, and fix save loading.
authorRandy McShandy <randy@mcshandy.xyz>
Sun, 10 Aug 2025 01:25:25 +0000 (20:25 -0500)
committerRandy McShandy <randy@mcshandy.xyz>
Sun, 10 Aug 2025 01:25:25 +0000 (20:25 -0500)
src/menufuncs.c
src/utils.c

index 388e869472d668481c36a64cb91d94bf866882a7..26273b82d155f8dab6d389fcb146f6ce7fa5462e 100644 (file)
@@ -5,6 +5,7 @@
 #include <string.h>
 
 #include "structs.h"
+#include "utils.h"
 
 bool menu_action_MI_NONE()
 { return true; }
@@ -14,9 +15,11 @@ bool menu_action_MI_NEW_GAME()
   bool response = false;
   resource_state = RENDER_RESOURCE_WAIT;
 
+  /* Clean up previous run's files and the old save. */
+  cleanup_generated_files();
+
   pthread_create(&generation_info.generator_thread, NULL, generate_rd, NULL);
   pthread_detach(generation_info.generator_thread);
-  //pthread_join(generation_info.generator_thread, NULL);
 
   return response;
 }
@@ -25,24 +28,25 @@ bool menu_action_MI_LOAD_GAME()
 {
   bool response = false;
 
-  ProcessInfo* process = &processes[SAVE_FILE_LOAD];
-  process->state     = WAITING;
+  ProcessInfo* process  = &processes[SAVE_FILE_LOAD];
+  process->state        = WAITING;
 
   const int success = load_game();
 
   if ((success == 0 ) && timers[STATUS_TEXT_FADE_TIME].time == 0.0)
   {
     process->state = FINISHED;
+
+    memcpy(text_places[STATUS_TEXT_PLACE], process->info_text[process->state], 64);
+    timers[STATUS_TEXT_FADE_TIME].time = timers[STATUS_TEXT_FADE_TIME].max;
+
+    resource_state = CONTROL_RESOURCE_READY;
   }
   else if (success != 0)
   {
     process->state = BAD;
   }
 
-  memcpy(text_places[STATUS_TEXT_PLACE], process->info_text[process->state], 64);
-  timers[STATUS_TEXT_FADE_TIME].time = timers[STATUS_TEXT_FADE_TIME].max;
-
-  resource_state = CONTROL_RESOURCE_READY;
   return response;
 }
 
index a168ed081bf7e82f9594242aadc2d9d0ff1f4186..36c2faf767a309805b9f0af6be98a67e3bdf9342 100644 (file)
@@ -286,9 +286,30 @@ int save_game(PlaytimeData playtime)
   return success;
 }
 
-int load_game()
+int cleanup_generated_files()
 {
+  int success = -1;
+
+  success |= delete_save();
+  success |= remove("barrow.png");
+  success |= remove("barrow_albedo.png");
+  success |= remove("floor.png");
+  success |= remove("floor_albedo.png");
+
+  return success;
+}
 
+int delete_save()
+{
+  int success = -1;
+
+  success = remove("./save/save.dat");
+
+  return success;
+}
+
+int load_game()
+{
   int success = -1;
 
   FILE* save_file = fopen("./save/save.dat", "r");