| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- public class DeviceCalibrateView : MonoBehaviour
- {
- [SerializeField] Button btnGyrCalibrate;
- [SerializeField] Text progressGyrCalibrate;
- [SerializeField] Button btnMagCalibrate;
- [SerializeField] Button btnIdentityCalibrate;
- [SerializeField] Button btnBack;
- [SerializeField] Button btnNext;
- [SerializeField] Button btnFinish;
- public DeviceCalibrateItem deviceCalibrateItem = DeviceCalibrateItem.Guide;
- DeviceCalibrateItem[] deviceCalibrateItemForGuide = {
- DeviceCalibrateItem.Gyr,
- DeviceCalibrateItem.Mag
- };
- int guideIndex = 0;
- public bool guide = true;
-
- public static GameObject Create(DeviceCalibrateItem itemType = DeviceCalibrateItem.Guide) {
- GameObject o = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/Views/DeviceCalibrateView"));
- o.GetComponent<DeviceCalibrateView>().deviceCalibrateItem = itemType;
- o.GetComponent<DeviceCalibrateView>().guide = itemType == DeviceCalibrateItem.Guide;
- return o;
- }
- void Start()
- {
- BluetoothHolder.ins.ShowMagEllipse(this);
- btnGyrCalibrate.GetComponent<Button>().onClick.AddListener(ClickGyrCalibrate);
- btnMagCalibrate.GetComponent<Button>().onClick.AddListener(ClickMagCalibrate);
- btnIdentityCalibrate.GetComponent<Button>().onClick.AddListener(ClickIdentityCalibrate);
- btnBack.GetComponent<Button>().onClick.AddListener(delegate() {
- guideIndex--;
- RefreshPage();
- });
- btnNext.GetComponent<Button>().onClick.AddListener(delegate() {
- guideIndex++;
- RefreshPage();
- });
- btnFinish.GetComponent<Button>().onClick.AddListener(delegate() {
- Destroy(this.gameObject);
- if (guide && guideIndex == deviceCalibrateItemForGuide.Length - 1) {
- GameMgr.ins.FinishDeviceCalibrateGuide();
- }
- });
- RefreshPage();
- }
- void OnDestroy()
- {
- BluetoothHolder.ins.HideMagEllipse(this);
- if (gyrCalibrating) {
- AimHandler.ins.CalibrateGyr(false);
- }
- if (magCalibrating) {
- AimHandler.ins.CalibrateMag(false);
- }
- }
- bool canUpdateGyrCalibrateProgress = false;
- void Update()
- {
- if (canUpdateGyrCalibrateProgress) {
- int progress = (int) ((float) AimHandler.ins.gyrCalibrateCompleteCount * 100 / (float) AimHandler.ins.gyrCalibrateTotalCount);
- progressGyrCalibrate.text = progress + "%";
- if (progress >= 100) {
- FinishGyrCalibrate();
- }
- }
- }
- void RefreshPage() {
- if (guide) {
- deviceCalibrateItem = deviceCalibrateItemForGuide[guideIndex];
- if (guideIndex == 0) {
- btnBack.gameObject.SetActive(false);
- btnNext.gameObject.SetActive(true);
- btnFinish.gameObject.SetActive(false);
- } else if (guideIndex == deviceCalibrateItemForGuide.Length - 1) {
- btnBack.gameObject.SetActive(true);
- btnNext.gameObject.SetActive(false);
- btnFinish.gameObject.SetActive(true);
- } else {
- btnBack.gameObject.SetActive(true);
- btnNext.gameObject.SetActive(true);
- btnFinish.gameObject.SetActive(false);
- }
- } else {
- btnBack.gameObject.SetActive(false);
- btnNext.gameObject.SetActive(false);
- btnFinish.gameObject.SetActive(true);
- }
- 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);
- }
- // ------ 陀螺仪校准 ------
- bool gyrCalibrating = false;
- void ClickGyrCalibrate()
- {
- Button btn = btnGyrCalibrate.GetComponent<Button>();
- gyrCalibrating = !gyrCalibrating;
- if (btn.enabled) {
- btn.enabled = false;
- btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("Textures/Common/ButtonGray");
- btn.GetComponentInChildren<Text>().color = Color.gray;
- AimHandler.ins.gyrCalibrateCompleteCount = 0;
- canUpdateGyrCalibrateProgress = true;
- AimHandler.ins.CalibrateGyr(true);
- }
- }
- void FinishGyrCalibrate()
- {
- canUpdateGyrCalibrateProgress = false;
- if (!guide) {
- Button btn = btnGyrCalibrate.GetComponent<Button>();
- btn.enabled = true;
- btn.GetComponentInChildren<TextAutoLanguage>().SetText(116);
- btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("Textures/Common/ButtonBlue");
- Color outColor;
- ColorUtility.TryParseHtmlString("#005AB6", out outColor);
- btn.GetComponentInChildren<Text>().color = outColor;
- }
- AimHandler.ins.CalibrateGyr(false);
- }
- // ------ 地磁计校准 ------
- bool magCalibrating = false;
- void ClickMagCalibrate()
- {
- Button btn = btnMagCalibrate.GetComponent<Button>();
- magCalibrating = !magCalibrating;
- if (magCalibrating) {
- btn.GetComponentInChildren<TextAutoLanguage>().SetText(83);
- btn.GetComponentInChildren<Text>().color = Color.red;
- AimHandler.ins.CalibrateMag(true);
- } else {
- if (guide) {
- btn.enabled = false;
- btn.GetComponentInChildren<TextAutoLanguage>().SetText(82);
- btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("Textures/Common/ButtonGray");
- btn.GetComponentInChildren<Text>().color = Color.gray;
- } else {
- btn.GetComponentInChildren<TextAutoLanguage>().SetText(116);
- Color outColor;
- ColorUtility.TryParseHtmlString("#005AB6", out outColor);
- btn.GetComponentInChildren<Text>().color = outColor;
- }
- AimHandler.ins.CalibrateMag(false);
- }
- }
- // ------ 视角归位 ------
- void ClickIdentityCalibrate() {
- AimHandler.ins.DoIdentity();
- Button btn = btnIdentityCalibrate.GetComponent<Button>();
- btn.GetComponent<Image>().sprite = Resources.Load<Sprite>("Textures/Common/ButtonGray");
- btn.GetComponentInChildren<Text>().color = Color.gray;
- btn.enabled = false;
- }
- // 对外开发按钮接口
- public (Button, Button) GetInterfaceBtns()
- {
- Button btn1 = btnGyrCalibrate;
- if (deviceCalibrateItem == DeviceCalibrateItem.Mag) btn1 = btnMagCalibrate;
- return (btn1, btnFinish);
- }
- }
- public enum DeviceCalibrateItem
- {
- Guide, Gyr, Mag, Identity
- }
|