using System; using System.Collections; using System.Collections.Generic; using Kill.Bluetooth; using Kill.Bluetooth.Protocol; using Kill.Managers; using Kill.UI.Components; using UnityEngine; using UnityEngine.UI; namespace Kill.UI.Pages { public class HomePageDeviceCtrl : MonoBehaviour { /// /// 设备控制按钮 开关 fov 距离 补光灯 安全 待机 扫描 消杀 /// public Button[] deviceCtrlButtons; public Image deviceCtrlIcon; /// /// 设备控制图标 0:关机 1:开机 /// public Sprite[] deviceCtrlIconSprites; private bool isDeviceOn = false; public void InitDeviceControl(bool isOn) { deviceCtrlIcon.sprite=deviceCtrlIconSprites[isOn?1:0]; foreach(var button in deviceCtrlButtons) { button.interactable=isOn; } deviceCtrlButtons[0].interactable=true; isDeviceOn=isOn; if(!isOn) { InitFovText(0); InitLensText(0, 0); InitLightText(false); InitSafeText(false); InitWrokMode(-1); } } /// /// 0:未连接无值 1:有值 /// public Color[] valueColors; public Text fovText; public void InitFovText(int fov) { if (fov == 0) { fovText.text="--"; fovText.color=valueColors[0]; return; } fovText.color=valueColors[1]; fovText.text=fov.ToString()+"°"; } public Text lensText; public void InitLensText(float lens,int unit) { if(lens==0) { lensText.text="--"; lensText.color=valueColors[0]; return; } lensText.color=valueColors[1]; if(unit==0) { lensText.text=lens.ToString("F1"); lensText.text+="m"; } else { int lensFt=(int)(lens*3.28084); lensText.text=lensFt.ToString(); lensText.text+="ft"; } } public Image lightIcon; public Sprite[] lightIconSprites; public Text lightText; public void InitLightText(bool isOn) { string stateStr=LanguageManager.Instance.GetLanguage(isOn?"100099":"100100"); lightText.text=stateStr; lightIcon.sprite=lightIconSprites[isOn?1:0]; } public Image safeIcon; public Sprite[] safeIconSprites; public Text safeText; public void InitSafeText(bool isVisualOn) { bool isOn=isVisualOn; string stateStr=LanguageManager.Instance.GetLanguage(isOn?"100099":"100100"); safeText.text=stateStr; safeIcon.sprite=safeIconSprites[isOn?1:0]; } public Color[] workModeColors; public Text[] workModeTexts; public Image standbyIcon; public Sprite[] standbyIconSprites; public Button standbyButton; public Image scanIcon; public Sprite[] scanIconSprites; public Button scanButton; public Image armedIcon; public Sprite[] armedIconSprites; public Button armedButton; void Start() { // 绑定工作模式按钮点击事件(先移除避免重复绑定) if (standbyButton != null) { standbyButton.onClick.RemoveAllListeners(); standbyButton.onClick.AddListener(() => OnWorkModeButtonClick(0)); } if (scanButton != null) { scanButton.onClick.RemoveAllListeners(); scanButton.onClick.AddListener(() => OnWorkModeButtonClick(1)); } if (armedButton != null) { armedButton.onClick.RemoveAllListeners(); armedButton.onClick.AddListener(() => OnWorkModeButtonClick(2)); } if(deviceCtrlButtons[0]!=null) { deviceCtrlButtons[0].onClick.RemoveAllListeners(); deviceCtrlButtons[0].onClick.AddListener(() => OnLockButtonClick()); } if(deviceCtrlButtons[1]!=null) { deviceCtrlButtons[1].onClick.RemoveAllListeners(); deviceCtrlButtons[1].onClick.AddListener(() => OnFovSettingButtonClick()); } if(deviceCtrlButtons[2]!=null) { deviceCtrlButtons[2].onClick.RemoveAllListeners(); deviceCtrlButtons[2].onClick.AddListener(() => OnLensSettingButtonClick()); } if(deviceCtrlButtons[3]!=null) { deviceCtrlButtons[3].onClick.RemoveAllListeners(); deviceCtrlButtons[3].onClick.AddListener(() => OnLightSettingButtonClick()); } if(deviceCtrlButtons[4]!=null) { deviceCtrlButtons[4].onClick.RemoveAllListeners(); deviceCtrlButtons[4].onClick.AddListener(() => OnSafetySettingButtonClick()); } } /// /// -1:未连接 0:待机 1:扫描 2:消杀 /// /// public void InitWrokMode(int mode) { // 更新当前工作模式 currentWorkMode = mode; foreach (var text in workModeTexts) { text.color = workModeColors[0]; } standbyIcon.sprite = standbyIconSprites[0]; scanIcon.sprite = scanIconSprites[0]; armedIcon.sprite = armedIconSprites[0]; if (mode<0||mode>2) { return; } if(mode==0) { standbyIcon.sprite=standbyIconSprites[1]; workModeTexts[0].color=workModeColors[1]; } else if(mode==1) { scanIcon.sprite=scanIconSprites[1]; workModeTexts[1].color=workModeColors[1]; } else if(mode==2) { armedIcon.sprite=armedIconSprites[1]; workModeTexts[2].color=workModeColors[1]; } } // 当前工作模式 -1:未连接 0:待机 1:扫描 2:消杀 private int currentWorkMode = -1; public int GetCurrentWorkMode() { return currentWorkMode; } public void OnLockButtonClick() { LoadingUI.Show(); bool aim=!isDeviceOn; HomePageCtrl.Instance?.SetLock(aim); } /// /// 设置工作模式按钮点击事件 /// /// 目标模式 0:待机 1:扫描 2:消杀 public void OnWorkModeButtonClick(int mode) { // 如果点击的是当前模式,不响应 if (mode == currentWorkMode) { Debug.Log($"[HomePageDeviceCtrl] 点击的模式 {mode} 与当前模式相同,不响应"); return; } // 通知 HomePageCtrl 切换工作模式(Loading 在 SetWorkMode 中显示) HomePageCtrl.Instance?.SetWorkMode(mode); } public void OnFovSettingButtonClick() { HomePageCtrl.Instance?.ShowFovSettingPage(); } public void OnLensSettingButtonClick() { HomePageCtrl.Instance?.ShowLensSettingPage(); } public void OnLightSettingButtonClick() { HomePageCtrl.Instance?.ShowLightSettingPage(); } public void OnSafetySettingButtonClick() { HomePageCtrl.Instance?.ShowSafetySettingPage(); } } }