132 lines
4.6 KiB
C#
132 lines
4.6 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.IO;
|
||
using System.Xml;
|
||
using UnityEngine;
|
||
|
||
namespace HxGame.Data
|
||
{
|
||
public class FuBenConfig
|
||
{
|
||
public int order; //刷怪顺序
|
||
public int monsterId;
|
||
public Vector2Int pos; //刷怪中心点
|
||
public int radius; //半径
|
||
public int num; //数量
|
||
public int delayTime; //刷怪时间
|
||
}
|
||
|
||
public class FuBensConfig
|
||
{
|
||
public List<FuBenConfig> fubenConfigs = new List<FuBenConfig>();
|
||
|
||
public void SaveXML(int mapId)
|
||
{
|
||
string path = PathUtil.GetXmlPath(mapId, "FuBensConfig");
|
||
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 Fubens = xml.CreateElement("FuBens");//节点Settings
|
||
xml.DocumentElement.AppendChild(Fubens);
|
||
|
||
SaveFuBens(xml, Fubens);
|
||
|
||
xml.Save(path);
|
||
UIWindow.Instance.ShowMessage("保存副本配置成功");
|
||
}
|
||
|
||
private void SaveFuBens(XmlDocument xml, XmlElement xmlElement)
|
||
{
|
||
XmlElement child = null;
|
||
for (int i = 0; i < fubenConfigs.Count; i++)
|
||
{
|
||
child = xml.CreateElement("FuBen");
|
||
child.SetAttribute("order", fubenConfigs[i].order.ToString());
|
||
child.SetAttribute("monsterId", fubenConfigs[i].monsterId.ToString());
|
||
child.SetAttribute("indexX", fubenConfigs[i].pos.x.ToString());
|
||
child.SetAttribute("indexY", fubenConfigs[i].pos.y.ToString());
|
||
child.SetAttribute("radius", fubenConfigs[i].radius.ToString());
|
||
child.SetAttribute("num", fubenConfigs[i].num.ToString());
|
||
child.SetAttribute("delayTime", fubenConfigs[i].delayTime.ToString());
|
||
|
||
xmlElement.AppendChild(child);
|
||
}
|
||
}
|
||
|
||
public bool LoadXML(int mapId)
|
||
{
|
||
string path = PathUtil.GetXmlPath(mapId, "FuBensConfig");
|
||
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 xmlFuBens = xmlRoot.SelectSingleNode("FuBens");
|
||
LoadFuBens(xmlFuBens);
|
||
|
||
return true;
|
||
|
||
}
|
||
|
||
private void LoadFuBens(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 != "FuBen")
|
||
continue;
|
||
|
||
FuBenConfig mc = new FuBenConfig();
|
||
|
||
mc.order = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("order").Value);
|
||
mc.monsterId = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("monsterId").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);
|
||
mc.num = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("num").Value);
|
||
mc.delayTime = Convert.ToInt32(xmlNode.Attributes.GetNamedItem("delayTime").Value);
|
||
|
||
fubenConfigs.Add(mc);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|