MagGuidanceView.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using System;
  6. public class MagGuidanceView : MonoBehaviour
  7. {
  8. [SerializeField] Button btnMagCalibrate;
  9. [SerializeField] GameObject prefab_MagInterferenceTipView;
  10. TextAutoLanguage2 _TextAutoLanguage2;
  11. [SerializeField] List<GameObject> layouts;
  12. bool bStartResetMag = false;
  13. //bool bAutoNext = false;
  14. void Start()
  15. {
  16. btnMagCalibrate.GetComponent<Button>().onClick.AddListener(ClickResetMag);
  17. _TextAutoLanguage2 = btnMagCalibrate.transform.Find("Text").GetComponent<TextAutoLanguage2>();
  18. if (AimHandler.ins.IsMagCompleted() && PlayerPrefs.GetInt("entry-guider-one-" + LoginMgr.myUserInfo.id, 0) == 1)
  19. {
  20. //本机已经初始化流程第一次后
  21. _TextAutoLanguage2.SetTextKey("Mag_Reinitialize");
  22. }
  23. else {
  24. _TextAutoLanguage2.SetTextKey("Mag_Initialization");
  25. }
  26. if (AimHandler.ins.aimDeviceInfo.type == (int)AimDeviceType.ARTEMIS)
  27. {
  28. ShowDeviceLayout(1);
  29. }
  30. else
  31. {
  32. ShowDeviceLayout(0);
  33. }
  34. }
  35. void ShowDeviceLayout(int index)
  36. {
  37. for (int i = 0; i < layouts.Count; i++)
  38. {
  39. GameObject _button = layouts[i];
  40. _button.SetActive(index == i);
  41. }
  42. }
  43. void Update()
  44. {
  45. UpdateForMag();
  46. }
  47. public void OnClick_Back()
  48. {
  49. AudioMgr.ins.PlayBtn();
  50. //ViewMgr.Instance.DestroyView<SmartArcheryView>();
  51. ViewManager2.HideView(ViewManager2.Path_MagGuidanceView);
  52. }
  53. #region 地磁计校准逻辑
  54. /* ------ 新地磁计校准(2022-10-3) ------ */
  55. [NonSerialized] public bool calibrateMagDoing = false;
  56. float calibrateMagStartTime = 0; //地磁校准开始时刻
  57. //在当前页面中,用户是否点击了开始校准并校准成功;有则flag=1
  58. [NonSerialized] public int flag_MagCalibarateOperateAndFinish = -1;
  59. public Action action_MagCalibarateOperateAndFinish;
  60. public Func<bool> action_OnClickMagCalibrateInterceptor;
  61. void ClickResetMag()
  62. {
  63. if (action_OnClickMagCalibrateInterceptor != null)
  64. {
  65. if (action_OnClickMagCalibrateInterceptor.Invoke()) return;
  66. }
  67. if (!calibrateMagDoing && BluetoothAim.ins.status != BluetoothStatusEnum.ConnectSuccess)
  68. {
  69. PopupMgr.ins.ShowTipTop(TextAutoLanguage2.GetTextByKey("device-calibrate_n-connect"));
  70. return;
  71. }
  72. calibrateMagDoing = !calibrateMagDoing;
  73. if (calibrateMagDoing)
  74. {
  75. calibrateMagStartTime = Time.realtimeSinceStartup;
  76. AimHandler.ins.ResetMag();
  77. flag_MagCalibarateOperateAndFinish = 0;
  78. }
  79. else
  80. {
  81. Axis9CalibrateRecord.ResumeCalibrateRecord(LoginMgr.myUserInfo.mac);
  82. Axis9CalibrateRecord.SetCalibrateOkRecord(LoginMgr.myUserInfo.mac, false);
  83. }
  84. //开始校准
  85. bStartResetMag = true;
  86. }
  87. //取消地磁计校准(仅用在UpdateForMag中)
  88. void CancelResetMag()
  89. {
  90. calibrateMagDoing = false;
  91. }
  92. void UpdateForMag()
  93. {
  94. if (!bStartResetMag) return;
  95. //假如还未初始化成功
  96. if (!AimHandler.ins.IsMagCompleted())
  97. {
  98. //地磁校准超时提示
  99. if (calibrateMagDoing)
  100. {
  101. float doingTime = Time.realtimeSinceStartup - calibrateMagStartTime;
  102. float progress = Mathf.FloorToInt(doingTime / 20 * 100);
  103. if (progress >= 100)
  104. {
  105. //初始化超时
  106. _TextAutoLanguage2.SetTextKey("Mag_Fail");
  107. CancelResetMag();
  108. //地磁干扰提示页面-start
  109. GameObject o = Instantiate(prefab_MagInterferenceTipView);
  110. var nug = FindObjectOfType<NewUserGuider>(); //判断是否处于引导界面
  111. if (nug && nug.gameObject && nug.gameObject.activeSelf)
  112. {
  113. JCUnityLib.CanvasUtils.PlusSortOrder(nug.gameObject, o, 1);
  114. }
  115. else
  116. {
  117. JCUnityLib.CanvasUtils.PlusSortOrder(gameObject, o, 1);
  118. }
  119. //地磁干扰提示页面-end
  120. PopupMgr.ins.ShowTipTop(TextAutoLanguage2.GetTextByKey("tip_mag-calibrate_please-leave-interfere"));
  121. bStartResetMag = false;
  122. }
  123. else
  124. {
  125. //模拟一个进度
  126. _TextAutoLanguage2.textFormatArgs = new object[] { progress };
  127. _TextAutoLanguage2.SetTextKey("Mag_Initializing2");
  128. }
  129. }
  130. else
  131. {
  132. _TextAutoLanguage2.SetTextKey("Mag_Initialization");
  133. bStartResetMag = false;
  134. }
  135. }
  136. else
  137. {
  138. _TextAutoLanguage2.SetTextKey("Mag_Success");
  139. if (calibrateMagDoing)
  140. {
  141. CancelResetMag();
  142. }
  143. if (flag_MagCalibarateOperateAndFinish == 0)
  144. {
  145. flag_MagCalibarateOperateAndFinish = 1;
  146. action_MagCalibarateOperateAndFinish?.Invoke();
  147. //添加进入射箭场景
  148. if (PlayerPrefs.GetInt("entry-guider-one-" + LoginMgr.myUserInfo.id, 0) != 1)
  149. {
  150. Debug.Log("-----进入射箭场景!");
  151. //FindObjectOfType<NewUserGuiderManager>().curConfigKey = "限时游戏-选择距离";
  152. NewUserGuiderManager newUserGuiderManager = FindObjectOfType<NewUserGuiderManager>();
  153. newUserGuiderManager.curConfigKey = "视角归位-触发";
  154. newUserGuiderManager.isNewModule = AimHandler.ins.aimDeviceInfo.type == (int)AimDeviceType.ARTEMIS;
  155. //进入射箭场景
  156. GlobalData.pkMatchType = PKMatchType.None;
  157. GameMgr.gameType = 1;
  158. //射一箭回到连接页面,Device.view
  159. GameMgr.bNavBack = true;
  160. GameMgr.bShowDistance = false;
  161. AimHandler.ins.bInitOne = true;
  162. UnityEngine.SceneManagement.SceneManager.LoadScene(
  163. "Game", UnityEngine.SceneManagement.LoadSceneMode.Single);
  164. PlayerPrefs.SetInt("entry-guider-one-" + LoginMgr.myUserInfo.id, 1);
  165. }
  166. else
  167. {
  168. //如不是第一次,则应该跳转回连接界面
  169. ViewMgr.Instance.DestroyView<SmartArcheryView>();
  170. ViewManager2.HideView(ViewManager2.Path_MagGuidanceView);
  171. }
  172. }
  173. bStartResetMag = false;
  174. }
  175. }
  176. #endregion
  177. }