using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; using UnityAsync; using WaitUntil = UnityAsync.WaitUntil; [System.Serializable] public class YZTLayerData { public string layerName; public int layerID; } public enum LayerUnitType { ZZ = 1, BZ, NC, QXZ, JK, QT } [System.Serializable] public class LayerUnitData { public bool special; public LayerUnitType type; public float longitude; public float latitude; public string name; public string name_pri; public string text1; public string text2; public string GetTypeName() { string result = ""; switch (type) { case LayerUnitType.ZZ: result = "闸站"; break; case LayerUnitType.BZ: result = "泵站"; break; case LayerUnitType.NC: result = "农场"; break; case LayerUnitType.QXZ: result = "气象站"; break; case LayerUnitType.JK: result = "监控"; break; case LayerUnitType.QT: result = "其他"; break; } return result; } } [System.Serializable] public class HotPointData { public LayerUnitType type; public float longitude; public float latitude; public string name; public string name_pri; } [System.Serializable] public class SWStationRecordData { public string name; public string time; public float value; public int dir; public string stcd = "0"; } public class YZTLayer : YZTRootLayer { public VerticalLayoutGroup content; public Sprite[] layerSprite; public Sprite[] hotPointSprite; public LayerBtn layerBtnPrefab; public SecLayerBtn secLayerBtnPrefab; public YZTLayerData[] layerDatas; public RectTransform leftContent; public RectTransform middleContent; public RectTransform rightContent; List layerBtns = new List(); public RuntimePoint pointPrefab; public GameObject runtimePointObj; public RectTransform pointParent; List runtimePointLib = new List(); public GameObject yZTMini; public GameObject yZT; public RectTransform infoRight; public Button returnBtn; private float clickInterval; private Vector3 startClickPosition; public Button[] leftButtons; public Button layerButton; public int currentActiveLeft = 0; public RectTransform layerInfo; public Button layerInfoExitBtn; public Button[] baseLayerInfoBtns; public Button[] layerInfoBtns; public List cancelLayer = new List(); public Sprite[] sprites; public Text rainText; public Text[] rainTextNum; public GameObject thingPrefab; public RectTransform thingParent; public List rescordSWStationData = new List(); public List thing3s = new List(); public Button clearBtn; public RectTransform regionParent; public RectTransform regionParent2; public RectTransform[] regionLayerInfo; public RectTransform[] riverLayerInfo; public RectTransform[] lakeLayerInfo; public List region2LayerInfo = new List(); public GameObject regionObjParent; public GameObject regionObjParent2; public GameObject[] regionLayerObj; public GameObject[] riverLayerObj; public GameObject[] lakeLayerObj; public List region2LayerObj = new List(); // Start is called before the first frame update public WaterTrendPanel _waterTrendPanel; async void Awake() { viewMode = ViewMode.miniMap; _waterTrendPanel = this.transform.Find("WaterTrendPanel").GetComponent(); _waterTrendPanel.Init(); await InitData(); Init(); InitLeftBtn(); InitLayerInfo(); InitLayerBtns(); InitReturnBtn(); InitRainInfo(); InitSWHeightInfo(); await InitPointData(); InitPoint(); } void InitLeftBtn() { for (int i = 0; i < leftButtons.Length; i++) { int temp = i; leftButtons[i].onClick.AddListener(() => { LeftBtnClick(temp); }); } LeftBtnClick(0); clearBtn.onClick.AddListener(() => { if (clearBtn.GetComponent().sprite == sprites[0]) { clearBtn.GetComponent().sprite = sprites[1]; leftContent.gameObject.SetActive(false); pointParent.gameObject.SetActive(true); middleContent.gameObject.SetActive(false); rightContent.gameObject.SetActive(false); clearBtn.GetComponent().anchoredPosition = new Vector2(-827, clearBtn.GetComponent().anchoredPosition.y); } else { clearBtn.GetComponent().sprite = sprites[0]; leftContent.gameObject.SetActive(true); pointParent.gameObject.SetActive(true); middleContent.gameObject.SetActive(true); rightContent.gameObject.SetActive(true); clearBtn.GetComponent().anchoredPosition = new Vector2(-457, clearBtn.GetComponent().anchoredPosition.y); } }); } async void InitSWHeightInfo() { await new WaitUntil(() => { return GlobalData.swDatas.Count > 0; }); if (rescordSWStationData.Count < 1) { for (int i = 0; i < GlobalData.swDatas.Count; i++) { SWStationRecordData sWStationRecordData = new SWStationRecordData(); sWStationRecordData.dir = 0; sWStationRecordData.name = GlobalData.swDatas[i].STNM; sWStationRecordData.value = (GlobalData.swDatas[i].upz > GlobalData.swDatas[i].dwz) ? GlobalData.swDatas[i].upz : GlobalData.swDatas[i].dwz; sWStationRecordData.time = DateTime.Now.ToString("MM/dd HH:mm"); sWStationRecordData.stcd = GlobalData.swDatas[i].STCD; rescordSWStationData.Add(sWStationRecordData); } for (int i = 0; i < rescordSWStationData.Count; i++) { GameObject obj = Instantiate(thingPrefab); obj.GetComponent().SetParent(thingParent); obj.transform.localScale = Vector3.one; obj.transform.GetChild(0).GetComponent().text = (i + 1).ToString(); string rescordSW_name = rescordSWStationData[i].name.ToString(); ; obj.transform.GetChild(1).GetComponent().text = rescordSW_name; obj.transform.GetChild(2).GetComponent().text = rescordSWStationData[i].time.ToString(); obj.transform.GetChild(3).GetComponent().text = rescordSWStationData[i].value.ToString(); string rescordSW_stcd = rescordSWStationData[i].stcd; obj.transform.GetComponent