From 98963ba0bb151e31764550f323030e673e9f6a69 Mon Sep 17 00:00:00 2001
From: MaZiFAU <marco.alexander.zimmer@fau.de>
Date: Fri, 24 Sep 2021 13:24:08 +0200
Subject: [PATCH] fixed level creation/ instantiation

---
 .../FactHandling/SolutionOrganizer.cs              | 14 ++++++++++----
 Assets/Scripts/Loading/Stage.cs                    |  5 +++--
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs b/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs
index 329ae8bf..0126fd20 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs
@@ -89,7 +89,7 @@ public List<Fact> getMasterFactsByIndex (int i)
         return ValidationSet[i].MasterIDs.Select(id => this[id]).ToList();
     }
 
-    public new void store(string name, List<Directories> hierarchie = null, bool use_install_folder = false)
+    public new void store(string name, List<Directories> hierarchie = null, bool use_install_folder = false, bool overwrite = true)
     {
         hierarchie ??= new List<Directories>();
         hierarchie.AddRange(hierVal.AsEnumerable());
@@ -97,11 +97,17 @@ public List<Fact> getMasterFactsByIndex (int i)
         base.store(name + endingSol, hierarchie, use_install_folder);
 
         string path_o = path_Val;
-        path_Val = CreatePathToFile(out _, name + endingVal, "JSON", hierarchie, use_install_folder);
+        path_Val = CreatePathToFile(out bool exists, name + endingVal, "JSON", hierarchie, use_install_folder);
+        hierarchie.RemoveRange(hierarchie.Count - hierVal.Count, hierVal.Count);
+
+        if (exists && !overwrite)
+        {
+            path_Val = path_o;
+            return;
+        }
+
         JSONManager.WriteToJsonFile(path_Val, this.ValidationSet, 0);
         path_Val = path_o;
-
-        hierarchie.RemoveRange(hierarchie.Count - hierVal.Count, hierVal.Count);
     }
 
     public static bool load(ref SolutionOrganizer set, bool draw, string name, List<Directories> hierarchie = null, bool use_install_folder = false)
diff --git a/Assets/Scripts/Loading/Stage.cs b/Assets/Scripts/Loading/Stage.cs
index 87ec2f07..f63431ef 100644
--- a/Assets/Scripts/Loading/Stage.cs
+++ b/Assets/Scripts/Loading/Stage.cs
@@ -274,8 +274,9 @@ public void store(bool reset_player = false)
             path = path_o;
 
             hierarchie.AddRange(hierStage.AsEnumerable());
-            if(solution != null && solution.ValidationSet.Count > 0 && !solution.ValidationSet.Aggregate(false, (last, next) => last || next.IsEmpty()))
-                solution.store(name, hierarchie, use_install_folder);
+            if(solution != null)
+                solution.store(name, hierarchie, use_install_folder,
+                    overwrite: solution.ValidationSet.Count > 0 && !solution.ValidationSet.Aggregate(false, (last, next) => last || next.IsEmpty()));
         }
 
         if (player_record != null)
-- 
GitLab