网上演练贵港万达广场(人员密集)
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.
 
 
 

108 lines
3.2 KiB

using System.Collections;
using System.Collections.Generic;
using System.Xml;
using UnityEngine;
using UnityEngine.UI;
public class LeftRuleInit : MonoBehaviour {
public GameObject Content;
public GameObject ModePrefab;
public GameObject RuleItem;
public GameObject RuleRadioItem;
public List< Dictionary<string, List<string>> > rules = new List< Dictionary<string, List<string>> >();
public Dictionary<string, List<string>> modeRules = new Dictionary<string, List<string>>();
public List<string> ruleList = new List<string>();
private GameObject ruleItem;
// Use this for initialization
void Awake () {
Content = transform.Find("Viewport/Content").gameObject;
LoadRulesData();
CteateUI();
}
// Update is called once per frame
void Update () {
}
/// <summary>
/// 加载左侧灭火规则数据
/// </summary>
private void LoadRulesData()
{
var doc = new XmlDocument();
doc.Load(Application.dataPath + @"\StreamingAssets\OperationalPreparations\OperationalPreparations.xml");
var children = doc.SelectSingleNode("Root").ChildNodes;
XmlElement left = null;
foreach (XmlElement node in children)
{
if (node.Name == "Left")
left = node;
}
if (left != null)
{
foreach (XmlElement mode in left.ChildNodes)
{
ruleList = new List<string>();
foreach (XmlElement rule in mode.ChildNodes)
{
ruleList.Add(rule.Attributes["name"].Value);
}
modeRules = new Dictionary<string, List<string>>();
modeRules.Add(mode.Attributes["name"].Value, ruleList);
rules.Add(modeRules);
}
}
}
/// <summary>
/// 根据加载的数据创建UI
/// </summary>
private void CteateUI()
{
foreach (var item in rules)
{
GameObject mode = GameObject.Instantiate(ModePrefab, Content.transform) as GameObject;
string modeName = "";
foreach (var key in item.Keys)
{
modeName = key;
}
mode.transform.Find("Name/Text").GetComponent<Text>().text = modeName;
for (int i = 0; i < item[modeName].Count; i++)
{
if (modeName != "战斗展开")
{
ruleItem = GameObject.Instantiate(RuleItem, mode.transform.Find("Viewport/Content")) as GameObject;
}
else
{
ruleItem = GameObject.Instantiate(RuleRadioItem, mode.transform.Find("Viewport/Content")) as GameObject;
ruleItem.GetComponent<Toggle>().group = mode.transform.Find("Viewport/Content").GetComponent<ToggleGroup>();
}
ruleItem.transform.Find("Label").GetComponent<Text>().text = item[modeName][i];
if (!CurrentUserInfo.generalCommanding)
{
ruleItem.GetComponent<Toggle>().interactable = false;
}
}
}
}
}