YZTLayer.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using System;
  4. using System.Collections;
  5. using System.Collections.Generic;
  6. using System.Threading.Tasks;
  7. using UnityEngine;
  8. using UnityEngine.Networking;
  9. using UnityEngine.UI;
  10. using UnityAsync;
  11. using WaitUntil = UnityAsync.WaitUntil;
  12. using Best.HTTP.Caching;
  13. [System.Serializable]
  14. public class YZTLayerData
  15. {
  16. public string layerName;
  17. public int layerID;
  18. }
  19. public enum LayerUnitType
  20. {
  21. ZZ = 1,
  22. BZ,
  23. NC,
  24. QXZ,
  25. JK,
  26. QT
  27. }
  28. [System.Serializable]
  29. public class LayerUnitData
  30. {
  31. public bool special;
  32. public LayerUnitType type;
  33. public float longitude;
  34. public float latitude;
  35. public string name;
  36. public string name_pri;
  37. public string text1;
  38. public string text2;
  39. public string GetTypeName()
  40. {
  41. string result = "";
  42. switch (type)
  43. {
  44. case LayerUnitType.ZZ:
  45. result = "闸站";
  46. break;
  47. case LayerUnitType.BZ:
  48. result = "泵站";
  49. break;
  50. case LayerUnitType.NC:
  51. result = "农场";
  52. break;
  53. case LayerUnitType.QXZ:
  54. result = "气象站";
  55. break;
  56. case LayerUnitType.JK:
  57. result = "监控";
  58. break;
  59. case LayerUnitType.QT:
  60. result = "其他";
  61. break;
  62. }
  63. return result;
  64. }
  65. }
  66. [System.Serializable]
  67. public class HotPointData
  68. {
  69. public LayerUnitType type;
  70. public float longitude;
  71. public float latitude;
  72. public string name;
  73. public string name_pri;
  74. }
  75. [System.Serializable]
  76. public class SWStationRecordData
  77. {
  78. public string name;
  79. public string time;
  80. public float value;
  81. public int dir;
  82. }
  83. public class YZTLayer : YZTRootLayer
  84. {
  85. public VerticalLayoutGroup content;
  86. public Sprite[] layerSprite;
  87. public Sprite[] hotPointSprite;
  88. public LayerBtn layerBtnPrefab;
  89. public SecLayerBtn secLayerBtnPrefab;
  90. public YZTLayerData[] layerDatas;
  91. public RectTransform leftContent;
  92. public RectTransform middleContent;
  93. public RectTransform rightContent;
  94. List<LayerBtn> layerBtns = new List<LayerBtn>();
  95. public RuntimePoint pointPrefab;
  96. public GameObject runtimePointObj;
  97. public RectTransform pointParent;
  98. List<RuntimePoint> runtimePointLib = new List<RuntimePoint>();
  99. public GameObject yZTMini;
  100. public GameObject yZT;
  101. public RectTransform infoRight;
  102. public Button returnBtn;
  103. private float clickInterval;
  104. private Vector3 startClickPosition;
  105. public Button[] leftButtons;
  106. public Button layerButton;
  107. public int currentActiveLeft = 0;
  108. public RectTransform layerInfo;
  109. public Button layerInfoExitBtn;
  110. public Button[] baseLayerInfoBtns;
  111. public Button[] layerInfoBtns;
  112. public List<int> cancelLayer = new List<int>();
  113. public Sprite[] sprites;
  114. public Text rainText;
  115. public Text[] rainTextNum;
  116. public GameObject thingPrefab;
  117. public RectTransform thingParent;
  118. public List<SWStationRecordData> rescordSWStationData = new List<SWStationRecordData>();
  119. public List<GameObject> thing3s = new List<GameObject>();
  120. public Button clearBtn;
  121. public RectTransform[] regionLayerInfo;
  122. public RectTransform[] riverLayerInfo;
  123. public RectTransform[] lakeLayerInfo;
  124. public GameObject[] regionLayerObj;
  125. public GameObject[] riverLayerObj;
  126. public GameObject[] lakeLayerObj;
  127. // Start is called before the first frame update
  128. async void Awake()
  129. {
  130. viewMode = ViewMode.miniMap;
  131. await InitData();
  132. Init();
  133. InitLeftBtn();
  134. InitLayerInfo();
  135. InitLayerBtns();
  136. InitReturnBtn();
  137. InitRainInfo();
  138. InitSWHeightInfo();
  139. await InitPointData();
  140. InitPoint();
  141. }
  142. void InitLeftBtn() {
  143. for (int i = 0; i < leftButtons.Length; i++) {
  144. int temp = i;
  145. leftButtons[i].onClick.AddListener(() =>
  146. {
  147. LeftBtnClick(temp);
  148. });
  149. }
  150. LeftBtnClick(0);
  151. clearBtn.onClick.AddListener(() => {
  152. if (clearBtn.GetComponent<Image>().sprite == sprites[0])
  153. {
  154. clearBtn.GetComponent<Image>().sprite = sprites[1];
  155. leftContent.gameObject.SetActive(false);
  156. pointParent.gameObject.SetActive(true);
  157. middleContent.gameObject.SetActive(false);
  158. rightContent.gameObject.SetActive(false);
  159. clearBtn.GetComponent<RectTransform>().anchoredPosition = new Vector2(-827, clearBtn.GetComponent<RectTransform>().anchoredPosition.y);
  160. }
  161. else {
  162. clearBtn.GetComponent<Image>().sprite = sprites[0];
  163. leftContent.gameObject.SetActive(true);
  164. pointParent.gameObject.SetActive(true);
  165. middleContent.gameObject.SetActive(true);
  166. rightContent.gameObject.SetActive(true);
  167. clearBtn.GetComponent<RectTransform>().anchoredPosition = new Vector2(-457, clearBtn.GetComponent<RectTransform>().anchoredPosition.y);
  168. }
  169. });
  170. }
  171. async void InitSWHeightInfo() {
  172. await new WaitUntil(() => {
  173. return GlobalData.swDatas.Count > 0;
  174. });
  175. if (rescordSWStationData.Count < 1)
  176. {
  177. for (int i = 0; i < GlobalData.swDatas.Count; i++) {
  178. SWStationRecordData sWStationRecordData = new SWStationRecordData();
  179. sWStationRecordData.dir = 0;
  180. sWStationRecordData.name = GlobalData.swDatas[i].STNM;
  181. sWStationRecordData.value = (GlobalData.swDatas[i].upz > GlobalData.swDatas[i].dwz)?GlobalData.swDatas[i].upz:GlobalData.swDatas[i].dwz;
  182. sWStationRecordData.time = DateTime.Now.ToString("MM/dd HH:mm");
  183. rescordSWStationData.Add(sWStationRecordData);
  184. }
  185. for (int i = 0; i < rescordSWStationData.Count; i++)
  186. {
  187. GameObject obj = Instantiate(thingPrefab);
  188. obj.GetComponent<RectTransform>().SetParent(thingParent);
  189. obj.transform.localScale = Vector3.one;
  190. obj.transform.GetChild(0).GetComponent<Text>().text = (i + 1).ToString();
  191. obj.transform.GetChild(1).GetComponent<Text>().text = rescordSWStationData[i].name.ToString();
  192. obj.transform.GetChild(2).GetComponent<Text>().text = rescordSWStationData[i].time.ToString();
  193. obj.transform.GetChild(3).GetComponent<Text>().text = rescordSWStationData[i].value.ToString();
  194. if (rescordSWStationData[i].dir == 0)
  195. {
  196. obj.transform.GetChild(4).localEulerAngles = new Vector3(0, 0, 0);
  197. }
  198. else if (rescordSWStationData[i].dir == 1)
  199. {
  200. obj.transform.GetChild(4).localEulerAngles = new Vector3(0, 0, 90);
  201. }
  202. else {
  203. obj.transform.GetChild(4).localEulerAngles = new Vector3(0, 0, -90);
  204. }
  205. thing3s.Add(obj);
  206. }
  207. }
  208. else {
  209. for (int i = 0; i < GlobalData.swDatas.Count; i++)
  210. {
  211. rescordSWStationData[i].name = GlobalData.swDatas[i].STNM;
  212. float lastValue = rescordSWStationData[i].value;
  213. rescordSWStationData[i].value = (GlobalData.swDatas[i].upz > GlobalData.swDatas[i].dwz) ? GlobalData.swDatas[i].upz : GlobalData.swDatas[i].dwz;
  214. rescordSWStationData[i].time = DateTime.Now.ToString("MM/dd HH:mm");
  215. if (rescordSWStationData[i].value > lastValue)
  216. {
  217. rescordSWStationData[i].dir = 1;
  218. }
  219. else if (rescordSWStationData[i].value > lastValue)
  220. {
  221. rescordSWStationData[i].dir = 0;
  222. }
  223. else {
  224. rescordSWStationData[i].dir = -1;
  225. }
  226. }
  227. for (int i = 0; i < rescordSWStationData.Count; i++)
  228. {
  229. thing3s[i].transform.GetChild(0).GetComponent<Text>().text = (i + 1).ToString();
  230. thing3s[i].transform.GetChild(1).GetComponent<Text>().text = rescordSWStationData[i].name.ToString();
  231. thing3s[i].transform.GetChild(2).GetComponent<Text>().text = rescordSWStationData[i].time.ToString();
  232. thing3s[i].transform.GetChild(3).GetComponent<Text>().text = rescordSWStationData[i].value.ToString();
  233. if (rescordSWStationData[i].dir == 0)
  234. {
  235. thing3s[i].transform.GetChild(4).localEulerAngles = new Vector3(0, 0, 0);
  236. }
  237. else if (rescordSWStationData[i].dir == 1)
  238. {
  239. thing3s[i].transform.GetChild(4).localEulerAngles = new Vector3(0, 0, 90);
  240. }
  241. else
  242. {
  243. thing3s[i].transform.GetChild(4).localEulerAngles = new Vector3(0, 0, -90);
  244. }
  245. }
  246. }
  247. }
  248. async void InitRainInfo() {
  249. await new WaitUntil(() => {
  250. return GlobalData.qXZDatas.Count > 0;
  251. });
  252. int qxzCount = GlobalData.qXZDatas.Count;
  253. string maxName = "";
  254. float maxValue = -99f;
  255. int value010 = 0;
  256. int value1025 = 0;
  257. int value2550 = 0;
  258. int value50100 = 0;
  259. int value100200 = 0;
  260. int value200 = 0;
  261. for (int i = 0; i < qxzCount; i++) {
  262. float value = GlobalData.qXZDatas[i].dropSum6;
  263. if (value > maxValue) {
  264. maxValue = value;
  265. maxName = GlobalData.qXZDatas[i].STNM;
  266. }
  267. if (value >= 0 && value < 10)
  268. {
  269. value010++;
  270. }
  271. else if (value >= 10 && value < 25)
  272. {
  273. value1025++;
  274. }
  275. else if (value >= 25 && value < 50)
  276. {
  277. value2550++;
  278. }
  279. else if (value >= 50 && value < 100)
  280. {
  281. value50100++;
  282. }
  283. else if (value >= 100 && value < 200)
  284. {
  285. value100200++;
  286. }
  287. else
  288. {
  289. value200++;
  290. }
  291. }
  292. rainText.text = $"数据时间:17日12时至18日12时(过去24小时)\r\n蓄洪区共有{qxzCount}个雨量站,其中几个雨量站监测有降雨最大降雨测站为{maxName}站点,降雨量{maxValue}mm.";
  293. rainTextNum[0].text = value010.ToString();
  294. rainTextNum[1].text = value1025.ToString();
  295. rainTextNum[2].text = value2550.ToString();
  296. rainTextNum[3].text = value50100.ToString();
  297. rainTextNum[4].text = value100200.ToString();
  298. rainTextNum[5].text = value200.ToString();
  299. }
  300. void InitLayerInfo() {
  301. //layerInfoBtns = layerInfo.GetComponentsInChildren<Button>();
  302. for (int i = 0; i < layerInfoBtns.Length; i++) {
  303. int temp = i;
  304. layerInfoBtns[i].onClick.AddListener(() =>
  305. {
  306. RunTimeLayerClick(temp);
  307. });
  308. }
  309. layerButton.onClick.AddListener(() => {
  310. layerInfo.gameObject.SetActive(true);
  311. });
  312. layerInfoExitBtn.onClick.AddListener(() =>
  313. {
  314. layerInfo.gameObject.SetActive(false);
  315. });
  316. baseLayerInfoBtns[0].onClick.AddListener(() =>
  317. {
  318. bool active = baseLayerInfoBtns[0].GetComponent<CanvasGroup>().alpha > 0.5f;
  319. baseLayerInfoBtns[0].GetComponent<CanvasGroup>().alpha = active ? 0.5f : 1.0f;
  320. bool newActive = !active;
  321. for (int i = 0; i < regionLayerObj.Length; i++) {
  322. regionLayerObj[i].gameObject.SetActive(newActive);
  323. regionLayerInfo[i].gameObject.SetActive(newActive);
  324. }
  325. });
  326. baseLayerInfoBtns[0].GetComponent<CanvasGroup>().alpha = 0.5f;
  327. baseLayerInfoBtns[1].onClick.AddListener(() =>
  328. {
  329. bool active = baseLayerInfoBtns[1].GetComponent<CanvasGroup>().alpha > 0.5f;
  330. baseLayerInfoBtns[1].GetComponent<CanvasGroup>().alpha = active ? 0.5f : 1.0f;
  331. bool newActive = !active;
  332. for (int i = 0; i < riverLayerObj.Length; i++)
  333. {
  334. riverLayerObj[i].gameObject.SetActive(newActive);
  335. riverLayerInfo[i].gameObject.SetActive(newActive);
  336. }
  337. });
  338. baseLayerInfoBtns[1].GetComponent<CanvasGroup>().alpha = 0.5f;
  339. baseLayerInfoBtns[2].onClick.AddListener(() =>
  340. {
  341. bool active = baseLayerInfoBtns[2].GetComponent<CanvasGroup>().alpha > 0.5f;
  342. baseLayerInfoBtns[2].GetComponent<CanvasGroup>().alpha = active ? 0.5f : 1.0f;
  343. bool newActive = !active;
  344. for (int i = 0; i < lakeLayerObj.Length; i++)
  345. {
  346. lakeLayerObj[i].gameObject.SetActive(newActive);
  347. lakeLayerInfo[i].gameObject.SetActive(newActive);
  348. }
  349. });
  350. baseLayerInfoBtns[2].GetComponent<CanvasGroup>().alpha = 0.5f;
  351. }
  352. void RunTimeLayerClick(int temp) {
  353. bool active = layerInfoBtns[temp].GetComponent<CanvasGroup>().alpha > 0.5f;
  354. layerInfoBtns[temp].GetComponent<CanvasGroup>().alpha = active ? 0.5f : 1.0f;
  355. bool newActive = !active;
  356. ChangeRuntimeLayer(temp, newActive);
  357. }
  358. void LeftBtnClick(int index,bool record = true) {
  359. if(record)
  360. currentActiveLeft = index;
  361. for (int i = 0; i < leftButtons.Length; i++)
  362. {
  363. leftButtons[i].GetComponent<Image>().sprite = sprites[1];
  364. }
  365. leftButtons[index].GetComponent<Image>().sprite = sprites[0];
  366. for (int i = 0; i < leftContent.childCount; i++) {
  367. leftContent.transform.GetChild(i).gameObject.SetActive(false);
  368. }
  369. leftContent.transform.GetChild(index).gameObject.SetActive(true);
  370. if (index == 1) {
  371. InitSWHeightInfo();
  372. }
  373. }
  374. void InitLayerBtns()
  375. {
  376. layerBtns = new List<LayerBtn>();
  377. for (int i = 0; i < layerDatas.Length; i++)
  378. {
  379. LayerBtn layerBtn = Instantiate(layerBtnPrefab);
  380. layerBtn.SetUseful(false);
  381. int index = i;
  382. int num = 0;
  383. if (i == 0)
  384. {
  385. List<LayerUnitData> tempDatas = new List<LayerUnitData>(GlobalData.layerUnitDatas);
  386. for (int j = 0; j < tempDatas.Count; j++)
  387. {
  388. if (tempDatas[j].special)
  389. {
  390. int tempJ = j;
  391. SecLayerBtn secLayerBtn = Instantiate(secLayerBtnPrefab);
  392. secLayerBtn.SetLayerBtnData(tempDatas[j].name);
  393. secLayerBtn.GetComponent<RectTransform>().SetParent(layerBtn.secContent.GetComponent<RectTransform>());
  394. secLayerBtn.btn.onClick.AddListener(() => {
  395. CameraManager.SwitchCamera(0);
  396. viewMode = ViewMode.normal;
  397. StaticLod.instance.OnFoucusStatic(tempDatas[tempJ].name_pri);
  398. yZT.gameObject.SetActive(true);
  399. ChangeRightContent(tempJ);
  400. pointParent.gameObject.SetActive(false);
  401. clearBtn.gameObject.SetActive(false);
  402. middleContent.gameObject.SetActive(false);
  403. rightContent.gameObject.SetActive(false);
  404. LeftBtnClick(1, false);
  405. });
  406. num++;
  407. }
  408. }
  409. layerBtn.secContent.gameObject.SetActive(true);
  410. }
  411. else {
  412. List<LayerUnitData> tempDatas = new List<LayerUnitData>(GlobalData.layerUnitDatas);
  413. for (int j = 0; j < tempDatas.Count; j++)
  414. {
  415. if ((int)tempDatas[j].type == layerDatas[i].layerID)
  416. {
  417. int tempJ = j;
  418. SecLayerBtn secLayerBtn = Instantiate(secLayerBtnPrefab);
  419. secLayerBtn.SetLayerBtnData(tempDatas[j].name);
  420. secLayerBtn.GetComponent<RectTransform>().SetParent(layerBtn.secContent.GetComponent<RectTransform>());
  421. secLayerBtn.btn.onClick.AddListener(() => {
  422. CameraManager.SwitchCamera(0);
  423. viewMode = ViewMode.normal;
  424. StaticLod.instance.OnFoucusStatic(tempDatas[tempJ].name_pri);
  425. yZT.gameObject.SetActive(true);
  426. ChangeRightContent(tempJ);
  427. pointParent.gameObject.SetActive(false);
  428. clearBtn.gameObject.SetActive(false);
  429. middleContent.gameObject.SetActive(false);
  430. rightContent.gameObject.SetActive(false);
  431. LeftBtnClick(1, false);
  432. });
  433. num++;
  434. }
  435. }
  436. }
  437. layerBtn.btn.GetComponent<Button>().onClick.AddListener(() =>
  438. {
  439. for (int j = 0; j < layerBtns.Count; j++)
  440. {
  441. layerBtns[j].SetUseful(false);
  442. layerBtns[j].secContent.gameObject.SetActive(false);
  443. }
  444. layerBtns[index].SetUseful(true);
  445. layerBtns[index].secContent.gameObject.SetActive(true);
  446. //ChangeRuntimeLayer(index);
  447. });
  448. layerBtn.SetLayerBtnData(layerSprite[layerDatas[i].layerID], layerDatas[i].layerName, num.ToString());
  449. layerBtn.GetComponent<RectTransform>().SetParent(content.GetComponent<RectTransform>());
  450. layerBtn.transform.localScale = Vector3.one;
  451. layerBtns.Add(layerBtn);
  452. }
  453. content.GetComponent<VerticalLayoutGroup>().SetLayoutVertical();
  454. layerBtns[0].SetUseful(true);
  455. }
  456. void ChangeRightContent(int index) {
  457. for (int i = 0; i < infoRight.childCount; i++) {
  458. infoRight.GetChild(i).gameObject.SetActive(false);
  459. }
  460. infoRight.GetChild(index).gameObject.SetActive(true);
  461. GameObject title = infoRight.GetChild(index).GetChild(0).GetChild(1).gameObject;
  462. GameObject text1 = infoRight.GetChild(index).GetChild(0).GetChild(2).gameObject;
  463. if (title != null)
  464. {
  465. title.GetComponent<Text>().text = GlobalData.layerUnitDatas[index].name;
  466. }
  467. if (text1 != null)
  468. {
  469. text1.GetComponent<Text>().text = GlobalData.layerUnitDatas[index].text1;
  470. }
  471. if (infoRight.GetChild(index).GetChild(0).childCount > 3)
  472. {
  473. GameObject text2 = infoRight.GetChild(index).GetChild(0).GetChild(3).gameObject;
  474. if (text2 != null)
  475. {
  476. text2.GetComponent<Text>().text = GlobalData.layerUnitDatas[index].text2;
  477. }
  478. }
  479. }
  480. void InitPoint()
  481. {
  482. GameObject shaPan = GameObject.FindGameObjectWithTag("ShaPan");
  483. for (int i = 0; i < GlobalData.hotPointDatas.Count; i++)
  484. {
  485. HotPointData temp = GlobalData.hotPointDatas[i];
  486. Vector3 tempLocalPosition = CoordinateConverter.GeoToUGUISmall(temp.longitude, temp.latitude);
  487. //bool have = false;
  488. //for (int j = 0; j < runtimePointLib.Count; j++)
  489. //{
  490. // if (Vector3.Distance(tempLocalPosition, runtimePointLib[j].bingObj.transform.localPosition) < 0.1)
  491. // {
  492. // if (runtimePointLib[j].layerIDs.Contains((int)temp.type))
  493. // {
  494. // have = true;
  495. // break;
  496. // }
  497. // else {
  498. // have = true;
  499. // runtimePointLib[j].Refresh(hotPointSprite[8]);
  500. // runtimePointLib[j].layerIDs.Add((int)temp.type);
  501. // break;
  502. // }
  503. // }
  504. //}
  505. //if (have) {
  506. // continue;
  507. //}
  508. RuntimePoint newPoint = Instantiate(pointPrefab, Vector3.zero, Quaternion.identity);
  509. int tempI = i;
  510. newPoint.GetComponent<RectTransform>().SetParent(pointParent);
  511. newPoint.InitPoint(hotPointSprite[(int)(temp.type)], temp.name_pri, temp.name); ;
  512. newPoint.layerIDs.Add((int)(temp.type));
  513. newPoint.bingObj = Instantiate(runtimePointObj).gameObject;
  514. newPoint.bingObj.transform.SetParent(shaPan.transform.GetChild(6));
  515. newPoint.bingObj.transform.localEulerAngles = Vector3.zero;
  516. newPoint.bingObj.transform.localScale = Vector3.one;
  517. newPoint.bingObj.transform.localPosition = tempLocalPosition;
  518. newPoint.bingObj.name = temp.name;
  519. newPoint.onPointClick = () =>
  520. {
  521. OnNewPointClick(temp, newPoint);
  522. };
  523. runtimePointLib.Add(newPoint);
  524. }
  525. RunTimeLayerClick(0);
  526. RunTimeLayerClick(1);
  527. RunTimeLayerClick(2);
  528. RunTimeLayerClick(3);
  529. RunTimeLayerClick(4);
  530. RunTimeLayerClick(5);
  531. }
  532. int FindIndexByLayerUnitName(string name) {
  533. for (int i = 0; i < GlobalData.layerUnitDatas.Count; i++) {
  534. if (GlobalData.layerUnitDatas[i].name == name.Trim()) {
  535. return i;
  536. }
  537. }
  538. return -1;
  539. }
  540. void OnNewPointClick(HotPointData temp, RuntimePoint newPoint)
  541. {
  542. if ((int)temp.type == 4)
  543. {
  544. OnePicNav.instance.SwitchToGlobalWaterHeight();
  545. }
  546. else if ((int)temp.type >= 6 || newPoint.layerIDs.Count > 4)
  547. {
  548. Debug.Log(1111111111111);
  549. CameraManager.SwitchCamera(0);
  550. viewMode = ViewMode.normal;
  551. StaticLod.instance.OnFoucusStatic(newPoint.staticImp);
  552. yZT.gameObject.SetActive(true);
  553. int index = FindIndexByLayerUnitName(temp.name);
  554. ChangeRightContent(index);
  555. pointParent.gameObject.SetActive(false);
  556. clearBtn.gameObject.SetActive(false);
  557. middleContent.gameObject.SetActive(false);
  558. rightContent.gameObject.SetActive(false);
  559. LeftBtnClick(1, false);
  560. }
  561. }
  562. async Task InitData() {
  563. await new WaitUntil(() => {
  564. return GlobalData.layerUnitDatas.Count > 0;
  565. });
  566. }
  567. async Task InitPointData()
  568. {
  569. await new WaitUntil(() =>
  570. {
  571. return GlobalData.hotPointDatas.Count > 0;
  572. });
  573. }
  574. void Init() {
  575. yZT.gameObject.SetActive(false);
  576. clearBtn.gameObject.SetActive(true);
  577. pointParent.gameObject.SetActive(true);
  578. middleContent.gameObject.SetActive(true);
  579. rightContent.gameObject.SetActive(true);
  580. LeftBtnClick(currentActiveLeft);
  581. }
  582. void InitReturnBtn() {
  583. returnBtn.onClick.AddListener(() =>
  584. {
  585. CameraManager.SwitchCamera(1);
  586. viewMode = ViewMode.miniMap;
  587. Init();
  588. });
  589. }
  590. void ChangeRuntimeLayer(int layer,bool show) {
  591. if (show)
  592. {
  593. if (cancelLayer.Contains(layer))
  594. {
  595. cancelLayer.Remove(layer);
  596. }
  597. }
  598. else {
  599. if (!cancelLayer.Contains(layer))
  600. {
  601. cancelLayer.Add(layer);
  602. }
  603. }
  604. for (int i = 0; i < runtimePointLib.Count; i++) {
  605. if (runtimePointLib[i].layerIDs.Contains(layer)) {
  606. if (runtimePointLib[i].layerIDs.Count < 2)
  607. {
  608. runtimePointLib[i].gameObject.SetActive(show);
  609. }
  610. else {
  611. List<int> tempLayers = new List<int>(runtimePointLib[i].layerIDs);
  612. for (int j = 0; j < cancelLayer.Count; j++) {
  613. if (tempLayers.Contains(cancelLayer[j])) {
  614. tempLayers.Remove(cancelLayer[j]);
  615. }
  616. }
  617. if (tempLayers.Count < 1)
  618. {
  619. runtimePointLib[i].gameObject.SetActive(false);
  620. }
  621. else {
  622. runtimePointLib[i].gameObject.SetActive(true);
  623. }
  624. }
  625. }
  626. }
  627. }
  628. void ShootRay()
  629. {
  630. Ray ray = CameraManager.instance.mainCamera.ScreenPointToRay(Input.mousePosition);
  631. RaycastHit hit;
  632. if (Physics.Raycast(ray, out hit,20000,1<<8|1<<9))
  633. {
  634. CameraBird bird = CameraManager.instance.mainCamera.GetComponent<CameraBird>();
  635. if (hit.collider.gameObject.layer == LayerMask.NameToLayer("EarthTile"))
  636. {
  637. if(bird.transform.position.y > 1000)
  638. {
  639. bird.SetCameraToCenterFade(hit.point, 1100);
  640. }
  641. }
  642. else if(hit.collider.gameObject.layer == LayerMask.NameToLayer("StaticImportant"))
  643. {
  644. StaticImportant si = hit.collider.gameObject.GetComponent<StaticImportant>();
  645. int index = StaticLod.instance.OnFoucusStatic(si);
  646. yZT.gameObject.SetActive(true);
  647. ChangeRightContent(index);
  648. pointParent.gameObject.SetActive(false);
  649. clearBtn.gameObject.SetActive(false);
  650. middleContent.gameObject.SetActive(false);
  651. rightContent.gameObject.SetActive(false);
  652. LeftBtnClick(1,false);
  653. }
  654. }
  655. else
  656. {
  657. Debug.Log("No hit");
  658. }
  659. }
  660. private void Update()
  661. {
  662. if (Input.GetMouseButtonDown(0)) // 检测鼠标左键点击
  663. {
  664. clickInterval = 0.0f;
  665. startClickPosition = Input.mousePosition;
  666. }
  667. clickInterval += Time.deltaTime;
  668. if (Input.GetMouseButtonUp(0)) {
  669. if (clickInterval < 0.2f && Vector3.Distance(startClickPosition,Input.mousePosition) < 10f) {
  670. if (!CameraManager.instance.secondCamera.enabled)
  671. {
  672. ShootRay();
  673. }
  674. }
  675. }
  676. }
  677. private void LateUpdate()
  678. {
  679. for (int i = 0; i < regionLayerInfo.Length; i++)
  680. {
  681. if (regionLayerInfo[i].gameObject.activeSelf) {
  682. regionLayerInfo[i].anchoredPosition = CameraManager.instance.secondCamera.WorldToScreenPoint(regionLayerObj[i].transform.position);
  683. }
  684. }
  685. for (int i = 0; i < riverLayerInfo.Length; i++)
  686. {
  687. if (riverLayerInfo[i].gameObject.activeSelf)
  688. {
  689. riverLayerInfo[i].anchoredPosition = CameraManager.instance.secondCamera.WorldToScreenPoint(riverLayerObj[i].transform.position);
  690. }
  691. }
  692. for (int i = 0; i < lakeLayerInfo.Length; i++)
  693. {
  694. if (lakeLayerInfo[i].gameObject.activeSelf)
  695. {
  696. lakeLayerInfo[i].anchoredPosition = CameraManager.instance.secondCamera.WorldToScreenPoint(lakeLayerObj[i].transform.position);
  697. }
  698. }
  699. }
  700. }