BaseStudyForm.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666
  1. using System;
  2. using Newtonsoft.Json;
  3. using Newtonsoft.Json.Serialization;
  4. using DG.Tweening;
  5. using System.IO;
  6. using GameFramework.Event;
  7. using UnityEngine;
  8. using UnityEngine.UI;
  9. using UnityGameFramework.Runtime;
  10. using Vuplex.WebView;
  11. using System.Collections;
  12. public class BaseStudyForm : UIFormLogic
  13. {
  14. private GameObject _devices;
  15. private GameObject _topology;
  16. private GameObject _scene;
  17. private GameObject _study;
  18. private CanvasWebViewPrefab webViewPrefab;
  19. //切换板块按钮
  20. private GameObject _naviObj;
  21. private Button _baseStudyNaviB1;
  22. private Button _baseStudyNaviB2;
  23. private Button _baseStudyNaviB3;
  24. private Button _baseStudyNaviB4;
  25. private GameObject topologyLeft;
  26. private GameObject topologyRight;
  27. private GameObject topologyUp;
  28. private GameObject topologyMiddle;
  29. private GameObject topologyDown;
  30. private Button _rltjBtn;
  31. private Button _3dtpBtn;
  32. private Button _2dtpBtn;
  33. private RectTransform _3dtpList;
  34. private RectTransform _2dtpList;
  35. private RectTransform _eleList;
  36. private Button _3db1;
  37. private Button _3db2;
  38. private Button _3db3;
  39. private Button _3db4;
  40. private Button _3db5;
  41. private Button _ele1;
  42. private Button _ele2;
  43. private Button _ele3;
  44. private Button _2db1;
  45. private Button _2db2;
  46. private Button _2db3;
  47. private Button _2db4;
  48. private Button _2db5;
  49. public Sprite[] allTopo0;
  50. public Sprite[] allTopo1;
  51. public Sprite[] allTopo2;
  52. public Sprite[] allTopo3;
  53. public Sprite[] allTopo4;
  54. public Sprite[] allTopo5;
  55. private Image _2DTopoImage;
  56. private Button _2DTopoClose;
  57. private Button _2DTopoNext;
  58. private Button _2DTopoPrev;
  59. private Button _3dtpChangeEleBtn;
  60. private Button _3dtpVisitBtn;
  61. private Button _3dtpCloseBtn;
  62. private bool _showRLTJ = true;
  63. //当前板块
  64. private int _currentBaseStudyType;
  65. private int _currentPoloType;
  66. public int CurrentBaseStudyType {
  67. get { return _currentBaseStudyType; }
  68. }
  69. public int CurrentPoloType
  70. {
  71. get { return _currentPoloType; }
  72. }
  73. private int _current2DPoloType = -99;
  74. public int Current2DPoloType
  75. {
  76. get { return _current2DPoloType; }
  77. }
  78. private int _current2DPoloSecondType = 0;
  79. public Sprite[] current2DImages;
  80. private bool visitMode = false;
  81. //漫游场景切换按钮
  82. private Button _sceneNaviB1;
  83. private Button _sceneNaviB2;
  84. //模型普通、爆炸图按钮
  85. private Button _normalModel;
  86. private Button _expModel;
  87. //设备信息
  88. private Text _devicesNameText;
  89. private Text _typeIdText;
  90. private Text _sizeText;
  91. private Text _companyText;
  92. //按钮图标
  93. public Sprite[] naviButtonBGs;
  94. public Sprite[] devicesNaviIcons;
  95. public Sprite[] topologyNaviIcons;
  96. public Sprite[] sceneNaviIcons;
  97. public Sprite[] studyNaviIcons;
  98. public Sprite[] topologyRLTJIcons;
  99. private GameObject tvOutline;
  100. private RawImage tvFrame;
  101. public Transform deviceList;
  102. public DevicesItemBase devicesItemTemplate;
  103. protected override void OnInit(object userData)
  104. {
  105. base.OnInit(userData);
  106. InItUiComponent();
  107. }
  108. protected override void OnOpen(object userData)
  109. {
  110. base.OnOpen(userData);
  111. visitMode = false;
  112. GameMain.Event.Subscribe(ChangeDevicesModelEvent.EventId, OnChangeModel);
  113. GameMain.Event.Subscribe(AnyButtomClickEvent.EventId, OnCloseList);
  114. GameMain.Event.Subscribe(DownloadSuccessEventArgs.EventId,OnDownLoadSuccess);
  115. GameMain.Event.Subscribe(Stop3DTopoTimeLineEvent.EventId, OnEndPlayTimeLine);
  116. }
  117. protected override void OnClose(bool isShutdown, object userData)
  118. {
  119. base.OnClose(isShutdown, userData);
  120. visitMode = false;
  121. GameMain.Event.Unsubscribe(ChangeDevicesModelEvent.EventId, OnChangeModel);
  122. GameMain.Event.Unsubscribe(AnyButtomClickEvent.EventId, OnCloseList);
  123. GameMain.Event.Unsubscribe(DownloadSuccessEventArgs.EventId,OnDownLoadSuccess);
  124. GameMain.Event.Unsubscribe(Stop3DTopoTimeLineEvent.EventId, OnEndPlayTimeLine);
  125. }
  126. /// <summary>
  127. /// //初始化UI组件
  128. /// </summary>
  129. private void InItUiComponent()
  130. {
  131. _devices = this.transform.Find("3DDevices").gameObject;
  132. _topology = this.transform.Find("3DTopology").gameObject;
  133. _scene = this.transform.Find("3DScene").gameObject;
  134. _study = this.transform.Find("3DStudy").gameObject;
  135. _topology.SetActive(false);
  136. _scene.SetActive(false);
  137. _study.SetActive(false);
  138. webViewPrefab = _study.GetComponentInChildren<CanvasWebViewPrefab>();
  139. webViewPrefab.Initialized += InitWebListen;
  140. _currentBaseStudyType = 0;
  141. _currentPoloType = 0;
  142. _naviObj = this.transform.Find("Navi").gameObject;
  143. _baseStudyNaviB1 = this.transform.Find("Navi/B1").GetComponent<Button>();
  144. _baseStudyNaviB2 = this.transform.Find("Navi/B2").GetComponent<Button>();
  145. _baseStudyNaviB3 = this.transform.Find("Navi/B3").GetComponent<Button>();
  146. _baseStudyNaviB4 = this.transform.Find("Navi/B4").GetComponent<Button>();
  147. _baseStudyNaviB1.onClick.AddListener(() => { ChangeBaseStudy(0); GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_baseStudyNaviB1)); });
  148. _baseStudyNaviB2.onClick.AddListener(() => { ChangeBaseStudy(1); GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_baseStudyNaviB2)); });
  149. _baseStudyNaviB3.onClick.AddListener(() => { ChangeBaseStudy(2); GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_baseStudyNaviB3)); });
  150. _baseStudyNaviB4.onClick.AddListener(() => { ChangeBaseStudy(3); GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_baseStudyNaviB4)); });
  151. topologyLeft = this.transform.Find("3DTopology/Left").gameObject;
  152. topologyRight = this.transform.Find("3DTopology/Right").gameObject;
  153. topologyUp = this.transform.Find("3DTopology/Up").gameObject;
  154. topologyMiddle = this.transform.Find("3DTopology/Middle").gameObject;
  155. topologyDown = this.transform.Find("3DTopology/Down").gameObject;
  156. _2DTopoImage = topologyMiddle.transform.Find("Image").GetComponent<Image>();
  157. _2DTopoClose = topologyMiddle.transform.Find("Close").GetComponent<Button>();
  158. _2DTopoNext = topologyMiddle.transform.Find("Right").GetComponent<Button>();
  159. _2DTopoPrev = topologyMiddle.transform.Find("Left").GetComponent<Button>();
  160. _rltjBtn = this.transform.Find("3DTopology/Down/RLTJBtn").GetComponent<Button>();
  161. _3dtpBtn = this.transform.Find("3DTopology/Down/3DTPBtn").GetComponent<Button>();
  162. _2dtpBtn = this.transform.Find("3DTopology/Down/2DTPBtn").GetComponent<Button>();
  163. _3dtpList = this.transform.Find("3DTopology/Down/List1").GetComponent<RectTransform>();
  164. _2dtpList = this.transform.Find("3DTopology/Down/List2").GetComponent<RectTransform>();
  165. _3db1 = _3dtpList.transform.Find("3DB1").GetComponent<Button>();
  166. _3db2 = _3dtpList.transform.Find("3DB2").GetComponent<Button>();
  167. _3db3 = _3dtpList.transform.Find("3DB3").GetComponent<Button>();
  168. _3db4 = _3dtpList.transform.Find("3DB4").GetComponent<Button>();
  169. _3db5 = _3dtpList.transform.Find("3DB5").GetComponent<Button>();
  170. _2db1 = _2dtpList.transform.Find("2DB1").GetComponent<Button>();
  171. _2db2 = _2dtpList.transform.Find("2DB2").GetComponent<Button>();
  172. _2db3 = _2dtpList.transform.Find("2DB3").GetComponent<Button>();
  173. _2db4 = _2dtpList.transform.Find("2DB4").GetComponent<Button>();
  174. _2db5 = _2dtpList.transform.Find("2DB5").GetComponent<Button>();
  175. _3dtpChangeEleBtn = this.transform.Find("3DTopology/ChangeEle").GetComponent<Button>();
  176. _3dtpChangeEleBtn.gameObject.SetActive(false);
  177. _eleList = _3dtpChangeEleBtn.transform.Find("Listele").GetComponent<RectTransform>();
  178. _ele1 = _eleList.transform.Find("ele1").GetComponent<Button>();
  179. _ele2 = _eleList.transform.Find("ele2").GetComponent<Button>();
  180. _ele3 = _eleList.transform.Find("ele3").GetComponent<Button>();
  181. _3dtpVisitBtn = this.transform.Find("3DTopology/Visit").GetComponent<Button>();
  182. _3dtpVisitBtn.gameObject.SetActive(false);
  183. _3dtpCloseBtn = this.transform.Find("3DTopology/Ret").GetComponent<Button>();
  184. _rltjBtn.onClick.AddListener(()=> {
  185. ShowRLTJ(!_showRLTJ);
  186. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_rltjBtn));
  187. });
  188. _3dtpBtn.onClick.AddListener(() =>
  189. {
  190. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_3dtpBtn));
  191. _3dtpList.DOScaleY(_3dtpList.localScale.y == 0 ? 1 : 0, 0.3f);
  192. });
  193. _2dtpBtn.onClick.AddListener(() =>
  194. {
  195. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_2dtpBtn));
  196. _2dtpList.DOScaleY(_2dtpList.localScale.y == 0 ? 1 : 0, 0.3f);
  197. });
  198. _3db1.onClick.AddListener(()=> {
  199. Change3DTopo(0);
  200. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_3db1));
  201. });
  202. _3db2.onClick.AddListener(() => {
  203. Change3DTopo(1);
  204. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_3db2));
  205. });
  206. _3db3.onClick.AddListener(() => {
  207. Change3DTopo(2);
  208. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_3db3));
  209. });
  210. _3db4.onClick.AddListener(() => {
  211. Change3DTopo(3);
  212. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_3db4));
  213. });
  214. _3db5.onClick.AddListener(() => {
  215. Change3DTopo(4);
  216. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_3db5));
  217. });
  218. _3dtpChangeEleBtn.onClick.AddListener(() => {
  219. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_3dtpVisitBtn));
  220. _eleList.DOScaleY(_eleList.localScale.y == 0 ? 1 : 0, 0.2f);
  221. });
  222. _ele1.onClick.AddListener(() => {
  223. GameMain.Event.Fire(this, ChangeEleTopoTypeEvent.Create(0));
  224. _ele1.image.color = Color.white;
  225. _ele2.image.color = Color.clear;
  226. _ele3.image.color = Color.clear;
  227. });
  228. _ele2.onClick.AddListener(() => {
  229. GameMain.Event.Fire(this, ChangeEleTopoTypeEvent.Create(1));
  230. _ele2.image.color = Color.white;
  231. _ele1.image.color = Color.clear;
  232. _ele3.image.color = Color.clear;
  233. });
  234. _ele3.onClick.AddListener(() => {
  235. GameMain.Event.Fire(this, ChangeEleTopoTypeEvent.Create(2));
  236. _ele3.image.color = Color.white;
  237. _ele1.image.color = Color.clear;
  238. _ele2.image.color = Color.clear;
  239. });
  240. _3dtpVisitBtn.onClick.AddListener(()=> {
  241. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_3dtpVisitBtn));
  242. GameMain.Event.Fire(this, Change3DTopoTimeLineEvent.Create(_currentPoloType));
  243. VisitMode(true);
  244. });
  245. _2DTopoClose.onClick.AddListener(() =>
  246. {
  247. topologyMiddle.gameObject.SetActive(false);
  248. _current2DPoloSecondType = 0;
  249. });
  250. _2DTopoNext.onClick.AddListener(Next);
  251. _2DTopoPrev.onClick.AddListener(Prev);
  252. _2db1.onClick.AddListener(() => {
  253. Change2Topo(0);
  254. });
  255. _2db2.onClick.AddListener(() => {
  256. Change2Topo(1);
  257. });
  258. _2db3.onClick.AddListener(() => {
  259. Change2Topo(2);
  260. });
  261. _2db4.onClick.AddListener(() => {
  262. Change2Topo(3);
  263. });
  264. _2db5.onClick.AddListener(() => {
  265. Change2Topo(4);
  266. });
  267. _3dtpCloseBtn.onClick.AddListener(() =>
  268. {
  269. if (!visitMode)
  270. {
  271. ChangeBaseStudy(0);
  272. GameMain.Event.Fire(this, AnyButtomClickEvent.Create(_3dtpCloseBtn));
  273. }
  274. else {
  275. GameMain.Event.Fire(this, Stop3DTopoTimeLineEvent.Create());
  276. }
  277. });
  278. _sceneNaviB1 = this.transform.Find("3DScene/Navi/B1").GetComponent<Button>();
  279. _sceneNaviB2 = this.transform.Find("3DScene/Navi/B2").GetComponent<Button>();
  280. _sceneNaviB1.onClick.AddListener(() => ChangeRoamType(0));
  281. _sceneNaviB2.onClick.AddListener(() => ChangeRoamType(1));
  282. _normalModel = this.transform.Find("3DDevices/Navi/Btn1").GetComponent<Button>();
  283. _expModel = this.transform.Find("3DDevices/Navi/Btn2").GetComponent<Button>();
  284. _normalModel.onClick.AddListener(() => { ChangeModelType(0); });
  285. _expModel.onClick.AddListener(() => { ChangeModelType(1); });
  286. _devicesNameText = this.transform.Find("3DDevices/DevicesInfo/Content/C1/C1Content").GetComponent<Text>();
  287. _typeIdText = this.transform.Find("3DDevices/DevicesInfo/Content/C2/C2Content").GetComponent<Text>();
  288. _sizeText = this.transform.Find("3DDevices/DevicesInfo/Content/C3/C3Content").GetComponent<Text>();
  289. _companyText = this.transform.Find("3DDevices/DevicesInfo/Content/C4/C4Content").GetComponent<Text>();
  290. deviceList = this.transform.Find("3DDevices/DevicesLib/ScrollView/Viewport/Content").transform;
  291. ReadMachineInfo();
  292. }
  293. private void VisitMode(bool mode) {
  294. visitMode = mode;
  295. topologyLeft.SetActive(!mode);
  296. topologyUp.SetActive(!mode);
  297. topologyRight.SetActive(!mode);
  298. topologyDown.SetActive(!mode);
  299. _3dtpVisitBtn.gameObject.SetActive(!mode);
  300. }
  301. private void ShowRLTJ(bool show)
  302. {
  303. _showRLTJ = show;
  304. topologyLeft.gameObject.SetActive(_showRLTJ);
  305. topologyRight.gameObject.SetActive(_showRLTJ);
  306. topologyUp.gameObject.SetActive(_showRLTJ);
  307. _rltjBtn.image.sprite = _showRLTJ ? topologyRLTJIcons[1] : topologyRLTJIcons[0];
  308. }
  309. private void InitWebListen(object sender, EventArgs e)
  310. {
  311. webViewPrefab.WebView.MessageEmitted += OnGetWebMessage;
  312. Debug.Log("添加网页监听");
  313. }
  314. private void ReadMachineInfo() {
  315. string machineContent = File.ReadAllText(Application.dataPath + "/Config/MachineInfo.json");
  316. MachineInfoData data = JsonConvert.DeserializeObject<MachineInfoData>(machineContent);
  317. for (int i = 0; i < data.MachineInfo.Length; i++) {
  318. DevicesItemBase child = Instantiate(devicesItemTemplate);
  319. child.data.name = data.MachineInfo[i].Name;
  320. child.data.typeId = data.MachineInfo[i].TypeId;
  321. child.data.size = data.MachineInfo[i].Size;
  322. child.data.company = data.MachineInfo[i].Company;
  323. child.data.aniName = data.MachineInfo[i].AniName;
  324. child.data.modelName = data.MachineInfo[i].ModelName;
  325. bool burst = data.MachineInfo[i].burst;
  326. child.burstImage.gameObject.SetActive(burst);
  327. child.transform.SetParent(deviceList);
  328. child.transform.localScale = Vector3.one;
  329. child.GetComponent<RectTransform>().anchoredPosition3D = new Vector3(child.GetComponent<RectTransform>().anchoredPosition3D.x, child.GetComponent<RectTransform>().anchoredPosition3D.y, 0);
  330. child.Init();
  331. }
  332. }
  333. private void ChangeRoamType(int type)
  334. {
  335. switch (type)
  336. {
  337. case 0:
  338. _sceneNaviB1.image.sprite = naviButtonBGs[1];
  339. _sceneNaviB2.image.sprite = naviButtonBGs[0];
  340. break;
  341. case 1:
  342. _sceneNaviB1.image.sprite = naviButtonBGs[0];
  343. _sceneNaviB2.image.sprite = naviButtonBGs[1];
  344. break;
  345. }
  346. GameMain.Event.Fire(this, ChangeRoamTypeEvent.Create(type));
  347. }
  348. private void PlayerVideo(bool play) {
  349. tvOutline.gameObject.SetActive(play);
  350. GameMain.Event.Fire(this, PlayerVideoEvent.Create(play));
  351. }
  352. private void ChangeBaseStudy(int type)
  353. {
  354. if(_currentBaseStudyType==type)
  355. return;
  356. _devices.SetActive(false);
  357. _topology.SetActive(false);
  358. _scene.SetActive(false);
  359. _study.SetActive(false);
  360. _naviObj.SetActive(false);
  361. switch (type)
  362. {
  363. case 0:
  364. _baseStudyNaviB1.image.sprite = devicesNaviIcons[1];
  365. _baseStudyNaviB2.image.sprite = topologyNaviIcons[0];
  366. _baseStudyNaviB3.image.sprite = sceneNaviIcons[0];
  367. _baseStudyNaviB4.image.sprite = studyNaviIcons[0];
  368. HttpGlobal.SendLogToServer("进入了三维设备");
  369. _devices.SetActive(true);
  370. _naviObj.SetActive(true);
  371. break;
  372. case 1:
  373. _baseStudyNaviB1.image.sprite = devicesNaviIcons[0];
  374. _baseStudyNaviB2.image.sprite = topologyNaviIcons[1];
  375. _baseStudyNaviB3.image.sprite = sceneNaviIcons[0];
  376. _baseStudyNaviB4.image.sprite = studyNaviIcons[0];
  377. HttpGlobal.SendLogToServer("进入了三维拓扑");
  378. _topology.SetActive(true);
  379. break;
  380. case 2:
  381. _baseStudyNaviB1.image.sprite = devicesNaviIcons[0];
  382. _baseStudyNaviB2.image.sprite = topologyNaviIcons[0];
  383. _baseStudyNaviB3.image.sprite = sceneNaviIcons[1];
  384. _baseStudyNaviB4.image.sprite = studyNaviIcons[0];
  385. HttpGlobal.SendLogToServer("进入了三维漫游:");
  386. _scene.SetActive(true);
  387. _naviObj.SetActive(true);
  388. break;
  389. case 3:
  390. _baseStudyNaviB1.image.sprite = devicesNaviIcons[0];
  391. _baseStudyNaviB2.image.sprite = topologyNaviIcons[0];
  392. _baseStudyNaviB3.image.sprite = sceneNaviIcons[0];
  393. _baseStudyNaviB4.image.sprite = studyNaviIcons[1];
  394. HttpGlobal.SendLogToServer("进入了资料学习:");
  395. _study.SetActive(true);
  396. _naviObj.SetActive(true);
  397. StartCoroutine(WaitForBrowser());
  398. break;
  399. }
  400. _currentBaseStudyType = type;
  401. GameMain.Event.Fire(this,ChangeBaseStudyTypeEvent.Create(type));
  402. }
  403. private void OnEndPlayTimeLine(object sender, GameEventArgs e)
  404. {
  405. VisitMode(false);
  406. }
  407. private void Change3DTopo(int type)
  408. {
  409. if (_currentPoloType == type)
  410. return;
  411. _3db1.image.color = Color.clear;
  412. _3db2.image.color = Color.clear;
  413. _3db3.image.color = Color.clear;
  414. _3db4.image.color = Color.clear;
  415. _3db5.image.color = Color.clear;
  416. HttpGlobal.SendLogToServer("学习了三维拓扑" + type.ToString());
  417. switch (type) {
  418. case 0:
  419. _3dtpChangeEleBtn.gameObject.SetActive(false);
  420. _3dtpVisitBtn.gameObject.SetActive(false);
  421. _3db1.image.color = Color.white;
  422. break;
  423. case 1:
  424. _3dtpChangeEleBtn.gameObject.SetActive(false);
  425. _3dtpVisitBtn.gameObject.SetActive(false);
  426. _3db2.image.color = Color.white;
  427. break;
  428. case 2:
  429. _3dtpChangeEleBtn.gameObject.SetActive(true);
  430. _3dtpVisitBtn.gameObject.SetActive(false);
  431. _3db3.image.color = Color.white;
  432. break;
  433. case 3:
  434. _3dtpChangeEleBtn.gameObject.SetActive(false);
  435. _3dtpVisitBtn.gameObject.SetActive(true);
  436. _3db4.image.color = Color.white;
  437. break;
  438. case 4:
  439. _3dtpChangeEleBtn.gameObject.SetActive(false);
  440. _3dtpVisitBtn.gameObject.SetActive(false);
  441. _3db5.image.color = Color.white;
  442. break;
  443. }
  444. _currentPoloType = type;
  445. GameMain.Event.Fire(this, Change3DTopoTypeEvent.Create(type));
  446. }
  447. private void Change2Topo(int type)
  448. {
  449. _2dtpList.DOScaleY(0, 0.3f);
  450. if (_current2DPoloType == type)
  451. return;
  452. HttpGlobal.SendLogToServer("学习了二维拓扑" + type.ToString());
  453. topologyMiddle.SetActive(true);
  454. _current2DPoloSecondType = 0;
  455. switch (type)
  456. {
  457. case 0:
  458. current2DImages = allTopo0;
  459. break;
  460. case 1:
  461. current2DImages = allTopo1;
  462. break;
  463. case 2:
  464. current2DImages = allTopo2;
  465. break;
  466. case 3:
  467. current2DImages = allTopo3;
  468. break;
  469. case 4:
  470. current2DImages = allTopo4;
  471. break;
  472. }
  473. if(current2DImages.Length > 0)
  474. _2DTopoImage.sprite = current2DImages[_current2DPoloSecondType];
  475. _currentPoloType = type;
  476. }
  477. private void Next() {
  478. ++_current2DPoloSecondType;
  479. if (_current2DPoloSecondType >= current2DImages.Length) {
  480. --_current2DPoloSecondType;
  481. }
  482. else {
  483. _2DTopoImage.sprite = current2DImages[_current2DPoloSecondType];
  484. }
  485. }
  486. private void Prev()
  487. {
  488. --_current2DPoloSecondType;
  489. if (_current2DPoloSecondType <= 0)
  490. {
  491. ++_current2DPoloSecondType;
  492. }
  493. else
  494. {
  495. _2DTopoImage.sprite = current2DImages[_current2DPoloSecondType];
  496. }
  497. }
  498. IEnumerator WaitForBrowser()
  499. {
  500. yield return new WaitUntil(() => webViewPrefab.WebView != null);
  501. Debug.Log("webViewPrefab.WebView != null");
  502. yield return new WaitUntil(() => webViewPrefab.WebView.IsInitialized);
  503. Debug.Log("webViewPrefab.WebView.IsInitialized");
  504. long timestamp = System.DateTime.Now.Ticks / 10000000;
  505. Debug.Log(string.Format("{0}{1}&v={2}", HttpAddress.docAddress, UserData.token, timestamp));
  506. webViewPrefab.WebView.LoadUrl(string.Format("{0}{1}&v={2}", HttpAddress.docAddress, UserData.token, timestamp));
  507. //webViewPrefab.WebView.LoadUrl("https://4dart.4dage.com/Test/test.html");
  508. }
  509. private void ChangeModelType(int type)
  510. {
  511. switch (type)
  512. {
  513. case 0:
  514. _normalModel.image.sprite = naviButtonBGs[1];
  515. _expModel.image.sprite = naviButtonBGs[0];
  516. break;
  517. case 1:
  518. _normalModel.image.sprite = naviButtonBGs[0];
  519. _expModel.image.sprite = naviButtonBGs[1];
  520. break;
  521. }
  522. GameMain.Event.Fire(this,ChangeModelTypeEvent.Create(type));
  523. }
  524. public void SetTVFrame(RenderTexture rt)
  525. {
  526. tvFrame.texture = rt;
  527. }
  528. private void OnChangeModel(object sender,GameEventArgs e)
  529. {
  530. ChangeDevicesModelEvent args = (ChangeDevicesModelEvent)e;
  531. _devicesNameText.text = args.data.name;
  532. _typeIdText.text = args.data.typeId;
  533. _sizeText.text = args.data.size;
  534. _companyText.text = args.data.company;
  535. _normalModel.image.sprite = naviButtonBGs[1];
  536. _expModel.image.sprite = naviButtonBGs[0];
  537. }
  538. private void OnCloseList(object sender, GameEventArgs e)
  539. {
  540. AnyButtomClickEvent args = (AnyButtomClickEvent)e;
  541. if (args.btn != _2dtpBtn) {
  542. _2dtpList.localScale = new Vector3(1, 0, 1);
  543. }
  544. if (args.btn != _3dtpBtn)
  545. {
  546. _3dtpList.localScale = new Vector3(1, 0, 1);
  547. }
  548. }
  549. private void OnGetWebMessage(object sender,EventArgs<string> args)
  550. {
  551. if (args.Value.Contains("\"type\":\"downloadUrl\""))
  552. {
  553. var message = JsonConvert.DeserializeObject<WebMessage>(args.Value);
  554. var fileName = Path.GetFileName(message.message);
  555. LocalDialog.GetStorageFolderName("存储位置:", (string s) =>
  556. {
  557. if (!s.Equals(""))
  558. {
  559. Debug.Log($"下载 {message.message} 文件到:{(s+"/"+fileName)}");
  560. GameMain.Download.AddDownload(s+"/"+fileName, message.message);
  561. }
  562. });
  563. }
  564. }
  565. private void OnDownLoadSuccess(object sender,GameEventArgs e)
  566. {
  567. DownloadSuccessEventArgs args = (DownloadSuccessEventArgs)e;
  568. Debug.Log(args.DownloadUri+" 下载成功");
  569. GameMain.UI.OpenUIForm("Tips",new TipsData("下载完成","下载完成!"));
  570. }
  571. }
  572. [Serializable]
  573. public class WebMessage
  574. {
  575. public string type;
  576. public string message;
  577. }