ConnectGuidanceView.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class ConnectGuidanceView : MonoBehaviour
  6. {
  7. [SerializeField] List<GameObject> layouts;
  8. bool isNext = false;
  9. [SerializeField] GameObject textTip01;
  10. [SerializeField] GameObject textTip02;
  11. //定位进来时候调用
  12. public void showTextipInfrared() {
  13. textTip01.SetActive(false);
  14. textTip02.SetActive(true);
  15. }
  16. void Start()
  17. {
  18. //进入指南页面,onCreateAimDeviceInfoById 一下 aimdevice,和设置一下type
  19. resetAimType();
  20. InitConfirmStorage();
  21. transform.Find("BtnNext").GetComponent<Button>().onClick.AddListener(OnClick_Next);
  22. if (AimHandler.ins.aimDeviceInfo.type == (int)AimDeviceType.ARTEMIS)
  23. {
  24. ShowDeviceLayout(1);
  25. }
  26. else {
  27. ShowDeviceLayout(0);
  28. }
  29. //NewUserGuiderManager newUserGuiderManager = FindObjectOfType<NewUserGuiderManager>();
  30. //newUserGuiderManager.curConfigKey = "视角归位-触发";
  31. //newUserGuiderManager.isNewModule = AimHandler.ins.aimDeviceInfo.type == (int)AimDeviceType.ARTEMIS;
  32. ////进入射箭场景
  33. //GlobalData.pkMatchType = PKMatchType.None;
  34. //GameMgr.gameType = 1;
  35. ////射一箭回到连接页面,Device.view
  36. //GameMgr.bNavBack = true;
  37. //GameMgr.bShowDistance = false;
  38. //AimHandler.ins.bInitOne = true;
  39. //UnityEngine.SceneManagement.SceneManager.LoadScene(
  40. // "Game", UnityEngine.SceneManagement.LoadSceneMode.Single);
  41. }
  42. void ShowDeviceLayout(int index)
  43. {
  44. for (int i = 0; i < layouts.Count; i++)
  45. {
  46. GameObject _button = layouts[i];
  47. _button.SetActive(index == i);
  48. }
  49. }
  50. void Update()
  51. {
  52. UpdateBtnForConnect();
  53. }
  54. void OnClick_Next()
  55. {
  56. //onEnterInfrared();
  57. //return;
  58. if (BluetoothAim.ins.getBLEPlayer() == BluetoothPlayer.FIRST_PLAYER)
  59. {
  60. if (bowStatus == BluetoothStatusEnum.ConnectSuccess)
  61. {
  62. AimHandler.ins.OnSaveAimDeviceInfos();
  63. BluetoothAim.ins.SetMainConnectDeviceType();
  64. if (AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.HOUYIPRO && AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.Gun)
  65. {
  66. //如果不是红外设备,才进入校准?
  67. ViewManager2.HideView(ViewManager2.Path_ConnectGuidanceView);
  68. ViewManager2.ShowView(ViewManager2.Path_GyrGuidanceView);
  69. }
  70. else
  71. {
  72. //修改步骤
  73. ViewManager2.ShowView(ViewManager2.Path_InfraredView);
  74. //if (!PlayerPrefs.HasKey("hideInfraredBowAndArrow"))
  75. //{
  76. // //如果是红外连接成功,记录一个tag
  77. // PlayerPrefs.SetInt("hideInfraredBowAndArrow", 1);
  78. //}
  79. //onEnterInfrared();
  80. }
  81. }
  82. }
  83. else if (BluetoothAim.ins.getBLEPlayer() == BluetoothPlayer.SECONDE_PLAYER)
  84. {
  85. if (bowStatus2P == SmartBowSDK.BluetoothStatusEnum.Connected)
  86. {
  87. AimHandler.ins.OnSaveAimDeviceInfos();
  88. BluetoothAim.ins.SetMainConnectDeviceType();
  89. if (AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.HOUYIPRO && AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.Gun)
  90. {
  91. //如果不是红外设备,才进入校准?
  92. ViewManager2.HideView(ViewManager2.Path_ConnectGuidanceView);
  93. ViewManager2.ShowView(ViewManager2.Path_GyrGuidanceView);
  94. }
  95. else
  96. {
  97. //修改步骤
  98. ViewManager2.ShowView(ViewManager2.Path_InfraredView);
  99. //if (!PlayerPrefs.HasKey("hideInfraredBowAndArrow"))
  100. //{
  101. // //如果是红外连接成功,记录一个tag
  102. // PlayerPrefs.SetInt("hideInfraredBowAndArrow", 1);
  103. //}
  104. //onEnterInfrared();
  105. }
  106. //ViewManager2.ShowView(ViewManager2.Path_GyrGuidanceView);
  107. }
  108. }
  109. }
  110. void InitConfirmStorage()
  111. {
  112. transform.Find("ConfirmStep/Toggle").GetComponent<Toggle>().SetIsOnWithoutNotify(IsConfirmInStorage());
  113. transform.Find("ConfirmStep/Toggle").GetComponent<Toggle>().onValueChanged.AddListener(v =>
  114. {
  115. SetConfirmToStorage(v);
  116. });
  117. }
  118. bool IsConfirmInStorage()
  119. {
  120. return PlayerPrefs.GetInt("connect-confirm-" + LoginMgr.myUserInfo.id, 0) == 1;
  121. }
  122. void SetConfirmToStorage(bool value)
  123. {
  124. PlayerPrefs.SetInt("connect-confirm-" + LoginMgr.myUserInfo.id, value ? 1 : 0);
  125. }
  126. [SerializeField] GameObject btnConnectBow;
  127. BluetoothStatusEnum bowStatus;
  128. SmartBowSDK.BluetoothStatusEnum bowStatus2P;
  129. void UpdateBtnForConnect()
  130. {
  131. if (BluetoothAim.ins.getBLEPlayer() == BluetoothPlayer.FIRST_PLAYER)
  132. {
  133. if (BluetoothAim.ins && bowStatus != BluetoothAim.ins.status)
  134. {
  135. bowStatus = BluetoothAim.ins.status;
  136. (int textID, Color color) = BluetoothStatus.GetStatusInfo(BluetoothAim.ins.status);
  137. btnConnectBow.GetComponentInChildren<TextAutoLanguage>().SetText(textID);
  138. btnConnectBow.GetComponentInChildren<Text>().color = color;
  139. btnConnectBow.transform.Find("Check").gameObject.SetActive(bowStatus == BluetoothStatusEnum.ConnectSuccess);
  140. }
  141. if (bowStatus != BluetoothStatusEnum.ConnectSuccess) {
  142. isNext = false;
  143. }
  144. //自动跳转
  145. else if (!isNext && bowStatus == BluetoothStatusEnum.ConnectSuccess)
  146. {
  147. isNext = true;
  148. OnClick_Next();
  149. }
  150. }
  151. else if (BluetoothAim.ins.getBLEPlayer() == BluetoothPlayer.SECONDE_PLAYER)
  152. {
  153. SmartBowSDK.SmartBowHelper smartBowHelper = BluetoothAim.ins.getSmartBowHelper2P();
  154. if (smartBowHelper == null) return;
  155. if (BluetoothAim.ins && bowStatus2P != smartBowHelper.GetBluetoothStatus())
  156. {
  157. bowStatus2P = smartBowHelper.GetBluetoothStatus();
  158. (int textID, Color color) = BluetoothStatus.GetBLE2StatusInfo(bowStatus2P);
  159. btnConnectBow.GetComponentInChildren<TextAutoLanguage>().SetText(textID);
  160. btnConnectBow.GetComponentInChildren<Text>().color = color;
  161. btnConnectBow.transform.Find("Check").gameObject.SetActive(bowStatus2P == SmartBowSDK.BluetoothStatusEnum.Connected);
  162. }
  163. if (bowStatus2P != SmartBowSDK.BluetoothStatusEnum.Connected)
  164. {
  165. isNext = false;
  166. }
  167. //自动跳转
  168. if (!isNext && bowStatus2P == SmartBowSDK.BluetoothStatusEnum.Connected)
  169. {
  170. isNext = true;
  171. OnClick_Next();
  172. }
  173. }
  174. }
  175. public void OnClick_ConnectBLE()
  176. {
  177. if (!IsConfirmInStorage())
  178. {
  179. //PopupMgr.ins.ShowTip("Please Confirmed the completion of the above steps");
  180. PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByKey("Guidance_Checked"));
  181. return;
  182. }
  183. //此页面连接当作重新初始化
  184. resetAimDevice();
  185. if (HomeView.ShowProminentBeforeConnectBLE()) return;
  186. Debug.Log("BluetoothAim.ins.getBLEPlayer():"+ BluetoothAim.ins.getBLEPlayer());
  187. if (BluetoothAim.ins.getBLEPlayer() == BluetoothPlayer.FIRST_PLAYER)
  188. {
  189. BluetoothAim.ins.DoConnect();
  190. }
  191. else if(BluetoothAim.ins.getBLEPlayer() == BluetoothPlayer.SECONDE_PLAYER)
  192. {
  193. BluetoothAim.ins.DoConnect2P();
  194. }
  195. }
  196. public void OnClick_Back()
  197. {
  198. AudioMgr.ins.PlayBtn();
  199. ViewManager2.HideView(ViewManager2.Path_ConnectGuidanceView);
  200. }
  201. public void resetAimDevice() {
  202. //进行重新初始化的时候。重置一下对应的mac
  203. AimHandler.ins.onCreateAimDeviceInfoById();
  204. AimHandler.ins.SetAimDeviceType(AimHandler.ins.tempAimDeviceInfo.type);
  205. AimHandler.ins.ResetAimDeviceMac();
  206. Debug.Log("重新初始化时候 bInitMac :" + AimHandler.ins.aimDeviceInfo.bInitMac);
  207. }
  208. public void resetAimType() {
  209. AimHandler.ins.onCreateAimDeviceInfoById();
  210. AimHandler.ins.SetAimDeviceType(AimHandler.ins.tempAimDeviceInfo.type);
  211. //如果有正在连接的情况,重置一下mac。其他不需要
  212. if (BluetoothAim.ins)
  213. {
  214. if (BluetoothAim.ins.status == BluetoothStatusEnum.Connecting)
  215. {
  216. AimHandler.ins.ResetAimDeviceMac();
  217. }
  218. SmartBowSDK.SmartBowHelper smartBowHelper = BluetoothAim.ins.getSmartBowHelper2P();
  219. if (smartBowHelper != null) {
  220. SmartBowSDK.BluetoothStatusEnum bluetoothStatusEnum = smartBowHelper.GetBluetoothStatus();
  221. if (bluetoothStatusEnum == SmartBowSDK.BluetoothStatusEnum.Connecting)
  222. {
  223. AimHandler.ins.ResetAimDeviceMac();
  224. }
  225. }
  226. }
  227. Debug.Log("重新初始化时候 resetAimType bInitMac :" + AimHandler.ins.aimDeviceInfo.bInitMac);
  228. }
  229. void OnDestroy()
  230. {
  231. //退出面板时候,取消正在连接的连接
  232. BluetoothAim.ins.onCancelAllConnecting();
  233. }
  234. //连接之后,跳转进入场景
  235. //void onEnterInfrared() {
  236. // //添加进入射箭场景
  237. // if (PlayerPrefs.GetInt("entry-guider-infrared-" + LoginMgr.myUserInfo.id, 0) == 0)
  238. // {
  239. // Debug.Log("-----进入射箭场景!");
  240. // NewUserGuiderManager newUserGuiderManager = FindObjectOfType<NewUserGuiderManager>();
  241. // newUserGuiderManager.curConfigKey = "开始-红外调整";
  242. // newUserGuiderManager.isNewModule = AimHandler.ins.aimDeviceInfo.type == (int)AimDeviceType.HOUYIPRO || AimHandler.ins.aimDeviceInfo.type == (int)AimDeviceType.Gun ;
  243. // //进入射箭场景
  244. // GlobalData.pkMatchType = PKMatchType.None;
  245. // GameMgr.gameType = 1;
  246. // //射一箭回到连接页面,Device.view
  247. // GameMgr.bNavBack = true;
  248. // GameMgr.bShowDistance = false;
  249. // AimHandler.ins.bInitOne = true;
  250. // //关闭计时器
  251. // GameMgr.turnOffTimer = true;
  252. // UnityEngine.SceneManagement.SceneManager.LoadScene(
  253. // "Game", UnityEngine.SceneManagement.LoadSceneMode.Single);
  254. // PlayerPrefs.SetInt("entry-guider-infrared-" + LoginMgr.myUserInfo.id, 1);
  255. // }
  256. // else
  257. // {
  258. // Debug.Log("-----跳转回连接界面!");
  259. // //如不是第一次,则应该跳转回连接界面
  260. // ViewMgr.Instance.DestroyView<SmartArcheryView>();
  261. // ViewManager2.HideView(ViewManager2.Path_ConnectGuidanceView);
  262. // }
  263. //}
  264. }