killapp/Assets/Scripts/UI/Pages/HomePage/HomePageDeviceCtrl.cs

228 lines
7.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections;
using System.Collections.Generic;
using Kill.Bluetooth.Protocol;
using Kill.Managers;
using UnityEngine;
using UnityEngine.UI;
namespace Kill.UI.Pages
{
public class HomePageDeviceCtrl : MonoBehaviour
{
/// <summary>
/// 设备控制按钮 开关 fov 距离 补光灯 安全 待机 扫描 消杀
/// </summary>
public Button[] deviceCtrlButtons;
public Image deviceCtrlIcon;
/// <summary>
/// 设备控制图标 0关机 1开机
/// </summary>
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;
}
isDeviceOn=isOn;
}
public void SetDeviceControl()
{
InitDeviceControl(!isDeviceOn);
}
/// <summary>
/// 0:未连接无值 1:有值
/// </summary>
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[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());
}
}
/// <summary>
/// -1:未连接 0:待机 1:扫描 2:消杀
/// </summary>
/// <param name="mode"></param>
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;
}
/// <summary>
/// 设置工作模式按钮点击事件
/// </summary>
/// <param name="mode">目标模式 0:待机 1:扫描 2:消杀</param>
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();
}
}
}