YZTLayer.cs 28 KB

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