using System; using System.Collections; using System.Collections.Generic; using Kill.Bluetooth; using Kill.Bluetooth.Protocol; using Kill.Core; using Kill.Managers; using Kill.UI.Components; using UnityEngine; using UnityEngine.UI; using Kill.Network; namespace Kill.UI.Pages { public class DeviceInfoPage : MonoBehaviour { /// /// 0所有者页面 1分享者页面 /// public GameObject[] pages; bool isOwner = false; List initActions; Managers.DeviceInfo deviceInfo; public Switch[] fingerprintSwitchs; Switch fingerprintSwitch; public Text[] deviceNames; Text deviceName; public RGBlightSetting rGBlightSetting; public Text[] rgbValues; Text rgbValue; RGBControl rGBControl; public LCDSetting lcdSetting; string nowUserid; private void Start() { Debug.Log("DeviceInfoPage初始化"); UIManager.Instance.RegisterBackAction(Back); initActions = new List(); deviceInfo = DataManager.Instance.selectedDevice; nowUserid = DataManager.Instance.userInfo.id; if (nowUserid == deviceInfo.owner_id) isOwner = true; else isOwner = false; if (isOwner) { Debug.Log("打开所有者设置"); pages[0].SetActive(true); pages[1].SetActive(false); fingerprintSwitch = fingerprintSwitchs[0]; rgbValue = rgbValues[0]; deviceName = deviceNames[0]; } else { Debug.Log("打开分享者设置"); pages[1].SetActive(true); pages[0].SetActive(false); fingerprintSwitch = fingerprintSwitchs[1]; deviceName = deviceNames[1]; rgbValue = rgbValues[1]; } deviceName.text = deviceInfo.device_name; initActions.Add(ReadFingerprint); initActions.Add(ReadLightSettings); LoadingUI.Show(); InitData(); } bool isfingerOn = true; public void ReadFingerprint() { #if UNITY_EDITOR Debug.Log("初始化指纹"); initActions.Remove(ReadFingerprint); fingerprintSwitch.Init(true, (ison) => { Debug.Log($"指纹开关:{ison}"); }); InitData(); return; #endif BLECommunicationManager.Instance.QueryUserList((UserListResponse) => { Loom.QueueOnMainThread(() => { foreach (var user in UserListResponse.Users) { if (user.Username == nowUserid) { bool isfingerOn = user.HasFingerprint; break; } } initActions.Remove(ReadFingerprint); fingerprintSwitch.Init(isfingerOn, SetFingerprintSwicth); InitData(); }); }); } public void SetFingerprintSwicth(bool isOn) { #if UNITY_EDITOR return; #endif LoadingUI.Show(); BLECommunicationManager.Instance.SetFingerprintEnable(nowUserid, isOn, (response) => { Loom.QueueOnMainThread(() => { if (response.IsSuccess) { if (isOn) SetFingerprint(); else LoadingUI.Hide(); } else { fingerprintSwitch.isOn = !isOn; LoadingUI.Hide(); } }); }); } public void SetFingerprint() { BLECommunicationManager.Instance.StartFingerprintRecord(nowUserid, (response) => { Loom.QueueOnMainThread(() => { if (response.IsSuccess) { LoadingUI.Hide(); } else { SetFingerprint(); } }); }); } /// /// 读取RGB设置 /// private void ReadLightSettings() { #if UNITY_EDITOR this.rGBControl = new RGBControl(); rGBControl.SetColor(new Color(0.1f, 0.2f, 0.3f)); rGBControl.Enable = true; rGBControl.Effect = 0; rgbValue.text = GetOnOffValue(rGBControl.Enable); initActions.Remove(ReadLightSettings); InitData(); return; #endif // 读取rgb BLECommunicationManager.Instance.ReadRGBControl((setting) => { Loom.QueueOnMainThread(() => { rGBControl = setting; rgbValue.text = GetOnOffValue(rGBControl.Enable); initActions.Remove(ReadLightSettings); InitData(); }); }); } public void InitData() { if (initActions != null && initActions.Count > 0) { initActions[0].Invoke(); } else { LoadingUI.Hide(); } } public string GetOnOffValue(bool ison) { string value = ison ? LanguageManager.Instance.GetLanguage("100099") : LanguageManager.Instance.GetLanguage("100100"); return value; } public void OpenRgbSetting() { RGBlightSetting settingPage = Instantiate(rGBlightSetting.gameObject, transform).GetComponent(); settingPage.gameObject.SetActive(true); settingPage.Init(CloseRgbSetting, rGBControl); } public void CloseRgbSetting(RGBControl ct) { rGBControl = ct; rgbValue.text = GetOnOffValue(rGBControl.Enable); UIManager.Instance.RegisterBackAction(Back); } public void OpenLCDSetting() { LCDSetting settingPage = Instantiate(lcdSetting.gameObject, transform).GetComponent(); settingPage.gameObject.SetActive(true); settingPage.Init(CloseLCDSetting); } public void CloseLCDSetting() { UIManager.Instance.RegisterBackAction(Back); } public RenamePage renamePage; public void OpenRenamePage() { RenamePage settingPage = Instantiate(renamePage.gameObject, transform).GetComponent(); settingPage.gameObject.SetActive(true); settingPage.Init(deviceInfo.device_name, CloseRenamePage); } public void CloseRenamePage(string newName) { UIManager.Instance.RegisterBackAction(Back); deviceInfo.device_name = newName; deviceName.text = newName; DataManager.Instance.selectedDevice.device_name = newName; } public VideoAndSoundSetting videoAndSoundSetting; public void OpenVideoAndSoundSetting() { VideoAndSoundSetting settingPage = Instantiate(videoAndSoundSetting.gameObject, transform).GetComponent(); settingPage.gameObject.SetActive(true); settingPage.Init(CloseVideoAndSoundSetting); } public void CloseVideoAndSoundSetting() { UIManager.Instance.RegisterBackAction(Back); } public void Back() { UIManager.Instance.OpenMainPage(UIManager.PageName.homePage); } public GameObject[] restoreSettingsTips; public void RestoreSettings0() { restoreSettingsTips[0].gameObject.SetActive(true); restoreSettingsTips[1].gameObject.SetActive(false); restoreSettingsTips[2].gameObject.SetActive(false); restoreSettingsTips[0].GetComponent().Init(RestoreSettings1, null); } string password = ""; public void RestoreSettings1() { restoreSettingsTips[1].gameObject.SetActive(true); restoreSettingsTips[0].gameObject.SetActive(false); restoreSettingsTips[2].gameObject.SetActive(false); restoreSettingsTips[1].GetComponent().Init(CheckPassWord, null); } public void CheckPassWord() { password = restoreSettingsTips[1].transform.Find("框").GetComponentInChildren().text; if (password == "") { return; } LoadingUI.Show(); CheckPasswordAsync(password); } public void RestoreSettings2() { restoreSettingsTips[2].gameObject.SetActive(true); restoreSettingsTips[0].gameObject.SetActive(false); restoreSettingsTips[1].gameObject.SetActive(false); restoreSettingsTips[2].GetComponent().Init(ResetDeviceAsync, null); } /// /// 验证密码 /// private async void CheckPasswordAsync(string password) { try { // 构建请求数据 var requestData = new PasswordRequest { password = password }; var response = await NetworkCtrl.Instance.Post("/api/v1/auth/password/verify", requestData); if (response.Data.code == 200) { Debug.Log("密码正确"); RestoreSettings2(); } else { ToastUI.Show("100040"); } LoadingUI.Hide(); } catch (Exception ex) { ToastUI.Show("100040"); } } private async void ResetDeviceAsync() { LoadingUI.Show(); restoreSettingsTips[2].gameObject.SetActive(false); try { // 构建请求数据 var requestData = new ResetDeviceRequest { device_sn = deviceInfo.device_sn }; var response = await NetworkCtrl.Instance.Post("/api/v1/device/reset", requestData); ResponseCodeHandler.HandleResponse(response, onSuccess: (data) => { Debug.Log(data.code); if (data.code == 200) { ResetDeviceBluetooth(); } else { ToastUI.Show("100036"); } LoadingUI.Hide(); }, onError: (code, message) => { LoadingUI.Hide(); ToastUI.Show("100036"); } ); } catch (Exception ex) { ToastUI.Show("100036"); } } private void ResetDeviceBluetooth() { LoadingUI.Show(); BLECommunicationManager.Instance.FactoryReset((success) => { Loom.QueueOnMainThread(() => { if (success) { BLECommunicationManager.Instance.Disconnect(); LoadingUI.Hide(); UIManager.Instance.OpenMainPage(UIManager.PageName.homePage); } else { LoadingUI.Hide(); ToastUI.Show("100068"); } }); }); } } }