Пример #1
0
    public static CKillTask GetKillTaskInfo(int taskId)
    {
        if (CTaskBase.killTaskDic == null || CTaskBase.killTaskDic.Count == 0)
        {
            ReadGuideKillNpcTaskConfig guidTask = new ReadGuideKillNpcTaskConfig("Config/killnpc");
        }
        CKillTask task = null;

        if (!CTaskBase.killTaskDic.TryGetValue(taskId, out task))
        {
            Debug.LogError("新手引导击杀任务表中不存在任务id " + taskId);
        }
        return(task);
    }
    public ReadGuideKillNpcTaskConfig(string xmlFilePath)
    {
        //TextAsset xmlfile = Resources.Load(xmlFilePath) as TextAsset;
        ResourceUnit xmlfileUnit = ResourcesManager.Instance.loadImmediate(xmlFilePath, ResourceType.ASSET);
        TextAsset    xmlfile     = xmlfileUnit.Asset as TextAsset;

        if (!xmlfile)
        {
            Debug.LogError(" error infos: 没有找到指定的xml文件:" + xmlFilePath);
        }

        xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlfile.text);

        XmlNodeList infoNodeList = xmlDoc.SelectSingleNode("killnpc").ChildNodes;

        for (int i = 0; i < infoNodeList.Count; i++)     //(XmlNode xNode in infoNodeList)
        {
            if ((infoNodeList[i] as XmlElement).GetAttributeNode("id") == null)
            {
                continue;
            }

            string typeName = (infoNodeList[i] as XmlElement).GetAttributeNode("id").InnerText;

            CKillTask killInfo = new CKillTask();
            killInfo.TaskId   = Convert.ToInt32(typeName);
            killInfo.TaskType = GuideTaskType.KillTask;
            foreach (XmlElement xEle in infoNodeList[i].ChildNodes)
            {
                #region 搜索
                switch (xEle.Name)
                {
                case "deadtype":
                    killInfo.DeadType = (DeadType)Convert.ToInt32(xEle.InnerText);
                    break;

                case "deadnpcid":
                    killInfo.DeadId = Convert.ToInt32(xEle.InnerText);
                    break;

                case "times":
                    killInfo.DeadTimes = Convert.ToInt32(xEle.InnerText);
                    break;

                case "deadreason":
                    string reason = Convert.ToString(xEle.InnerText);
                    if (reason.IndexOf(',') != -1)
                    {
                        killInfo.KillReason = GameMethod.ResolveToIntList(reason);
                    }
                    else
                    {
                        killInfo.KillReason.Add(Convert.ToInt32(reason));
                    }
                    break;
                }
                #endregion
            }
            CTaskBase.killTaskDic.Add(killInfo.TaskId, killInfo);
        }
    }