EndTeachController.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using static WS.ProcessManager;
  4. namespace WS
  5. {
  6. public class EndTeachController : Controller<EndTeachView, EndTeachModel>
  7. {
  8. bool _returnMain;
  9. protected override void BindingViewModel()
  10. {
  11. _Model.Bind(_View.ExitBtn, OnExitBtnClick);
  12. _Model.Bind(_View.ReturnBtn, OnReturnBtnClick);
  13. _Model.Bind(_View.Message, _Model.Message);
  14. }
  15. public override void OpenView()
  16. {
  17. base.OpenView();
  18. var dir = Vector3.ProjectOnPlane(Player.Inst.hmdTransform.forward, Vector3.up);
  19. var pos = Player.Inst.hmdTransform.position + dir.normalized * 1f;
  20. var rot = Quaternion.LookRotation(dir.normalized);
  21. _View.SetPosition(pos / 0.001f, rot);
  22. }
  23. private void OnExitBtnClick()
  24. {
  25. ProcessManager processMgr = GameManager.Instance.ProcessManager;
  26. if (processMgr.GetProcessStatus() != StateType.NotStarted)
  27. {
  28. WSTaskRecord wSTaskRecord = processMgr.GetVTaskRecord(
  29. processMgr.GetCurrentModule().VTaskId
  30. );
  31. wSTaskRecord.IsEnd = true;
  32. FacadeComponent.Instance.GetController<ProgressPopController>().CloseView();
  33. processMgr.EndProcess(true);
  34. SceneDataSaveComponent.Instance.RestAllScene();
  35. }
  36. if (_returnMain)
  37. {
  38. if (SceneComponent.Instance.ThisScene != SceneName.发电机层.ToString())
  39. {
  40. SceneComponent.Instance.LoadScene(
  41. SceneName.发电机层.ToString(),
  42. () =>
  43. {
  44. GameObject startPoint = GameObject.Find("StartPoint");
  45. Player.Inst.transform.position = startPoint.transform.position;
  46. Player.Inst.transform.rotation = startPoint.transform.rotation;
  47. ChoosePopController choosePop =
  48. FacadeComponent.Instance.CreateController<ChoosePopController>();
  49. choosePop.OpenView();
  50. }
  51. );
  52. }
  53. FacadeComponent.Instance.GetController<ChoosePopController>()?.SetBtnStatus(true);
  54. }
  55. else
  56. {
  57. //ScorePopController scorePopController =
  58. // FacadeComponent.Instance.CreateController<ScorePopController>();
  59. //scorePopController.OpenView();
  60. }
  61. CloseView();
  62. }
  63. private void OnReturnBtnClick()
  64. {
  65. ProgressPopController progressPop =
  66. FacadeComponent.Instance.GetController<ProgressPopController>();
  67. if (progressPop != null)
  68. {
  69. progressPop.isForbidden = false;
  70. progressPop.ViewStatus(false);
  71. }
  72. CloseView();
  73. }
  74. /// <summary>
  75. /// 设置页面信息、按钮状态
  76. /// </summary>
  77. /// <param name="mesg">信息</param>
  78. /// <param name="haveCancel">取消按钮是否显示</param>
  79. /// <param name="returnMain">退出按钮是否直接返回主场景</param>
  80. public void SetViewMesg(string mesg, bool haveCancel = false, bool returnMain = true)
  81. {
  82. _returnMain = returnMain;
  83. _Model.Message.Value = mesg;
  84. _View.ReturnBtn.gameObject.SetActive(haveCancel);
  85. }
  86. public override void Dispose()
  87. {
  88. base.Dispose();
  89. }
  90. }
  91. public class EndTeachView : View
  92. {
  93. public Button ExitBtn;
  94. public Button CloseBtn;
  95. public Button ReturnBtn;
  96. public Text Message;
  97. public override void LoadInit()
  98. {
  99. ShowModeType = ViewShowModeType.World;
  100. ReferenceCollector rc = UIGameObject.GetComponent<ReferenceCollector>();
  101. ExitBtn = rc.GetComponent<Button>("ExitBtn");
  102. CloseBtn = rc.GetComponent<Button>("CloseBtn");
  103. ReturnBtn = rc.GetComponent<Button>("ReturnBtn");
  104. Message = rc.GetComponent<Text>("Message");
  105. }
  106. }
  107. public class EndTeachModel : Model
  108. {
  109. public BindableProperty<string> Message;
  110. public override void InitProperty()
  111. {
  112. Message = CreateProperty<string>();
  113. }
  114. }
  115. }