ConfigReader(八)—— ReadDailyTaskConfig

来源:互联网 发布:neflix 淘宝账号 编辑:程序博客网 时间:2024/05/29 03:59
目录为:Assets/Scripts/ConfigReader/目录下ReadDailyTaskConfig.cs

这个类读取日常任务,成就相关的config
这里会读取两个配置文件:
配置文件1:DailyQuest:Assets/Resources/Config/DailyQuest.xml
部分如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><DailyQuest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">    <info id="1001">        <type>1</type>        <grade>1</grade>        <describe>双杀玩家222222222222222222</describe>        <task>14</task>        <amount>3</amount>        <award>1</award>        <number>100</number>    </info>

配置文件2: AchievementTask:Assets/Resources/Config/AchievementTask.xml
部分如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><AchievementTask xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">    <info id="1001001">        <type>0</type>        <NextID>1001002</NextID>        <describe>累积完成10场普通对战</describe>        <task>5</task>        <amount>1</amount>        <params>1001</params>        <award>1</award>        <number>20</number>    </info>

ConfigReader.cs

using System;using UnityEngine;using System.Xml;using System.Collections.Generic;//这个类读取日常任务,成就相关的config//这里会读取两个配置文件//配置文件1:DailyQuest:Assets/Resources/Config/DailyQuest.xml//配置文件2:AchievementTask:Assets/Resources/Config/AchievementTask.xml//其实这个类在两个地方使用了,每一个地方分别读取了一个配置文件public class ReadTaskConfig{    XmlDocument xmlDoc = null;    //构造函数    public ReadTaskConfig(string xmlFilePath, TASK_TIME_TYPE timeType)    {        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 = null;        //根据timeType来分辨是哪一个配置文件        if (timeType == TASK_TIME_TYPE.TTT_Daily)        {            infoNodeList = xmlDoc.SelectSingleNode ("DailyQuest").ChildNodes;        }        else if (timeType == TASK_TIME_TYPE.TTT_Infinite)        {            infoNodeList = xmlDoc.SelectSingleNode ("AchievementTask").ChildNodes;        }        for (int i = 0; i < infoNodeList.Count; i++)        {            XmlAttribute xmlAttr = (infoNodeList [i] as XmlElement).GetAttribute("id");            if (xmlAttr == null)            {                continue;            }            //STaskConfig            STaskConfig oneTask = new STaskConfig ();            oneTask.taskID = Convert.ToUInt32 (xmlAttr.InnerText);            foreach (XmlElement xEle in infoNodeList[i].ChildNodes)            {                switch (xEle.Name)                {                case "type":                    oneTask.taskTimeType = (TASK_TIME_TYPE)Convert.ToUInt32 (xEle.InnerText);                    break;                case "grade":                    oneTask.taskLevel = Convert.ToUInt32 (xEle.InnerText);                    break;                case "describe":                    oneTask.taskDesc = xEle.InnerText;                    break;                case "task":                    oneTask.taskType = (TASK_TYPE)Convert.ToUInt32 (xEle.InnerText);                    break;                case "amount":                    oneTask.taskMaxCount = Convert.ToUInt32 (xEle.InnerText);                    break;                case "award":                    oneTask.n32ItemID = xEle.InnerText.Split (new char[] { ',' });                    break;                case "number":                    oneTask.n32ItemNum = xEle.InnerText.Split (new char[] { ',' });                    break;                case "params":                    oneTask.taskParams = xEle.InnerText.Split (new char[] { ',' });                    break;                case "NextID":                    oneTask.nextTaskID = Convert.ToUInt32 (xEle.InnerText);                    break;                }            }            if (timeType == TASK_TIME_TYPE.TTT_Daily)            {                ConfigReader.dailyTaskXmlInfoDic.Add (oneTask.taskID, oneTask);            }            else if (timeType == TASK_TIME_TYPE.TTT_Infinite)            {                ConfigReader.infiniteTaskXmlInfoDic.Add (oneTask.taskID, oneTask);            }        }    }}//枚举值必须和服务器保持一一对应public enum TASK_TIME_TYPE{    TTT_Infinite,    TTT_Daily,}//枚举值必须和服务器保持一一对应public enum TASK_TYPE{    TT_None,    TT_KillPlayer,//击杀玩家    TT_KillXiaobin,//击杀小兵    TT_KillMonster,//击杀野怪    TT_KillBuild,//击杀建筑    TT_GamePaly,//进行一场游戏    TT_GameWin,//胜利一场游戏    TT_GameGetCP,//游戏获得CP    TT_GameUseCP,//游戏使用CP}public class STaskConfig{    public uint taskID;//当前任务ID    public uint nextTaskID;     //下一任务ID    public uint taskLevel;  //任务等级    public string taskDesc;     //任务描述    public TASK_TIME_TYPE taskTimeType;//任务时间类型    public TASK_TYPE taskType;  //任务类型    public uint taskMaxCount;//需求总量    public string[] taskParams; //格外参数    public string[] n32ItemID;  //奖励ID    public string[] n32ItemNum;     //奖励数量}
阅读全文
0 0