DeviceCalibrateView.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class DeviceCalibrateView : MonoBehaviour
  6. {
  7. [SerializeField] Button btnGyrCalibrate;
  8. [SerializeField] Text progressGyrCalibrate;
  9. [SerializeField] Button btnMagCalibrate;
  10. [SerializeField] Button btnIdentityCalibrate;
  11. [SerializeField] Button btnBack;
  12. [SerializeField] Button btnNext;
  13. [SerializeField] Button btnFinish;
  14. bool canUpdateGyrCalibrateProgress = false;
  15. public DeviceCalibrateItem deviceCalibrateItem = DeviceCalibrateItem.Guide;
  16. DeviceCalibrateItem[] deviceCalibrateItemForGuide = {
  17. DeviceCalibrateItem.Gyr,
  18. DeviceCalibrateItem.Mag,
  19. DeviceCalibrateItem.Identity
  20. };
  21. int guideIndex = 0;
  22. public bool guide = true;
  23. public static void Create(DeviceCalibrateItem itemType = DeviceCalibrateItem.Guide) {
  24. GameObject o = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/Views/DeviceCalibrateView"));
  25. o.GetComponent<DeviceCalibrateView>().deviceCalibrateItem = itemType;
  26. o.GetComponent<DeviceCalibrateView>().guide = itemType == DeviceCalibrateItem.Guide;
  27. }
  28. void Start()
  29. {
  30. // if (GameMgr.ins) {
  31. // GameMgr.ins.addLockerForGamePause(this);
  32. // }
  33. btnGyrCalibrate.GetComponent<Button>().onClick.AddListener(ClickGyrCalibrate);
  34. btnMagCalibrate.GetComponent<Button>().onClick.AddListener(ClickMagCalibrate);
  35. btnIdentityCalibrate.GetComponent<Button>().onClick.AddListener(ClickIdentityCalibrate);
  36. btnBack.GetComponent<Button>().onClick.AddListener(delegate() {
  37. guideIndex--;
  38. RefreshPage();
  39. });
  40. btnNext.GetComponent<Button>().onClick.AddListener(delegate() {
  41. guideIndex++;
  42. RefreshPage();
  43. });
  44. btnFinish.GetComponent<Button>().onClick.AddListener(delegate() {
  45. Destroy(this.gameObject);
  46. if (guide && guideIndex == deviceCalibrateItemForGuide.Length - 1) {
  47. GameMgr.ins.FinishDeviceCalibrateGuide();
  48. }
  49. });
  50. RefreshPage();
  51. }
  52. void OnDestroy()
  53. {
  54. // if (GameMgr.ins) {
  55. // GameMgr.ins.removeLockerForGamePause(this);
  56. // }
  57. if (guide)
  58. {
  59. AimHandler.ins.CalibrateGyr(false);
  60. AimHandler.ins.CalibrateMag(false);
  61. }
  62. else if (deviceCalibrateItem == DeviceCalibrateItem.Gyr)
  63. {
  64. AimHandler.ins.CalibrateGyr(false);
  65. }
  66. else if (deviceCalibrateItem == DeviceCalibrateItem.Mag)
  67. {
  68. AimHandler.ins.CalibrateMag(false);
  69. }
  70. }
  71. void Update()
  72. {
  73. if (canUpdateGyrCalibrateProgress) {
  74. int progress = (int) ((float) AimHandler.ins.gyrCalibrateCompleteCount * 100 / (float) AimHandler.ins.gyrCalibrateTotalCount);
  75. progressGyrCalibrate.text = progress + "%";
  76. if (progress >= 100) {
  77. ClickGyrCalibrate();
  78. }
  79. }
  80. }
  81. void ClickGyrCalibrate()
  82. {
  83. Button btn = btnGyrCalibrate.GetComponent<Button>();
  84. btn.enabled = !btn.enabled;
  85. if (btn.enabled) {
  86. btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("Textures/Common/ButtonBlue");
  87. btn.GetComponentInChildren<Text>().color = Color.white;
  88. canUpdateGyrCalibrateProgress = false;
  89. AimHandler.ins.CalibrateGyr(false);
  90. } else {
  91. btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("Textures/Common/ButtonGray");
  92. btn.GetComponentInChildren<Text>().color = Color.gray;
  93. AimHandler.ins.gyrCalibrateCompleteCount = 0;
  94. canUpdateGyrCalibrateProgress = true;
  95. AimHandler.ins.CalibrateGyr(true);
  96. }
  97. }
  98. bool magCalibrating = false;
  99. void ClickMagCalibrate()
  100. {
  101. Button btn = btnMagCalibrate.GetComponent<Button>();
  102. magCalibrating = !magCalibrating;
  103. if (magCalibrating) {
  104. btn.GetComponentInChildren<TextAutoLanguage>().SetText(83);
  105. AimHandler.ins.CalibrateMag(true);
  106. } else {
  107. btn.GetComponentInChildren<TextAutoLanguage>().SetText(82);
  108. AimHandler.ins.CalibrateMag(false);
  109. }
  110. }
  111. void ClickIdentityCalibrate() {
  112. AimHandler.ins.DoIdentity();
  113. }
  114. void RefreshPage() {
  115. if (guide) {
  116. deviceCalibrateItem = deviceCalibrateItemForGuide[guideIndex];
  117. if (guideIndex == 0) {
  118. btnBack.gameObject.SetActive(false);
  119. btnNext.gameObject.SetActive(true);
  120. btnFinish.gameObject.SetActive(false);
  121. } else if (guideIndex == deviceCalibrateItemForGuide.Length - 1) {
  122. btnBack.gameObject.SetActive(true);
  123. btnNext.gameObject.SetActive(false);
  124. btnFinish.gameObject.SetActive(true);
  125. } else {
  126. btnBack.gameObject.SetActive(true);
  127. btnNext.gameObject.SetActive(true);
  128. btnFinish.gameObject.SetActive(false);
  129. }
  130. } else {
  131. btnBack.gameObject.SetActive(false);
  132. btnNext.gameObject.SetActive(false);
  133. btnFinish.gameObject.SetActive(true);
  134. }
  135. this.transform.Find("Gyr").gameObject.SetActive(deviceCalibrateItem == DeviceCalibrateItem.Gyr);
  136. this.transform.Find("Mag").gameObject.SetActive(deviceCalibrateItem == DeviceCalibrateItem.Mag);
  137. this.transform.Find("Identity").gameObject.SetActive(deviceCalibrateItem == DeviceCalibrateItem.Identity);
  138. }
  139. }
  140. public enum DeviceCalibrateItem
  141. {
  142. Guide, Gyr, Mag, Identity
  143. }