ChoosePopController.cs 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. using System;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. namespace WS
  5. {
  6. [ObjectSystem]
  7. public class ChoosePopControllerUpdateSystem : UpdateSystem<ChoosePopController>
  8. {
  9. public override void Update(ChoosePopController self)
  10. {
  11. self.Update();
  12. }
  13. }
  14. public class ChoosePopController : Controller<ChoosePopView, ChoosePopModel>
  15. {
  16. /// <summary> 完成引导回调 </summary>
  17. private Action OnGuideComplete;
  18. private ProcessManager processManager;
  19. protected override void BindingViewModel()
  20. {
  21. _Model.Bind(_View.LearnBtn, OnLearnBtnClick);
  22. _Model.Bind(_View.PracticeBtn, OnPracticeBtnClick);
  23. _Model.Bind(_View.ExamineBtn, () => { });
  24. _Model.Bind(
  25. _View.SafetyBtn,
  26. () =>
  27. {
  28. SceneComponent.Instance.LoadScene(
  29. SceneName.安全教育.ToString(),
  30. () => {
  31. // GameObject.Find("Interaction").GetComponent<SafeStudyMono>().Launch();
  32. }
  33. );
  34. CloseView();
  35. }
  36. );
  37. _Model.Bind(_View.WanderBtn, OnWanderBtnClick);
  38. _Model.Bind(_View.ExamineBtn, OnExaminBtnClick);
  39. _Model.Bind(
  40. _View.ReturnBtn,
  41. () =>
  42. {
  43. Application.Quit();
  44. }
  45. );
  46. _Model.Bind(_View.HelpBtn, OnHelpBtnClick);
  47. }
  48. public override void OpenView()
  49. {
  50. base.OpenView();
  51. processManager = GameManager.Instance.ProcessManager;
  52. Vector3 pos = new Vector3(-304, 1500, -105658);
  53. Quaternion rot = Quaternion.Euler(0, 180, 0);
  54. _View.SetPosition(pos, rot);
  55. }
  56. public void Update()
  57. {
  58. _View.Frame.gameObject.SetActive(GameManager.Instance.Data.IsGuide);
  59. }
  60. /// <summary> 进入教学 </summary>
  61. public void OnLearnBtnClick()
  62. {
  63. if (!GameManager.Instance.Data.IsGuide)
  64. {
  65. GameManager.Instance.Data.Pattern = PatternType.教学;
  66. SceneComponent.Instance.LoadScene(
  67. SceneName.水轮机层.ToString(),
  68. () =>
  69. {
  70. processManager.StartProcess("AllProcess");
  71. ProgressPopController progressPop =
  72. FacadeComponent.Instance.CreateController<ProgressPopController>();
  73. progressPop.OpenView();
  74. GameObject startPoint = GameObject.Find("Process1_Task1");
  75. Player.Inst.transform.position = startPoint.transform.position;
  76. Player.Inst.transform.rotation = startPoint.transform.rotation;
  77. CloseView();
  78. }
  79. );
  80. //processManager.StartProcess("Process4");
  81. //ProgressPopController progressPop = FacadeComponent.Instance.CreateController<ProgressPopController>();
  82. //progressPop.OpenView();
  83. //CloseView();
  84. //SceneComponent.Instance.LoadScene(SceneName.地下副厂房10KV配电室400v照明配电室.ToString(), () =>
  85. //{
  86. // processManager.StartProcess("Process4");
  87. // ProgressPopController progressPop = FacadeComponent.Instance.CreateController<ProgressPopController>();
  88. // progressPop.OpenView();
  89. // GameObject startPoint = GameObject.Find("StartPoint");
  90. // Player.instance.transform.position = startPoint.transform.position;
  91. // Player.instance.transform.rotation = startPoint.transform.rotation;
  92. // CloseView();
  93. //});
  94. }
  95. else
  96. {
  97. GameManager.Instance.Data.Pattern = PatternType.引导;
  98. SceneComponent.Instance.LoadScene(
  99. SceneName.安装间下400V配电室.ToString(),
  100. () =>
  101. {
  102. Player.Inst.transform.position = new Vector3(1.9f, 0, -9);
  103. Player.Inst.transform.rotation = Quaternion.Euler(new Vector3(0, -90, 0));
  104. OnGuideComplete?.Invoke();
  105. //CloseView();
  106. }
  107. );
  108. }
  109. CloseView();
  110. }
  111. /// <summary> 练习 </summary>
  112. private void OnPracticeBtnClick()
  113. {
  114. if (!GameManager.Instance.Data.IsGuide)
  115. {
  116. GameManager.Instance.Data.Pattern = PatternType.练习;
  117. SceneComponent.Instance.LoadScene(
  118. SceneName.水轮机层.ToString(),
  119. () =>
  120. {
  121. processManager.StartProcess("AllProcess");
  122. ProgressPopController progressPop =
  123. FacadeComponent.Instance.CreateController<ProgressPopController>();
  124. progressPop.OpenView();
  125. GameObject startPoint = GameObject.Find("Process1_Task1");
  126. Player.Inst.transform.position = startPoint.transform.position;
  127. Player.Inst.transform.rotation = startPoint.transform.rotation;
  128. //CloseView();1
  129. }
  130. );
  131. }
  132. CloseView();
  133. }
  134. private void OnExaminBtnClick()
  135. {
  136. GameManager.Instance.Data.Pattern = PatternType.考核;
  137. SceneComponent.Instance.LoadScene(
  138. SceneName.水轮机层.ToString(),
  139. () =>
  140. {
  141. processManager.StartProcess("AllProcess");
  142. ProgressPopController progressPop =
  143. FacadeComponent.Instance.CreateController<ProgressPopController>();
  144. progressPop.OpenView();
  145. GameObject startPoint = GameObject.Find("Process1_Task1");
  146. Player.Inst.transform.position = startPoint.transform.position;
  147. Player.Inst.transform.rotation = startPoint.transform.rotation;
  148. //CloseView();
  149. }
  150. );
  151. CloseView();
  152. }
  153. private void OnHelpBtnClick()
  154. {
  155. //HelpViewController help =
  156. // FacadeComponent.Instance.CreateController<HelpViewController>();
  157. //help.OpenView();
  158. //help.SetView(new Vector3(0, 1500, -105658), Quaternion.Euler(new Vector3(0, 180, 0)));
  159. }
  160. private void OnWanderBtnClick()
  161. {
  162. GameManager.Instance.Data.Pattern = PatternType.漫游;
  163. MapController map = FacadeComponent.Instance.CreateController<MapController>();
  164. map.OpenView();
  165. CloseView();
  166. }
  167. /// <summary>
  168. /// 设置引导模式下按钮的交互状态
  169. /// </summary>
  170. /// <param name="action">完成引导操作的回调</param>
  171. public void SetGuide(Action action)
  172. {
  173. OnGuideComplete = action;
  174. SetBtnStatus(false);
  175. }
  176. /// <summary>重置页面上按钮的交互状态 </summary>
  177. public void SetBtnStatus(bool isInteract)
  178. {
  179. _View.PracticeBtn.interactable = isInteract;
  180. _View.DisabledPractice.enabled = !isInteract;
  181. _View.ExamineBtn.interactable = isInteract;
  182. _View.DisabledExamine.enabled = !isInteract;
  183. _View.SafetyBtn.interactable = isInteract;
  184. _View.DisabledSafety.enabled = !isInteract;
  185. _View.WanderBtn.interactable = isInteract;
  186. _View.DisabledWander.enabled = !isInteract;
  187. }
  188. }
  189. public class ChoosePopView : View
  190. {
  191. public Button LearnBtn;
  192. public Button PracticeBtn;
  193. public Button ExamineBtn;
  194. public Button ReturnBtn;
  195. public Button WanderBtn;
  196. public Button SafetyBtn;
  197. public Button HelpBtn;
  198. public Image DisabledWander;
  199. public Image DisabledSafety;
  200. public Image DisabledExamine;
  201. public Image DisabledPractice;
  202. public Image Frame;
  203. public override void LoadInit()
  204. {
  205. ShowModeType = ViewShowModeType.World;
  206. ReferenceCollector rc = UIGameObject.GetComponent<ReferenceCollector>();
  207. LearnBtn = rc.GetComponent<Button>("LearnBtn");
  208. PracticeBtn = rc.GetComponent<Button>("PracticeBtn");
  209. ExamineBtn = rc.GetComponent<Button>("ExamineBtn");
  210. ReturnBtn = rc.GetComponent<Button>("ReturnBtn");
  211. WanderBtn = rc.GetComponent<Button>("WanderBtn");
  212. SafetyBtn = rc.GetComponent<Button>("SafetyBtn");
  213. HelpBtn = rc.GetComponent<Button>("HelpBtn");
  214. DisabledWander = rc.GetComponent<Image>("DisabledWander");
  215. DisabledSafety = rc.GetComponent<Image>("DisabledSafety");
  216. DisabledExamine = rc.GetComponent<Image>("DisabledExamine");
  217. DisabledPractice = rc.GetComponent<Image>("DisabledPractice");
  218. Frame = rc.GetComponent<Image>("Frame");
  219. }
  220. public override void Dispose()
  221. {
  222. base.Dispose();
  223. }
  224. }
  225. public class ChoosePopModel : Model
  226. {
  227. /// <summary> 完成引导回调 </summary>
  228. public Action OnGuideComplete;
  229. public ProcessManager processManager;
  230. public override void InitProperty() { }
  231. }
  232. }