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.
343 lines
13 KiB
343 lines
13 KiB
4 years ago
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Xml;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
|
||
|
public class BaseInfoMsgBind : MonoBehaviour
|
||
|
{
|
||
|
#region 基本情况
|
||
|
[Rename("单位名称")]
|
||
|
public Text Name;
|
||
|
[Rename("企业法人")]
|
||
|
public Text LegalPerson;
|
||
|
[Rename("电话")]
|
||
|
public Text LPPhone;
|
||
|
[Rename("单位地址")]
|
||
|
public Text Address;
|
||
|
[Rename("消防负责人")]
|
||
|
public Text FireChief;
|
||
|
[Rename("电话")]
|
||
|
public Text FCPhone;
|
||
|
[Rename("经纬度坐标")]
|
||
|
public Text Coordinate;
|
||
|
[Rename("使用性质")]
|
||
|
public Text Function;
|
||
|
[Rename("占地面积")]
|
||
|
public Text CoveredArea;
|
||
|
[Rename("耐火等级")]
|
||
|
public Text FireResistanceRating;
|
||
|
[Rename("建筑面积")]
|
||
|
public Text BuildArea;
|
||
|
[Rename("建筑结构")]
|
||
|
public Text BuildStructure;
|
||
|
#endregion
|
||
|
#region 周边环境
|
||
|
[Rename("道路东")]
|
||
|
public Text RoadEast;
|
||
|
[Rename("道路西")]
|
||
|
public Text RoadWest;
|
||
|
[Rename("道路南")]
|
||
|
public Text RoadSouth;
|
||
|
[Rename("道路北")]
|
||
|
public Text RoadNorth;
|
||
|
[Rename("建筑东")]
|
||
|
public Text BuildingEast;
|
||
|
[Rename("建筑西")]
|
||
|
public Text BuildingWest;
|
||
|
[Rename("建筑南")]
|
||
|
public Text BuildingSouth;
|
||
|
[Rename("建筑北")]
|
||
|
public Text BuildingNorth;
|
||
|
[Rename("距离东")]
|
||
|
public Text DistanceEast;
|
||
|
[Rename("距离西")]
|
||
|
public Text DistanceWest;
|
||
|
[Rename("距离南")]
|
||
|
public Text DistanceSouth;
|
||
|
[Rename("距离北")]
|
||
|
public Text DistanceNorth;
|
||
|
#endregion
|
||
|
[Rename("一行横线预设")]
|
||
|
public GameObject BorderH;
|
||
|
[Rename("信息栏")]
|
||
|
public GameObject AutoParent;
|
||
|
#region 联动单位
|
||
|
[Rename("联动单位一行预设")]
|
||
|
public GameObject PowerMsgPrefab;
|
||
|
[Rename("联动单位标题栏")]
|
||
|
public GameObject PowerMsgTitle;
|
||
|
#endregion
|
||
|
#region 罐区信息
|
||
|
[Rename("罐区信息一行预设")]
|
||
|
public GameObject OilCanPrefab;
|
||
|
[Rename("罐区信息标题栏")]
|
||
|
public GameObject OilCanTitle;
|
||
|
#endregion
|
||
|
#region XML相关
|
||
|
private XmlDocument XmlDoc = new XmlDocument();
|
||
|
public string Path = @"\StreamingAssets\MainMapXml.xml";
|
||
|
private XmlNode BaseInfo;
|
||
|
private XmlNode Surroundings;
|
||
|
private XmlNode LinkageUnit;
|
||
|
private XmlNode TankField;
|
||
|
#endregion
|
||
|
void Awake()
|
||
|
{
|
||
|
GetAllXmlNodes();
|
||
|
BindBaseInfoData();
|
||
|
BindArroundData();
|
||
|
BindPowerUnitData();
|
||
|
BindOilCanData();
|
||
|
}
|
||
|
public void ResetBaseInfo()
|
||
|
{
|
||
|
Name.text = "";
|
||
|
LegalPerson.text = "";
|
||
|
LPPhone.text = "";
|
||
|
Address.text = "";
|
||
|
FireChief.text = "";
|
||
|
FCPhone.text = "";
|
||
|
Coordinate.text = "";
|
||
|
Function.text = "";
|
||
|
CoveredArea.text = "";
|
||
|
FireResistanceRating.text = "";
|
||
|
BuildArea.text = "";
|
||
|
BuildStructure.text = "";
|
||
|
}
|
||
|
public void ResetArround()
|
||
|
{
|
||
|
RoadEast.text = "";
|
||
|
RoadWest.text = "";
|
||
|
RoadSouth.text = "";
|
||
|
RoadNorth.text = "";
|
||
|
BuildingEast.text = "";
|
||
|
BuildingWest.text = "";
|
||
|
BuildingSouth.text = "";
|
||
|
BuildingNorth.text = "";
|
||
|
DistanceEast.text = "";
|
||
|
DistanceWest.text = "";
|
||
|
DistanceSouth.text = "";
|
||
|
DistanceNorth.text = "";
|
||
|
}
|
||
|
//获取XML文档中的所有信息结点
|
||
|
public void GetAllXmlNodes()
|
||
|
{
|
||
|
XmlDoc.Load(Application.dataPath + Path);
|
||
|
|
||
|
var children = XmlDoc.SelectSingleNode("Maps").ChildNodes;
|
||
|
XmlElement Map = null;
|
||
|
foreach (XmlElement node in children)
|
||
|
{
|
||
|
if (node.Name == "Map")
|
||
|
{
|
||
|
Map = node;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
XmlNode DeptInfo = Map.FirstChild;
|
||
|
foreach (XmlNode item in DeptInfo.ChildNodes)
|
||
|
{
|
||
|
switch (item.Name)
|
||
|
{
|
||
|
case "BaseInfo":
|
||
|
BaseInfo = item;
|
||
|
break;
|
||
|
case "Surroundings":
|
||
|
Surroundings = item;
|
||
|
break;
|
||
|
case "LinkageUnit":
|
||
|
LinkageUnit = item;
|
||
|
break;
|
||
|
case "TankField":
|
||
|
TankField = item;
|
||
|
break;
|
||
|
default: break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
//绑定基本情况显示方法
|
||
|
public void BindBaseInfoData()
|
||
|
{
|
||
|
if (BaseInfo != null)
|
||
|
{
|
||
|
foreach (XmlNode node in BaseInfo.ChildNodes)
|
||
|
{
|
||
|
switch (node.Name)
|
||
|
{
|
||
|
case "Name":
|
||
|
Name.text = ((XmlElement)node).GetAttribute("Name");
|
||
|
break;
|
||
|
case "LegalPerson":
|
||
|
LegalPerson.text = ((XmlElement)node).GetAttribute("LegalPerson");
|
||
|
break;
|
||
|
case "LPPhone":
|
||
|
LPPhone.text = ((XmlElement)node).GetAttribute("Phone");
|
||
|
break;
|
||
|
case "Address":
|
||
|
Address.text = ((XmlElement)node).GetAttribute("Address");
|
||
|
break;
|
||
|
case "FireChief":
|
||
|
FireChief.text = ((XmlElement)node).GetAttribute("FireChief");
|
||
|
break;
|
||
|
case "FCPhone":
|
||
|
FCPhone.text = ((XmlElement)node).GetAttribute("Phone");
|
||
|
break;
|
||
|
case "Coordinate":
|
||
|
Coordinate.text = ((XmlElement)node).GetAttribute("Coordinate");
|
||
|
break;
|
||
|
case "Function":
|
||
|
Function.text = ((XmlElement)node).GetAttribute("Function");
|
||
|
break;
|
||
|
case "CoveredArea":
|
||
|
CoveredArea.text = ((XmlElement)node).GetAttribute("CoveredArea");
|
||
|
break;
|
||
|
case "FireResistanceRating":
|
||
|
FireResistanceRating.text = ((XmlElement)node).GetAttribute("FireResistanceRating");
|
||
|
break;
|
||
|
case "BuildArea":
|
||
|
BuildArea.text = ((XmlElement)node).GetAttribute("BuildArea");
|
||
|
break;
|
||
|
case "BuildStructure":
|
||
|
BuildStructure.text = ((XmlElement)node).GetAttribute("BuildStructure");
|
||
|
break;
|
||
|
default: break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//绑定周边环境显示方法
|
||
|
public void BindArroundData()
|
||
|
{
|
||
|
XmlNode ArroundNode = null;
|
||
|
if (Surroundings != null)
|
||
|
{
|
||
|
foreach (XmlNode node in Surroundings.ChildNodes)
|
||
|
{
|
||
|
switch (node.Name)
|
||
|
{
|
||
|
case "East":
|
||
|
ArroundNode = node;
|
||
|
foreach (XmlNode childnode in ArroundNode.ChildNodes)
|
||
|
{
|
||
|
switch (childnode.Name)
|
||
|
{
|
||
|
case "Road":
|
||
|
RoadEast.text = ((XmlElement)childnode).GetAttribute("Road");
|
||
|
break;
|
||
|
case "Building":
|
||
|
BuildingEast.text = ((XmlElement)childnode).GetAttribute("Building");
|
||
|
break;
|
||
|
case "Distance":
|
||
|
DistanceEast.text = ((XmlElement)childnode).GetAttribute("Distance");
|
||
|
break;
|
||
|
default: break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case "West":
|
||
|
ArroundNode = node;
|
||
|
foreach (XmlNode childnode in ArroundNode.ChildNodes)
|
||
|
{
|
||
|
switch (childnode.Name)
|
||
|
{
|
||
|
case "Road":
|
||
|
RoadWest.text = ((XmlElement)childnode).GetAttribute("Road");
|
||
|
break;
|
||
|
case "Building":
|
||
|
BuildingWest.text = ((XmlElement)childnode).GetAttribute("Building");
|
||
|
break;
|
||
|
case "Distance":
|
||
|
DistanceWest.text = ((XmlElement)childnode).GetAttribute("Distance");
|
||
|
break;
|
||
|
default: break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case "South":
|
||
|
ArroundNode = node;
|
||
|
foreach (XmlNode childnode in ArroundNode.ChildNodes)
|
||
|
{
|
||
|
switch (childnode.Name)
|
||
|
{
|
||
|
case "Road":
|
||
|
RoadSouth.text = ((XmlElement)childnode).GetAttribute("Road");
|
||
|
break;
|
||
|
case "Building":
|
||
|
BuildingSouth.text = ((XmlElement)childnode).GetAttribute("Building");
|
||
|
break;
|
||
|
case "Distance":
|
||
|
DistanceSouth.text = ((XmlElement)childnode).GetAttribute("Distance");
|
||
|
break;
|
||
|
default: break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
case "North":
|
||
|
ArroundNode = node;
|
||
|
foreach (XmlNode childnode in ArroundNode.ChildNodes)
|
||
|
{
|
||
|
switch (childnode.Name)
|
||
|
{
|
||
|
case "Road":
|
||
|
RoadNorth.text = ((XmlElement)childnode).GetAttribute("Road");
|
||
|
break;
|
||
|
case "Building":
|
||
|
BuildingNorth.text = ((XmlElement)childnode).GetAttribute("Building");
|
||
|
break;
|
||
|
case "Distance":
|
||
|
DistanceNorth.text = ((XmlElement)childnode).GetAttribute("Distance");
|
||
|
break;
|
||
|
default: break;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
default: break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//绑定联动单位显示方法
|
||
|
public void BindPowerUnitData()
|
||
|
{
|
||
|
if (LinkageUnit != null)
|
||
|
{
|
||
|
if (LinkageUnit.ChildNodes.Count > 0)
|
||
|
{
|
||
|
Instantiate(PowerMsgTitle, AutoParent.transform);
|
||
|
foreach (XmlNode node in LinkageUnit.ChildNodes)
|
||
|
{
|
||
|
Instantiate(BorderH, AutoParent.transform);
|
||
|
GameObject PowerUnit = Instantiate(PowerMsgPrefab, AutoParent.transform);
|
||
|
PowerUnit.transform.Find("NameShow").GetComponent<Text>().text = ((XmlElement)node).GetAttribute("Name");
|
||
|
PowerUnit.transform.Find("FaRenShow").GetComponent<Text>().text = ((XmlElement)node).GetAttribute("PersonInCharge");
|
||
|
PowerUnit.transform.Find("PhoneShow").GetComponent<Text>().text = ((XmlElement)node).GetAttribute("Phone");
|
||
|
}
|
||
|
Instantiate(BorderH, AutoParent.transform);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//绑定罐区信息显示方法
|
||
|
public void BindOilCanData()
|
||
|
{
|
||
|
if (TankField != null)
|
||
|
{
|
||
|
if (TankField.ChildNodes.Count > 0)
|
||
|
{
|
||
|
Instantiate(OilCanTitle, AutoParent.transform);
|
||
|
foreach (XmlNode node in TankField.ChildNodes)
|
||
|
{
|
||
|
Instantiate(BorderH, AutoParent.transform);
|
||
|
GameObject OilCan = Instantiate(OilCanPrefab, AutoParent.transform);
|
||
|
//PowerUnit.transform.Find("NameShow").GetComponent<Text>().text = ((XmlElement)node).GetAttribute("Name");
|
||
|
//PowerUnit.transform.Find("FaRenShow").GetComponent<Text>().text = ((XmlElement)node).GetAttribute("PersonInCharge");
|
||
|
//PowerUnit.transform.Find("PhoneShow").GetComponent<Text>().text = ((XmlElement)node).GetAttribute("Phone");
|
||
|
}
|
||
|
Instantiate(BorderH, AutoParent.transform);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|