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
- ConfigReader(八)—— ReadDailyTaskConfig
- ConfigReader(六十)—— ConfigReader
- Commom(十)—— ConfigReader
- ConfigReader(一)—— MapConfig
- ConfigReader(二)—— MapLoadConfig
- ConfigReader(三)—— ReadAdvancedGuideConfig
- ConfigReader(四)—— ReadBuffConfig
- ConfigReader(五)—— ReadBuySkinConfig
- ConfigReader(六)—— ReadCombineConfig
- ConfigReader(七)—— ReadDailyBonusConfig
- ConfigReader(九)—— ReadGuideAbsorbTaskConfig
- ConfigReader(十)—— ReadGuideBornNpcTaskConfig
- ConfigReader(十一)—— ReadGuideCameraTaskConfig
- ConfigReader(十二)—— ReadGuideClickButtonTaskConfig
- ConfigReader(十三)—— ReadGuideFlashTaskConfig
- ConfigReader(十四)—— ReadGuideHelpConfig
- ConfigReader(十五)—— ReadGuideKillHeroTaskConfig
- ConfigReader(十六)—— ReadGuideKillNpcTaskConfig
- getsystemservice之NotificationManager
- SDUT 3398 数据结构实验之排序一:一趟快排
- thinkphp3.2框架的四种路由形式
- LeetCode78 SubSets
- JQuery的图片的切换和自动轮播
- ConfigReader(八)—— ReadDailyTaskConfig
- oracle导入dmp大文件流程记录:
- Latex error "Not enough room in an internal buffer" 解决方法
- C语言自动类型转换
- 运维之高级服务篇------1. 运维概述 、 Squid代理服务器 、 Varnish服务器
- 在Centos6.6下编译安装最新apache
- K-近邻算法(kNN)
- 看图说话排序算法之快速排序
- 【笔记】《WebGL编程指南》学习-第6章着色器语言(2-矢量和矩阵)