diff --git a/Assets/Scripts/GlobalBehaviour.cs b/Assets/Scripts/GlobalBehaviour.cs index 9de3f3b6e8d29ae9fe8f91b53d3c84ad6d81f71a..a356eaa98c1ad2a2e41098f2faf7e90d1c539940 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 1f23ea11439d4969b75b01029afc3e9956c29dd3..fe4860619cfe8edafb42282c5284b2d2e6b00ced 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 1aa4f8bf94243fd91884e77590ac41154959cc57..454378108c3797141db39d3fdf6690ee5206e468 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