Files
HX_MapEditor/Assets/Scripts/System/JuBaosConfig.cs
2025-06-14 13:46:24 +08:00

135 lines
4.8 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<JuBaoConfig> jubaoConfigs = new List<JuBaoConfig>();
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);
}
}
}
}