Пример #1
0
        //剧情脚本模板加载回调
        private void ScriptTemplateLoaded(TextAsset textObj)
        {
            if (null == textObj)
            {
                return;
            }

            string triggerName = "triggerTable>0>trigger";

            XMLNode rootNode = XMLParser.Parse(textObj.ToString());

            foreach (XMLNode triggerNode in rootNode.GetNodeList(triggerName))
            {
                string scriptName = triggerNode.GetValue("@scriptName");
                string type       = triggerNode.GetValue("@type");

                ScriptBaseEntry baseEntry = StoryFactory.GetEntry(type);
                if (null != baseEntry)
                {
                    baseEntry.ScriptName = scriptName;
                    baseEntry.ParseNode(triggerNode);
                    scriptEntryList.Add(baseEntry);
                }
            }
        }
Пример #2
0
        public bool StoryExits(ScriptBaseEntry baseEntry)
        {
            foreach (ScriptBaseEntry entry in scriptEntryList)
            {
                if (entry.Equals(baseEntry))
                {
                    return(true);
                }
            }

            return(false);
        }
Пример #3
0
        public override bool Equals(object other)
        {
            ScriptBaseEntry otherBaseEntry = other as ScriptBaseEntry;

            if (null != otherBaseEntry)
            {
                return(LevelMatch());
            }
            else
            {
                return(false);
            }
        }
Пример #4
0
        //获得脚本Action数据
        public void LoadActionData(ScriptBaseEntry baseEntry, LoadActionData loadDataCallback)
        {
            //如果正在加载剧情数据,则不能播放下一个剧情
            if (loadingData)
            {
                if (null != loadDataCallback)
                {
                    loadDataCallback();
                }

                return;
            }

            loadingData    = true;
            curScriptEntry = null;

            foreach (ScriptBaseEntry entry in scriptEntryList)
            {
                if (entry.Equals(baseEntry))
                {
                    curScriptEntry = entry;
                    actionList.Clear();

                    //加载Action数据
                    this.loadActionDataCallback = loadDataCallback;
                    string scriptUrl = UrlUtils.GetStoryScriptUrl(entry.ScriptName);
                    AssetManager.Instance.LoadAsset <TextAsset>(scriptUrl, ScriptLoaded);
                    break;
                }
            }

            //处理脚本不存在情况
            if (null == curScriptEntry)
            {
                loadingData = false;

                if (null != loadDataCallback)
                {
                    loadDataCallback();
                }
            }
        }