// 解析功能触发器
    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);
    }
示例#2
0
    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;
    }