using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Xml; using UnityEngine; namespace HxGame.Data { public class JuBaoConfig { public int id; //聚宝id public int killCount; //击杀数量 public int interval; //间隔时间 public string curCount; //当前数量 public string refreshCount; //刷新数量 public Vector2Int pos; //刷怪中心点 public int radius; //半径 } public class JuBaosConfig { public List jubaoConfigs = new List(); public void SaveXML(int mapId) { string path = PathUtil.GetXmlPath(mapId, "JuBaosConfig"); string tmp = path.Substring(0, path.LastIndexOf('/')); if (!Directory.Exists(tmp)) Directory.CreateDirectory(tmp); if (File.Exists(path)) File.Delete(path); XmlDocument xml = new XmlDocument(); XmlDeclaration node = xml.CreateXmlDeclaration("1.0", "utf-8", "no"); xml.AppendChild(node); XmlElement Root = xml.CreateElement("config"); xml.AppendChild(Root); XmlElement xmlSettings = xml.CreateElement("Settings");//节点Settings xml.DocumentElement.AppendChild(xmlSettings); xmlSettings.SetAttribute("mapID", mapId.ToString()); XmlElement JuBaos = xml.CreateElement("JuBaos");//节点Settings xml.DocumentElement.AppendChild(JuBaos); SaveJuBaos(xml, JuBaos); xml.Save(path); UIWindow.Instance.ShowMessage("保存聚宝配置成功"); } private void SaveJuBaos(XmlDocument xml, XmlElement xmlElement) { XmlElement child = null; for (int i = 0; i < jubaoConfigs.Count; i++) { child = xml.CreateElement("JuBao"); child.SetAttribute("id", jubaoConfigs[i].id.ToString()); child.SetAttribute("killCount", jubaoConfigs[i].killCount.ToString()); child.SetAttribute("interval", jubaoConfigs[i].interval.ToString()); child.SetAttribute("curCount", jubaoConfigs[i].curCount.ToString()); child.SetAttribute("refreshCount", jubaoConfigs[i].refreshCount.ToString()); child.SetAttribute("indexX", jubaoConfigs[i].pos.x.ToString()); child.SetAttribute("indexY", jubaoConfigs[i].pos.y.ToString()); child.SetAttribute("radius", jubaoConfigs[i].radius.ToString()); xmlElement.AppendChild(child); } } public bool LoadXML(int mapId) { string path = PathUtil.GetXmlPath(mapId, "JuBaosConfig"); if (!File.Exists(path)) { UIWindow.Instance.ShowMessage("没有找到副本配置文件"); return false; } XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(path); XmlNode xmlRoot = xmlDocument.SelectSingleNode("config"); XmlNode xmlSettings = xmlRoot.SelectSingleNode("Settings"); int id = Convert.ToInt32(xmlSettings.Attributes.GetNamedItem("mapID").Value); if (id != mapId) { UIWindow.Instance.ShowMessage("地图ID错误,请检查副本配置文件"); return false; } XmlNode xmlJuBaos = xmlRoot.SelectSingleNode("JuBaos"); LoadJuBaos(xmlJuBaos); return true; } private void LoadJuBaos(XmlNode xmlNodes) { if (xmlNodes == null) return; XmlNode xmlNode = null; XmlNodeList xmlNodeList = xmlNodes.ChildNodes; int x, y; for (int i = 0; i < xmlNodeList.Count; i++) { xmlNode = xmlNodeList.Item(i); if (xmlNode.Name != "JuBao") continue; JuBaoConfig mc = new JuBaoConfig(); mc.id = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("id").Value); mc.killCount = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("killCount").Value); mc.interval = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("interval").Value); mc.curCount = xmlNode.Attributes.GetNamedItem("curCount").Value; mc.refreshCount = xmlNode.Attributes.GetNamedItem("refreshCount").Value; x = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("indexX").Value); y = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("indexY").Value); mc.pos = new Vector2Int(x, y); mc.radius = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("radius").Value); jubaoConfigs.Add(mc); } } } }