ProcedureModelView.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using GameFramework;
  5. using GameFramework.Event;
  6. using GameFramework.Fsm;
  7. using GameFramework.Procedure;
  8. using GameFramework.Resource;
  9. using UnityEngine;
  10. using UnityAsync;
  11. using UnityEngine.EventSystems;
  12. using UnityEngine.SceneManagement;
  13. using UnityGameFramework.Runtime;
  14. using WaitUntil = UnityAsync.WaitUntil;
  15. public class ProcedureModelView : ProcedureBase
  16. {
  17. private int studyCenterFormId = -99;
  18. private int baseStudyFormId = -99;
  19. private int trainStudyFormId = -99;
  20. private int examStudyFormId = -99;
  21. private int coolTrainStudyFormId = -99;//冷却系统
  22. private int eleTrainStudyFormId = -99;//冷却系统
  23. private int netTrainStudyFormId = -99;//网络系统
  24. private int appTrainStudyFormId = -99;//App系统
  25. private int obTrainStudyFormId = -99;//App系统
  26. private FocusModelViewCtrl _focusModelViewCtrl;
  27. private int currentGameMode= 0;
  28. private int currentBaseStudyType = 0;
  29. private int currentTrainStudyType = -1;
  30. protected override void OnInit(IFsm<IProcedureManager> procedureOwner)
  31. {
  32. base.OnInit(procedureOwner);
  33. }
  34. protected override void OnEnter(IFsm<IProcedureManager> procedureOwner)
  35. {
  36. base.OnEnter(procedureOwner);
  37. GameMain.Event.Subscribe(ChangeGameModeTypeEvent.EventId, ChangeGameMode);
  38. GameMain.Event.Subscribe(ChangeBaseStudyTypeEvent.EventId,ChangeBaseStudy);
  39. GameMain.Event.Subscribe(Change3DTopoTypeEvent.EventId, Change3DTopo);
  40. GameMain.Event.Subscribe(ChangeEleTopoTypeEvent.EventId, ChangeElePar);
  41. GameMain.Event.Subscribe(ChangeTrainStudyTypeEvent.EventId, ChangeTrainStudy);
  42. GameMain.Event.Subscribe(LoginResultEvent.EventId,GotoLoginIn);
  43. studyCenterFormId = GameMain.UI.OpenUIForm("StudyCenter","Base");
  44. }
  45. protected override void OnUpdate(IFsm<IProcedureManager> procedureOwner, float elapseSeconds, float realElapseSeconds)
  46. {
  47. base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
  48. //RotationCamera();
  49. }
  50. private void ChangeGameMode(object sender, GameEventArgs e)
  51. {
  52. ChangeGameModeTypeEvent args = (ChangeGameModeTypeEvent)e;
  53. if (args.type != currentGameMode)
  54. {
  55. //关掉其他模块的UI
  56. switch (currentGameMode)
  57. {
  58. case 0:
  59. if (baseStudyFormId != -99)
  60. {
  61. GameMain.UI.CloseUIForm(baseStudyFormId);
  62. baseStudyFormId = -99;
  63. }
  64. break;
  65. case 1:
  66. if (trainStudyFormId != -99)
  67. {
  68. GameMain.UI.CloseUIForm(trainStudyFormId);
  69. trainStudyFormId = -99;
  70. }
  71. break;
  72. case 2:
  73. if (examStudyFormId != -99)
  74. {
  75. GameMain.UI.CloseUIForm(examStudyFormId);
  76. examStudyFormId = -99;
  77. }
  78. break;
  79. case 3:
  80. if (netTrainStudyFormId != -99)
  81. {
  82. GameMain.UI.CloseUIForm(netTrainStudyFormId);
  83. netTrainStudyFormId = -99;
  84. }
  85. break;
  86. case 4:
  87. if (coolTrainStudyFormId != -99)
  88. {
  89. GameMain.UI.CloseUIForm(coolTrainStudyFormId);
  90. coolTrainStudyFormId = -99;
  91. }
  92. break;
  93. case 5:
  94. if (eleTrainStudyFormId != -99)
  95. {
  96. GameMain.UI.CloseUIForm(eleTrainStudyFormId);
  97. eleTrainStudyFormId = -99;
  98. }
  99. break;
  100. case 6:
  101. if (appTrainStudyFormId != -99)
  102. {
  103. GameMain.UI.CloseUIForm(appTrainStudyFormId);
  104. appTrainStudyFormId = -99;
  105. }
  106. break;
  107. case 7:
  108. if (obTrainStudyFormId != -99)
  109. {
  110. GameMain.UI.CloseUIForm(obTrainStudyFormId);
  111. obTrainStudyFormId = -99;
  112. }
  113. break;
  114. }
  115. switch (args.type)
  116. {
  117. case 0:
  118. baseStudyFormId = GameMain.UI.OpenUIForm("BaseStudy", "Normal");
  119. //GameMain.Event.Fire(this,ChangeBaseStudyTypeEvent.Create(GameMain.UI.GetUIForm(baseStudyFormId).GetComponent<BaseStudyForm>().CurrentBaseStudyType));
  120. GameMain.Event.Fire(this,ChangeBaseStudyTypeEvent.Create(0));
  121. break;
  122. case 1:
  123. trainStudyFormId = GameMain.UI.OpenUIForm("TrainStudy", "Normal");
  124. GameMain.Event.Fire(this,ChangeTrainStudyTypeEvent.Create(0));
  125. break;
  126. case 2:
  127. examStudyFormId = GameMain.UI.OpenUIForm("ExamStudy", "Normal");
  128. GameMain.Event.Fire(this, OnBeginExamEvent.Create(UserData.token));
  129. break;
  130. case 3:
  131. netTrainStudyFormId = GameMain.UI.OpenUIForm("NetTrainStudy", "Normal");
  132. GameMain.Event.Fire(this,ChangeTrainStudyTypeEvent.Create(1));
  133. break;
  134. case 4:
  135. coolTrainStudyFormId = GameMain.UI.OpenUIForm("CoolTrainStudy", "Normal");
  136. GameMain.Event.Fire(this,ChangeTrainStudyTypeEvent.Create(3));
  137. break;
  138. case 5:
  139. eleTrainStudyFormId = GameMain.UI.OpenUIForm("EleTrainStudy", "Normal");
  140. GameMain.Event.Fire(this, ChangeTrainStudyTypeEvent.Create(2));
  141. break;
  142. case 6:
  143. appTrainStudyFormId = GameMain.UI.OpenUIForm("AppTrainStudy", "Normal");
  144. GameMain.Event.Fire(this, ChangeTrainStudyTypeEvent.Create(6));
  145. break;
  146. case 7:
  147. obTrainStudyFormId = GameMain.UI.OpenUIForm("ObTrainStudy", "Normal");
  148. GameMain.Event.Fire(this, ChangeTrainStudyTypeEvent.Create(5));
  149. break;
  150. }
  151. currentGameMode = args.type;
  152. }
  153. }
  154. private void GotoLoginIn(object sender, GameEventArgs e) {
  155. LoginResultEvent args = (LoginResultEvent)e;
  156. switch (args.currentResult) {
  157. case LoginResultEvent.LoginResult.success:
  158. baseStudyFormId = GameMain.UI.OpenUIForm("BaseStudy", "Normal");
  159. currentGameMode = 0;
  160. SceneManager.LoadScene("Machine");
  161. currentBaseStudyType = 0;
  162. currentTrainStudyType = -1;
  163. break;
  164. case LoginResultEvent.LoginResult.failure:
  165. break;
  166. }
  167. }
  168. private void ChangeBaseStudy(object sender, GameEventArgs e)
  169. {
  170. ChangeBaseStudyTypeEvent args = (ChangeBaseStudyTypeEvent)e;
  171. switch (args.type)
  172. {
  173. case 0:
  174. if (SceneManager.GetActiveScene().name != "Machine")
  175. SceneManager.LoadScene("Machine");
  176. break;
  177. case 1:
  178. if (SceneManager.GetActiveScene().name != "Topology")
  179. SceneManager.LoadScene("Topology");
  180. GameMain.Event.Fire(this, Change3DTopoTypeEvent.Create(GameMain.UI.GetUIForm(baseStudyFormId).GetComponent<BaseStudyForm>().CurrentPoloType));
  181. break;
  182. case 2:
  183. if (SceneManager.GetActiveScene().name != "SXZX")
  184. SceneManager.LoadScene("SXZX");
  185. break;
  186. case 3:
  187. if (SceneManager.GetActiveScene().name != "Machine")
  188. SceneManager.LoadScene("Machine");
  189. break;
  190. }
  191. }
  192. private async void Change3DTopo(object sender, GameEventArgs e)
  193. {
  194. Change3DTopoTypeEvent args = (Change3DTopoTypeEvent)e;
  195. GameObject particle = GameObject.FindGameObjectWithTag("Particle");
  196. if (particle != null)
  197. {
  198. for (int i = 0; i < particle.transform.childCount; i++)
  199. {
  200. particle.transform.GetChild(i).gameObject.SetActive(false);
  201. }
  202. particle.transform.GetChild(args.type).gameObject.SetActive(true);
  203. }
  204. else {
  205. await new WaitUntil(() =>
  206. {
  207. return SceneManager.GetActiveScene() == SceneManager.GetSceneByName("Topology");
  208. });
  209. particle = GameObject.FindGameObjectWithTag("Particle");
  210. if (particle != null)
  211. {
  212. for (int i = 0; i < particle.transform.childCount; i++)
  213. {
  214. particle.transform.GetChild(i).gameObject.SetActive(false);
  215. }
  216. particle.transform.GetChild(args.type).gameObject.SetActive(true);
  217. }
  218. }
  219. }
  220. private async void ChangeElePar(object sender, GameEventArgs e)
  221. {
  222. ChangeEleTopoTypeEvent args = (ChangeEleTopoTypeEvent)e;
  223. GameObject particle = GameObject.FindGameObjectWithTag("Particle").transform.GetChild(2).gameObject;
  224. if (particle != null)
  225. {
  226. for (int i = 0; i < particle.transform.childCount; i++)
  227. {
  228. particle.transform.GetChild(i).gameObject.SetActive(false);
  229. }
  230. particle.transform.GetChild(args.type).gameObject.SetActive(true);
  231. }
  232. else
  233. {
  234. await new WaitUntil(() =>
  235. {
  236. return SceneManager.GetActiveScene() == SceneManager.GetSceneByName("Topology");
  237. });
  238. GameObject particle2 = GameObject.FindGameObjectWithTag("Particle").transform.GetChild(2).gameObject;
  239. if (particle2 != null)
  240. {
  241. for (int i = 0; i < particle2.transform.childCount; i++)
  242. {
  243. particle2.transform.GetChild(i).gameObject.SetActive(false);
  244. }
  245. particle2.transform.GetChild(args.type).gameObject.SetActive(true);
  246. }
  247. }
  248. }
  249. private void ChangeTrainStudy(object sender, GameEventArgs e)
  250. {
  251. ChangeTrainStudyTypeEvent args = (ChangeTrainStudyTypeEvent)e;
  252. switch (args.type)
  253. {
  254. case 0:
  255. if (SceneManager.GetActiveScene().name != "TrainStudy")
  256. SceneManager.LoadScene("TrainStudy");
  257. break;
  258. case 1:
  259. if (SceneManager.GetActiveScene().name != "TrainStudy2")
  260. SceneManager.LoadScene("TrainStudy2");
  261. break;
  262. case 2:
  263. if (SceneManager.GetActiveScene().name != "TrainStudy4_1")
  264. SceneManager.LoadScene("TrainStudy4_1");
  265. break;
  266. case 3:
  267. if (SceneManager.GetActiveScene().name != "TrainStudy3_1")
  268. SceneManager.LoadScene("TrainStudy3_1");
  269. break;
  270. case 5:
  271. if (SceneManager.GetActiveScene().name != "TrainStudy5_1")
  272. SceneManager.LoadScene("TrainStudy5_1");
  273. break;
  274. case 6:
  275. if (SceneManager.GetActiveScene().name != "TrainStudy6")
  276. SceneManager.LoadScene("TrainStudy6");
  277. break;
  278. }
  279. }
  280. protected override void OnLeave(IFsm<IProcedureManager> procedureOwner, bool isShutdown)
  281. {
  282. base.OnLeave(procedureOwner, isShutdown);
  283. GameMain.Event.Unsubscribe(ChangeGameModeTypeEvent.EventId, ChangeGameMode);
  284. GameMain.Event.Unsubscribe(ChangeBaseStudyTypeEvent.EventId,ChangeBaseStudy);
  285. GameMain.Event.Unsubscribe(Change3DTopoTypeEvent.EventId, Change3DTopo);
  286. GameMain.Event.Unsubscribe(ChangeEleTopoTypeEvent.EventId, ChangeElePar);
  287. GameMain.Event.Unsubscribe(ChangeTrainStudyTypeEvent.EventId, ChangeTrainStudy);
  288. GameMain.Event.Unsubscribe(LoginResultEvent.EventId, GotoLoginIn);
  289. //暂时没有切流程的先不写关闭全部UI
  290. // GameMain.UI.CloseUIForm(baseStudyFormId);
  291. // GameMain.UI.CloseUIForm(studyCenterFormId);
  292. // GameMain.UI.CloseUIForm(trainStudyFormId);
  293. }
  294. private void InitViewCtrl(string assetName, object asset, float duration, object userData)
  295. {
  296. Debug.Log(duration);
  297. }
  298. private void Fail(string assetName, LoadResourceStatus status, string errorMessage, object userData)
  299. {
  300. Debug.Log($"{errorMessage}");
  301. }
  302. }