public static void SetContent(NodeModifier node, NodeContent content) { node.RemoveFromContent(); node.DeleteParent(); node.SetContent(content); }
protected override void OnLoaded(BinaryReader r) { //清空当前容器节点,避免被重复添加 _contenNodeList.Clear(); base.OnLoaded(r); bool running = r.ReadBoolean(); //恢复初始节点 int count = r.ReadInt32(); for (int i = 0; i < count; i++) { string fullName = r.ReadString(); NodeModifier node = ReflectionHelper.CreateInstance <NodeModifier>(fullName); if (node == null) { node = ReflectionHelper.CreateInstance <NodeModifier>("CryStory.Runtime.MissingNode"); //It's mission //return; } node.SetContent(this); node.Deserialize(r); NodeModifier.SetContent(node, this); } if (running) { //恢复运行节点(以ID为主) count = r.ReadInt32(); List <NodeModifier> runningNode = new List <NodeModifier>(); for (int i = 0; i < count; i++) { for (int j = 0; j < _contenNodeList.Count; j++) { NodeModifier node = _contenNodeList[j].GetNextNodeByID(r.ReadInt32()); if (node != null) { runningNode.Add(node); break; } } } //装填缓存节点 _tempNodeList = _contenNodeList.ToArray(); //移除初始节点 for (int i = 0; i < _tempNodeList.Length; i++) { RemoveContenNode(_tempNodeList[i]); } //重新加入已运行节点 for (int i = 0; i < runningNode.Count; i++) { AddContentNode(runningNode[i]); } } if (OnNodeLoaded != null) { OnNodeLoaded.Invoke(this); } }
public static void SetContent(NodeModifier node, NodeContent content) { node.RemoveFromContent(); node.DeleteParent(); node.SetContent(content); }
public void Load() { if (_SaveData.Length > 0) { using (MemoryStream ms = new MemoryStream(_SaveData)) { using (BinaryReader r = new BinaryReader(ms)) { float ver = r.ReadSingle(); if (ver != Story.SaveVersion) { Debug.LogError("Error:Archive data version not same! Curent: " + Story.SaveVersion + " Data: " + ver); } string storyData = r.ReadString(); _story = JsonUtility.FromJson <Story>(storyData); _story.LoadOnlyThisNode(r); } } } if (_story == null) { _story = new Story(); } for (int i = 0; i < _missionSaveList.Count; i++) { MissionData data = _missionSaveList[i]; if (!data.MissionObject) { Debug.Log("Mission Not Found: " + data.Name); continue; } data.MissionObject.Load(); data.MissionObject._mission._name = data.Name; NodeModifier.SetContent(data.MissionObject._mission, _story); } //设置已连接的节点 for (int i = 0; i < _missionSaveList.Count; i++) { MissionData data = _missionSaveList[i]; if (!data.MissionObject) { continue; } if (data.MissionObject._nextMissionNodeList.Count > 0) { foreach (var item in data.MissionObject._nextMissionNodeList) { MissionData next = GetMissionSaveDataByName(item.Name); if (next == null) { continue; } if (next.MissionObject == null) { continue; } if (item.IsSingleNode) { data.MissionObject._mission.AddNextNode(next.MissionObject._mission); } else { Mission.SetParent(next.MissionObject._mission, data.MissionObject._mission); } } } } }