海淀天下城电子沙盘单机版
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.

181 lines
5.6 KiB

4 years ago
using AX.MessageSystem;
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 队伍名称设置
/// </summary>
public class TeamNameSetting : ResourceLoadPanel<TeamNameSetting>
{
private Transform Father;
private InputField TeamName;
private static List<string> TeamNameList = new List<string>();
private void Start()
{
Init();
MessageDispatcher.AddListener("DisasterUpdateCompelete", ResetData);
}
private void OnDestroy()
{
MessageDispatcher.RemoveListener("DisasterUpdateCompelete", ResetData);
}
void Init()
{
TeamName = transform.Find("InputField").GetComponent<InputField>();
Father = transform.Find(GlobalVariable.ContentPath);
LoadTeamName();
}
//创建Item
private void CreateTeamNameItem()
{
GameObject TeamItem = Instantiate(Resources.Load("UI/TeamNameItem"), Father) as GameObject;
TeamItem.GetComponent<TeamNameItem>().SetTeamName(TeamName.text);
TeamNameList.Add(TeamName.text);
}
//检测同名
public bool CheckSameName(string Name)
{
if (TeamNameList.Contains(Name))
{
ResourceLoadWindow.Instance.LoadTextHintWindow("已有相同名称", 1f);
return true;
}
//foreach (Transform child in Father)
//{
// if (Name.Equals(child.GetComponent<TeamNameItem>().GetTeamName()))
// {
// ResourceLoadWindow.Instance.LoadTextHintWindow("已有相同名称", 1f);
// return true;
// }
//}
return false;
}
//输入名字点击确定按钮
public void NameSureBtn()
{
if (string.IsNullOrEmpty(TeamName.text)) { return; } //判断空输入
if (CheckSameName(TeamName.text)) { return; } //判断相同名字
CreateTeamNameItem(); //生成条目
}
//获取选中的队伍力量名称
public string GetPresentTeamName()
{
return GlobalVariable.TeamName = TeamNameItem.TeamName;
}
//获取队伍名称列表
public List<string> GetTeamNameList()
{
return TeamNameList;
}
public void Close()
{
gameObject.SetActive(false);
}
public void Sure()
{
GetPresentTeamName();
gameObject.SetActive(false);
SaveXml();
}
private void SaveXml()
{
var id = DisasterManager.disaster.Id.ToString();
var filepath = Application.dataPath + "/Data/" + id + "/File/"+"TeamName.xml";
if (File.Exists(filepath))
{
File.Delete(filepath);
}
File.Create(filepath).Dispose();
XmlDocument document = new XmlDocument();
XmlDeclaration xmldecl = document.CreateXmlDeclaration("1.0", "UTF-8", "yes");
document.AppendChild(xmldecl);
XmlElement nodes = document.CreateElement("TeamNameList");
document.AppendChild(nodes);
foreach (string teamName in TeamNameList)
{
XmlElement node = document.CreateElement("TeamName");
node.SetAttribute("Name", teamName);
if (teamName == GlobalVariable.TeamName)
{
node.SetAttribute("Selected", 1.ToString());
}
else
{
node.SetAttribute("Selected", 0.ToString());
}
nodes.AppendChild(node);
}
document.Save(filepath);
}
private void ResetData(IMessage obj)
{
var id = DisasterManager.disaster.Id.ToString();
var filepath = Application.dataPath + "/Data/" + id + "/File/" + "TeamName.xml";
if (File.Exists(filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNode nodes = xmlDoc.SelectSingleNode("TeamNameList");
TeamNameList.Clear();
foreach (XmlElement node in nodes)
{
var teamName = node.GetAttribute("Name");
TeamNameList.Add(teamName);
var selected = node.GetAttribute("Selected");
if (selected == "1")
{
TeamNameItem.TeamName = teamName;
GlobalVariable.TeamName = teamName;
}
}
RecreateTeamNameItems();
}
}
private void RecreateTeamNameItems()
{
foreach(Transform item in Father)
{
Destroy(item.gameObject);
}
foreach(string teamName in TeamNameList)
{
GameObject TeamItem = Instantiate(Resources.Load("UI/TeamNameItem"), Father) as GameObject;
TeamItem.GetComponent<TeamNameItem>().SetTeamName(teamName);
}
}
private void LoadTeamName()
{
var id = DisasterManager.disaster.Id.ToString();
var filepath = Application.dataPath + "/Data/" + id + "/File/" + "TeamName.xml";
if (File.Exists(filepath))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNode nodes = xmlDoc.SelectSingleNode("TeamNameList");
TeamNameList.Clear();
foreach (XmlElement node in nodes)
{
var teamName = node.GetAttribute("Name");
TeamNameList.Add(teamName);
var selected = node.GetAttribute("Selected");
if (selected == "1")
{
TeamNameItem.TeamName = teamName;
GlobalVariable.TeamName = teamName;
}
}
RecreateTeamNameItems();
}
}
}