You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
286 lines
9.9 KiB
286 lines
9.9 KiB
using System; |
|
using System.Collections; |
|
using System.Collections.Generic; |
|
using System.IO; |
|
using System.Xml; |
|
using UnityEngine; |
|
|
|
public class DisasterInfosManager |
|
{ |
|
private static DisasterInfosManager instance; |
|
public static string path; |
|
public int currentID = -1; |
|
public static DisasterInfosManager Instance |
|
{ |
|
get |
|
{ |
|
if (instance == null) |
|
{ |
|
instance = new DisasterInfosManager(); |
|
path = Application.streamingAssetsPath + "/Data/DisasterInfos.xml"; |
|
if (!File.Exists(path)) |
|
{ |
|
XmlDocument document = new XmlDocument(); |
|
XmlDeclaration xmldecl = document.CreateXmlDeclaration("1.0", "UTF-8", "yes"); |
|
document.AppendChild(xmldecl); |
|
XmlElement newChild = document.CreateElement("DisasterInfoList"); |
|
document.AppendChild(newChild); |
|
document.Save(path); |
|
document = null; |
|
} |
|
} |
|
return instance; |
|
} |
|
} |
|
/// <summary> |
|
/// 单机版,获取所有灾情 |
|
/// </summary> |
|
/// <returns></returns> |
|
public List<DisasterInfo> GetAllDisasterInfos() |
|
{ |
|
List<DisasterInfo> list = new List<DisasterInfo>(); |
|
XmlDocument document = new XmlDocument(); |
|
document.Load(path); |
|
XmlNodeList nodeList = document.SelectSingleNode("DisasterInfoList").ChildNodes; |
|
foreach (XmlElement fileNode in nodeList) |
|
{ |
|
DisasterInfo info = new DisasterInfo(); |
|
foreach (XmlElement element in fileNode.ChildNodes) |
|
{ |
|
if (element.Name == "Id") |
|
{ |
|
info.Id = int.Parse(element.InnerText); |
|
} |
|
if (element.Name == "LastTime") |
|
{ |
|
info.LastTime = element.InnerText; |
|
} |
|
if (element.Name == "Name") |
|
{ |
|
info.Name = element.InnerText; |
|
} |
|
} |
|
/*string id = fileNode.GetElementsByTagName("Id"). |
|
info.Id = int.Parse(fileNode.GetAttribute("Id")); |
|
info.LastTime = fileNode.GetAttribute("LastTime"); |
|
info.Name = fileNode.GetAttribute("Name");*/ |
|
list.Add(info); |
|
if (info.Id > currentID) |
|
{ |
|
currentID = info.Id; |
|
} |
|
} |
|
return list; |
|
} |
|
/// <summary> |
|
/// 获取灾情列表 |
|
/// </summary> |
|
/// <returns></returns> |
|
public List<DisasterInfo> GetDisasterInfos() |
|
{ |
|
List<DisasterInfo> list = new List<DisasterInfo>(); |
|
XmlDocument document = new XmlDocument(); |
|
document.Load(path); |
|
XmlNodeList nodeList = document.SelectSingleNode("DisasterInfoList").ChildNodes; |
|
foreach (XmlElement fileNode in nodeList) |
|
{ |
|
DisasterInfo info = new DisasterInfo(); |
|
foreach (XmlElement element in fileNode.ChildNodes) |
|
{ |
|
if (element.Name == "Id") |
|
{ |
|
info.Id = int.Parse(element.InnerText); |
|
} |
|
if (element.Name == "LastTime") |
|
{ |
|
info.LastTime = element.InnerText; |
|
} |
|
if (element.Name == "Name") |
|
{ |
|
info.Name = element.InnerText; |
|
} |
|
} |
|
/*string id = fileNode.GetElementsByTagName("Id"). |
|
info.Id = int.Parse(fileNode.GetAttribute("Id")); |
|
info.LastTime = fileNode.GetAttribute("LastTime"); |
|
info.Name = fileNode.GetAttribute("Name");*/ |
|
list.Add(info); |
|
if (info.Id > currentID) |
|
{ |
|
currentID = info.Id; |
|
} |
|
} |
|
//var newlist = getFilteredList(list, queryOptions.PageSize, queryOptions.PageNumber); |
|
//return newlist; |
|
return list; |
|
} |
|
/*private List<DisasterInfo> getFilteredList(List<DisasterInfo> list,int pageSize,int pageNumber) |
|
{ |
|
int count = list.Count; |
|
int totalPageCount = Mathf.CeilToInt(count / pageSize); |
|
totalPageCount = Mathf.Clamp(totalPageCount, 1, 99); |
|
int iniNum = pageSize * (pageNumber - 1); |
|
List<DisasterInfo> newList = new List<DisasterInfo>(); |
|
if(pageNumber < totalPageCount) |
|
{ |
|
for(int i = iniNum; i < pageSize; i++) |
|
{ |
|
newList.Add(list[i]); |
|
} |
|
} |
|
else |
|
{ |
|
for(int i = iniNum; i < count; i++) |
|
{ |
|
newList.Add(list[i]); |
|
} |
|
} |
|
return newList; |
|
}*/ |
|
/// <summary> |
|
/// 添加新灾情 |
|
/// </summary> |
|
/// <param name="info"></param> |
|
public void AddNewDisasterInfo(DisasterInfo info) |
|
{ |
|
info.Id = currentID + 1; |
|
XmlDocument document = new XmlDocument(); |
|
document.Load(path); |
|
XmlNode node = document.SelectSingleNode("DisasterInfoList"); |
|
XmlElement infoNode = document.CreateElement("DisasterInfo"); |
|
/*infoNode.SetAttribute("Id", info.Id.ToString()); |
|
infoNode.SetAttribute("LastTime", info.LastTime); |
|
infoNode.SetAttribute("Name", info.Name);*/ |
|
node.AppendChild(infoNode); |
|
|
|
XmlElement idNode = document.CreateElement("Id"); |
|
idNode.InnerText = info.Id.ToString(); |
|
infoNode.AppendChild(idNode); |
|
|
|
XmlElement LastTimeNode = document.CreateElement("LastTime"); |
|
LastTimeNode.InnerText = info.LastTime; |
|
infoNode.AppendChild(LastTimeNode); |
|
|
|
XmlElement nameNode = document.CreateElement("Name"); |
|
nameNode.InnerText = info.Name; |
|
infoNode.AppendChild(nameNode); |
|
|
|
document.Save(path); |
|
document = null; |
|
|
|
//在本地创建以灾情ID命名的文件夹 |
|
var directoryPath = Application.dataPath + "/Data/" + info.Id.ToString() + "/"; |
|
if (Directory.Exists(directoryPath)) |
|
{ |
|
Directory.Delete(directoryPath, true); |
|
} |
|
Directory.CreateDirectory(directoryPath); |
|
|
|
//创建空的配置文件 |
|
var localFileXml = Application.dataPath + "/Data/" + info.Id.ToString() + "/" + info.Id.ToString() + ".xml"; |
|
createLocalFileXml(localFileXml); |
|
//重新回到第一页,申请第一页内容 |
|
PagesController.Instance.ApplyForInitPage(); |
|
} |
|
|
|
private void createLocalFileXml(string localFileXml) |
|
{ |
|
XmlDocument document = new XmlDocument(); |
|
XmlDeclaration xmldecl = document.CreateXmlDeclaration("1.0", "UTF-8", "yes"); |
|
document.AppendChild(xmldecl); |
|
XmlElement newChild = document.CreateElement("Files"); |
|
document.AppendChild(newChild); |
|
document.Save(localFileXml); |
|
newChild = null; |
|
document = null; |
|
} |
|
|
|
/// <summary> |
|
/// 删除灾情 |
|
/// </summary> |
|
/// <param name="info"></param> |
|
public void DeleteDisasterInfo(int delId) |
|
{ |
|
XmlDocument document = new XmlDocument(); |
|
document.Load(path); |
|
XmlNode node = document.SelectSingleNode("DisasterInfoList"); |
|
XmlNodeList nodeList = node.ChildNodes; |
|
/*foreach (XmlElement fileNode in nodeList) |
|
{ |
|
int id = int.Parse(fileNode.GetAttribute("Id")); |
|
if (id == delId) |
|
{ |
|
node.RemoveChild(fileNode); |
|
break; |
|
} |
|
}*/ |
|
foreach (XmlElement fileNode in nodeList) |
|
{ |
|
XmlNodeList nodelist = fileNode.GetElementsByTagName("Id"); |
|
XmlElement ele = (XmlElement)nodelist[0]; |
|
string id = ele.InnerText; |
|
if (id == delId.ToString()) |
|
{ |
|
node.RemoveChild(fileNode); |
|
break; |
|
} |
|
} |
|
document.Save(path); |
|
document = null; |
|
|
|
DisasterList.Instance.DeleteDisaster(delId); |
|
//删除灾情文件夹 |
|
var directoryPath = Application.dataPath + "/Data/" + delId.ToString() + "/"; |
|
if (Directory.Exists(directoryPath)) |
|
{ |
|
Directory.Delete(directoryPath, true); |
|
} |
|
//重新回到第一页,申请第一页内容 |
|
PagesController.Instance.ApplyForInitPage(); |
|
} |
|
/// <summary> |
|
/// 更新灾情名称 |
|
/// </summary> |
|
/// <param name="uId"></param> |
|
/// <param name="uName"></param> |
|
public void UpdateDisasterInfo(int uId, string uName) |
|
{ |
|
XmlDocument document = new XmlDocument(); |
|
document.Load(path); |
|
XmlNode node = document.SelectSingleNode("DisasterInfoList"); |
|
XmlNodeList nodeList = node.ChildNodes; |
|
foreach (XmlElement fileNode in nodeList) |
|
{ |
|
XmlElement element = (XmlElement)fileNode.GetElementsByTagName("Id")[0]; |
|
if (element.InnerText == uId.ToString()) |
|
{ |
|
XmlElement nodeName = (XmlElement)fileNode.GetElementsByTagName("Name")[0]; |
|
nodeName.InnerText = uName; |
|
XmlElement nodeTime = (XmlElement)fileNode.GetElementsByTagName("LastTime")[0]; |
|
nodeTime.InnerText = DateTime.Now.ToString(); |
|
break; |
|
} |
|
} |
|
document.Save(path); |
|
document = null; |
|
} |
|
public void SaveDisasterInfo(string uId) |
|
{ |
|
XmlDocument document = new XmlDocument(); |
|
document.Load(path); |
|
XmlNode node = document.SelectSingleNode("DisasterInfoList"); |
|
XmlNodeList nodeList = node.ChildNodes; |
|
foreach (XmlElement fileNode in nodeList) |
|
{ |
|
XmlElement element = (XmlElement)fileNode.GetElementsByTagName("Id")[0]; |
|
if (element.InnerText == uId) |
|
{ |
|
XmlElement nodeTime = (XmlElement)fileNode.GetElementsByTagName("LastTime")[0]; |
|
nodeTime.InnerText = DateTime.Now.ToString(); |
|
break; |
|
} |
|
} |
|
document.Save(path); |
|
document = null; |
|
} |
|
}
|
|
|