Browse Source

Fixed story module bugs

James Peret 2 years ago
parent
commit
9b861e7db5
2 changed files with 17 additions and 19 deletions
  1. 4 4
      Runtime/StoryController.cs
  2. 13 15
      Runtime/StorySystemModule.cs

+ 4 - 4
Runtime/StoryController.cs

@@ -57,10 +57,10 @@ namespace KairoEngine.StorySystem
             EventManager.broadcast.StartListening(name, SelectStoryBranch);
             EventManager.broadcast.StartListening(name, PublishStorylineToObservers);
             if(logText) Debug.Log($"Starting {name}");
-            story.BindExternalFunction ("WaitForTime", (int time) => Wait(time), false);
-            story.BindExternalFunction ("Enable", (string name) => EnableGameObject(name), false);
-            story.BindExternalFunction ("Disable", (string name) => DisableGameObject(name), false); 
-            story.BindExternalFunction ("TriggerEvent", (string name) => GenericEvents.Trigger(name), false);
+            story.BindExternalFunction ("WaitForTime", (int time) => { Wait(time); if(logText) Debug.Log($"Waiting {time}"); }, false);
+            story.BindExternalFunction ("Enable", (string name) => { EnableGameObject(name); if(logText) Debug.Log($"Enabling {name}");  }, false);
+            story.BindExternalFunction ("Disable", (string name) => { DisableGameObject(name); if(logText) Debug.Log($"Disabling {name}"); }, false); 
+            story.BindExternalFunction ("TriggerEvent", (string name) => { GenericEvents.Trigger(name); if(logText) Debug.Log($"Triggering event {name}"); }, false);
             var storyStream = Observable.Interval(TimeSpan.FromMilliseconds(250))
                 //.Where(_ => wait == false)
                 .Subscribe(_ => StoryLoop())

+ 13 - 15
Runtime/StorySystemModule.cs

@@ -20,7 +20,7 @@ namespace KairoEngine.StorySystem
     public class StoryObject : System.Object
     {
         [HorizontalGroup("line", 0.3f), HideLabel] public string name;
-        [HorizontalGroup("line", 0.7f), HideLabel, NonSerialized] public GameObject prefab;
+        [HorizontalGroup("line", 0.7f), HideLabel] public GameObject prefab;
         [HideInInspector, NonSerialized] public GameObject instance;
     }
 
@@ -57,6 +57,10 @@ namespace KairoEngine.StorySystem
         {
             if(storyObjects.Count > 0) storyObjectsContainer = new GameObject("StoryObjects").transform;
             if(storyObjectsContainer != null) storyObjectsContainer.transform.parent = parent;
+        }
+
+        public override void Start()
+        {
             if(startType == StoryInitType.OnLoad) LoadStory(storyObjectsContainer);
             else if(startType == StoryInitType.OnEvent) GenericEvents.StartListening(eventStartName, () => LoadStory(storyObjectsContainer));
         }
@@ -96,35 +100,29 @@ namespace KairoEngine.StorySystem
 
         public override void OnBeforeSerialize(ObjectSerializer serializer) 
         { 
-            if(inkJSONAsset) serializer.objects.Add("inkJSONAsset", inkJSONAsset);
-            if(storyObjectsContainer != null) serializer.gameObjecs.Add("storyObjectsContainer", storyObjectsContainer.gameObject);
-            if(storyController != null) serializer.objects.Add("storyController", storyController);
+            if(inkJSONAsset != null) serializer.AddUnityObject("inkJSONAsset", inkJSONAsset);
+            if(storyObjectsContainer != null) serializer.AddGameObject("storyObjectsContainer", storyObjectsContainer.gameObject);
+            if(storyController != null) serializer.AddObject("storyController", storyController);
             storyObjectsCount = storyObjects.Count;
             for (int i = 0; i < storyObjects.Count; i++)
             {
-                serializer.objects.Add($"storyObjects_{i}", storyObjects[i]);
+                serializer.AddObject($"storyObjects_{i}", storyObjects[i]);
             }
         }
 
         public override void OnBeforeDeserialize(ObjectSerializer serializer) 
         { 
             // inkJSONAsset
-            object obj = null;
-            serializer.objects.TryGetValue("inkJSONAsset", out obj);
-            if(obj != null) inkJSONAsset = (TextAsset)obj;
+            inkJSONAsset =  (TextAsset)serializer.GetUnityObject("inkJSONAsset");
             // storyObjectsContainer
-            GameObject gameObject = null;
-            serializer.gameObjecs.TryGetValue("storyObjectsContainer", out gameObject);
+            GameObject gameObject = serializer.GetGameObject("storyObjectsContainer");
             if(gameObject != null) storyObjectsContainer = gameObject.transform;
             // storyController
-            obj = null;
-            serializer.objects.TryGetValue("storyController", out obj);
-            if(obj != null) storyController = (StoryController)obj;
+            storyController = (StoryController)serializer.GetObject("storyController");
             // storyObjects
             for (int i = 0; i < storyObjectsCount; i++)
             {
-                obj = null;
-                serializer.objects.TryGetValue($"storyObjects_{i}", out obj);
+                var obj = serializer.GetObject($"storyObjects_{i}");
                 if(obj != null) storyObjects.Add((StoryObject)obj);
             }
         }