Explorar o código

地磁校准界面调整

lvjincheng %!s(int64=3) %!d(string=hai) anos
pai
achega
5387f13eea

+ 0 - 1
Assets/BowArrow/Scripts/Bluetooth/AimHandler.cs

@@ -388,7 +388,6 @@ public class AimHandler : MonoBehaviour
         } catch(System.Exception) {
             MagCalibrater = new MagnetometerAutoCalibrater();
             PopupMgr.ins.ShowTipTop("磁场干扰请远离电子设备");
-            if (DeviceCalibrateView.ins) DeviceCalibrateView.ins.ResetCalibrateMagTimeout(); 
             return;
         }
         mag0o = MagCalibrater.EllipsoidFitting.Map(mag0o);

+ 47 - 30
Assets/BowArrow/Scripts/View/DeviceCalibrateView.cs

@@ -41,11 +41,8 @@ public class DeviceCalibrateView : MonoBehaviour
         btnGyrCalibrate.GetComponent<Button>().onClick.AddListener(ClickGyrCalibrate);
         btnMagCalibrate.GetComponent<Button>().onClick.AddListener(ClickMagCalibrate);
         btnIdentityCalibrate.GetComponent<Button>().onClick.AddListener(ClickIdentityCalibrate);
-        magReset.GetComponent<Button>().onClick.AddListener(() => {
-            ResetCalibrateMagTimeout();
-            AimHandler.ins.MagCalibrater = new o0._9Axis.MagnetometerAutoCalibrater();
-            PlayerPrefs.DeleteKey("new_mag_record");
-        });
+        magReset.GetComponent<Button>().onClick.AddListener(ClickResetMag);
+        RefreshResetMagBtn();
         btnBack.GetComponent<Button>().onClick.AddListener(delegate() {
             guideIndex--;
             RefreshPage();
@@ -96,7 +93,6 @@ public class DeviceCalibrateView : MonoBehaviour
     bool canUpdateGyrCalibrateProgress = false;
 
     float calibrateMagStartTime = 0; //地磁校准开始时刻
-    bool calibrateMagTimeoutTipShowed = false; //地磁校准超时后,是否已提示
 
     void Update()
     {   
@@ -107,25 +103,7 @@ public class DeviceCalibrateView : MonoBehaviour
                 FinishGyrCalibrate();
             }
         }
-        if (deviceCalibrateItem == DeviceCalibrateItem.Mag) {
-            if (!AimHandler.ins.MagCalibrater.Complete) {
-                tipMag1.SetActive(true);
-                tipMag2.SetActive(false);
-                magReset.SetActive(true);
-
-                if ( //地磁校准超时提示
-                    !calibrateMagTimeoutTipShowed && 
-                    Time.realtimeSinceStartup - calibrateMagStartTime > 20
-                ) {
-                    calibrateMagTimeoutTipShowed = true;
-                    PopupMgr.ins.ShowTipTop("存在磁场干扰,请远离电子设备后点击重新校准!");
-                }
-            } else {
-                tipMag1.SetActive(false);
-                tipMag2.SetActive(true);
-                magReset.SetActive(true);
-            }
-        }
+        UpdateForMag();
     }
     [SerializeField] GameObject tipMag1;
     [SerializeField] GameObject tipMag2;
@@ -161,19 +139,58 @@ public class DeviceCalibrateView : MonoBehaviour
         this.transform.Find("Gyr").gameObject.SetActive(deviceCalibrateItem == DeviceCalibrateItem.Gyr);
         this.transform.Find("Mag").gameObject.SetActive(deviceCalibrateItem == DeviceCalibrateItem.Mag);
         this.transform.Find("Identity").gameObject.SetActive(deviceCalibrateItem == DeviceCalibrateItem.Identity);
-        OnRefreshPage();
     }
 
-    void OnRefreshPage() {
+    /* ------ 新地磁计校准(2022-10-3) ------ */
+    bool calibrateMagDoing = false;
+    void RefreshResetMagBtn() 
+    {
+        if (calibrateMagDoing) {
+            magReset.GetComponentInChildren<Text>().color = Color.red;
+            magReset.GetComponentInChildren<Text>().text = "取消校准";
+            return;
+        }
+        Color outColor;
+        ColorUtility.TryParseHtmlString("#005AB6", out outColor);
+        magReset.GetComponentInChildren<Text>().color = outColor;
+        if (AimHandler.ins.MagCalibrater.Complete) {
+            magReset.GetComponentInChildren<Text>().text = "重新校准";
+        } else {
+            magReset.GetComponentInChildren<Text>().text = "开始校准";
+        }
+    }
+    void ClickResetMag() 
+    {
+        calibrateMagDoing = !calibrateMagDoing;
+        if (calibrateMagDoing) {
+            calibrateMagStartTime = Time.realtimeSinceStartup;
+            AimHandler.ins.MagCalibrater = new o0._9Axis.MagnetometerAutoCalibrater();
+            PlayerPrefs.DeleteKey("new_mag_record");
+        }
+        RefreshResetMagBtn();
+    }
+    void UpdateForMag() {
         if (deviceCalibrateItem == DeviceCalibrateItem.Mag) {
-            ResetCalibrateMagTimeout();
+            if (!AimHandler.ins.MagCalibrater.Complete) {
+                tipMag1.SetActive(true);
+                tipMag2.SetActive(false);
+                magReset.SetActive(true);
+                //地磁校准超时提示
+                if (calibrateMagDoing && Time.realtimeSinceStartup - calibrateMagStartTime > 20) {
+                    calibrateMagDoing = false;
+                    RefreshResetMagBtn();
+                    PopupMgr.ins.ShowTipTop("存在磁场干扰,请远离电子设备后再进行校准!");
+                }
+            } else {
+                tipMag1.SetActive(false);
+                tipMag2.SetActive(true);
+                magReset.SetActive(true);
+            }
         }
     }
-
     //重置地磁校准超时检测
     public void ResetCalibrateMagTimeout() {
         calibrateMagStartTime = Time.realtimeSinceStartup;
-        calibrateMagTimeoutTipShowed = false;
     }
 
     // ------ 陀螺仪校准 ------