// 解析功能触发器 private void ParseFunctionTrigger(XmlNode node) { FunctionTrigger trigger = new FunctionTrigger(mScene); trigger.name = node.Attributes["name"].Value; XmlNodeList nodeList = node.ChildNodes; for (int i = 0; i < nodeList.Count; ++i) { XmlNode childNode = nodeList[i]; if (childNode != null && childNode.Name == "Step") { FunctionTriggerStep step = new FunctionTriggerStep(); step.time = System.Convert.ToInt32(childNode.Attributes["time"].Value); XmlNodeList stepList = childNode.ChildNodes; for (int j = 0; j < nodeList.Count; ++j) { XmlNode stepNode = stepList[j]; if (stepNode != null && stepNode.Name == "FuncTrigger") { FunctionTriggerInfo info = new FunctionTriggerInfo(); info.funcname = stepNode.Attributes["function"].Value; step.functions.Add(info); } else if (stepNode != null && stepNode.Name == "TimeTrigger") { TimeTriggerInfo info = new TimeTriggerInfo(); info.mTotalTime = step.time; step.times.Add(info); } } trigger.steps.Add(step); } } mTriggers.Add(trigger.name, trigger); }
private void DoNext(int next) { FunctionTriggerStep step = steps[next] as FunctionTriggerStep; if (step == null || (step.functions.Count < 1 && step.times.Count < 1)) { return; } for (int i = 0; i < step.functions.Count; ++i) { FunctionTriggerInfo info = step.functions[i] as FunctionTriggerInfo; SceneManager.Instance.InvokeFunction(info.funcname); } for (int i = 0; i < step.times.Count; ++i) { TimeTriggerInfo info = step.times[i] as TimeTriggerInfo; SceneManager.Instance.SetCountDown(info.mTotalTime); } step.curTime = 0; }