From a4008a5ca47d01b50f77bac1e4a77805471a2ed5 Mon Sep 17 00:00:00 2001
From: MaZiFAU <marco.alexander.zimmer@fau.de>
Date: Sat, 16 Jul 2022 14:34:17 +0200
Subject: [PATCH] JSON but not possessed?

---
 Assets/Scripts/GlobalBehaviour.cs             |  2 +-
 .../FactHandling/FactOrganizer.cs             | 21 ++++++++++++-------
 .../FactHandling/SolutionOrganizer.cs         |  9 +-------
 3 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/Assets/Scripts/GlobalBehaviour.cs b/Assets/Scripts/GlobalBehaviour.cs
index 9de3f3b6..a356eaa9 100644
--- a/Assets/Scripts/GlobalBehaviour.cs
+++ b/Assets/Scripts/GlobalBehaviour.cs
@@ -36,7 +36,7 @@ public class GlobalBehaviour : MonoBehaviour
 
     void Awake()
     {
-        //GenerateDemoFiles.GenerateAll();
+        // GenerateDemoFiles.GenerateAll();
 
         hintAnimationStartColor = _hintAnimationStartColor;
         hintAnimationEndColor = _hintAnimationEndColor;
diff --git a/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs b/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs
index 1f23ea11..fe486061 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/FactOrganizer.cs
@@ -211,17 +211,22 @@ public FactOrganizer(bool invoke = false)
     /// <param name="source">instance to be parsed</param>
     /// <param name="invoke">see <see cref="invoke"/></param>
     /// <param name="old_to_new">generated to map <c>Key</c> <see cref="Fact.Id"/> of <paramref name="source"/> to corresponding <c>Value</c> <see cref="Fact.Id"/> of <paramref name="target"/></param>.
-    protected static void ReInitializeFactOrganizer(ref FactOrganizer target, FactOrganizer source, bool invoke, out Dictionary<string, string> old_to_new)
+    protected static T ReInitializeFactOrganizer<T>
+        (FactOrganizer source, bool invoke, out Dictionary<string, string> old_to_new)
+         where T : FactOrganizer, new()
     {
         // TODO: other strategy needed when MMT save/load supported
         // map old URIs to new ones
         old_to_new = new Dictionary<string, string>();
-        
+
         // initiate
-        target.invoke = invoke;
-        target.MaxLabelId = source.MaxLabelId;
-        target.UnusedLabelIds = source.UnusedLabelIds;
-        target.FactDict = new Dictionary<string, Fact>();
+        T target = new T()
+        {
+            invoke = invoke,
+            MaxLabelId = source.MaxLabelId,
+            UnusedLabelIds = source.UnusedLabelIds,
+            FactDict = new Dictionary<string, Fact>(),
+        };
 
         // work Workflow
         foreach (var sn in source.Workflow)
@@ -259,8 +264,10 @@ protected static void ReInitializeFactOrganizer(ref FactOrganizer target, FactOr
             target.undo();
 
         target.soft_resetted = source.soft_resetted;
+        return target;
     }
 
+
     /// <summary>
     /// wrappes <c><see cref="FactDict"/>[<paramref name="id"/>]</c>
     /// <seealso cref="ContainsKey(string)"/>
@@ -697,7 +704,7 @@ public static bool load(ref FactOrganizer set, bool draw, string name, List<Dire
             return false;
 
         FactOrganizer de_json = JSONManager.ReadFromJsonFile<FactOrganizer>(path);
-        ReInitializeFactOrganizer(ref set, de_json, draw, out old_to_new);
+        set = ReInitializeFactOrganizer<FactOrganizer>(de_json, draw, out old_to_new);
         set.path = path;
 
         return true;
diff --git a/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs b/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs
index 1aa4f8bf..45437810 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/SolutionOrganizer.cs
@@ -177,16 +177,9 @@ public static bool load(ref SolutionOrganizer set, bool draw, string name, List<
         if (!loadable)
             return false;
 
-
-        FactOrganizer save = StageStatic.stage.factState;
-        StageStatic.stage.factState = new SolutionOrganizer(false) as FactOrganizer;
-
         SolutionOrganizer JsonTmp = JSONManager.ReadFromJsonFile <SolutionOrganizer> (path);
-        ReInitializeFactOrganizer(ref StageStatic.stage.player_record.factState, JsonTmp, draw, out Dictionary<string, string> old_to_new);
-
-        set = (SolutionOrganizer)StageStatic.stage.factState;
+        set = ReInitializeFactOrganizer<SolutionOrganizer>(JsonTmp, draw, out Dictionary<string, string> old_to_new);
         set.path = path;
-        StageStatic.stage.factState = save;
 
         foreach (var element in JsonTmp.ValidationSet)
         // Parse and add
-- 
GitLab