using AppUI.Bluetooth;
using AppUI.Localization;
using AppUI.Manager;
using AppUI.Manager.View;
using AppUI.View.Home.Main;
using InfraredManager;
using SmartBowSDK;
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using BLEAimhandler = AppUI.Bluetooth.AimHandler;
using SdkAimDeviceInfo = SmartBowSDK.AimDeviceInfo;
namespace AppUI.View.Home.DeviceView
{
public class DeviceView_ItemShow : MonoBehaviour
{
[Tooltip("当前选择的用户设备")]
[SerializeField] BluetoothPlayer bluetoothPlayer = BluetoothPlayer.FIRST_PLAYER;
[SerializeField] Image selectPanel;
[SerializeField] Button btnBg;
[SerializeField] TMP_Text titleText;
[Header("操作按钮(连接/屏幕定位 + 切换设备)")]
[SerializeField] Button btnPrimaryAction;
[SerializeField] Image btnPrimaryActionBg;
[SerializeField] TMP_Text btnPrimaryActionLabel;
[SerializeField] Button btnSwitchDevice;
[SerializeField] Image btnSwitchDeviceBg;
[SerializeField] TMP_Text btnSwitchDeviceLabel;
[SerializeField] GameObject bettery;
[SerializeField] GameObject betteryBar;
[SerializeField] GameObject betteryValue;
[SerializeField] Image bowBg;
float countingTime1 = 5;
[SerializeField] int deviceIndex;
bool bShowInfo;
string omitText;
int dotCount;
float interval = 0.5f;
float timer;
[SerializeField] TMP_Text curConnectStatus;
[SerializeField] TMP_Text curScreenPositioningStatus;
const string KeyScreenPositioningDone = "appui-sideslip-screen-positioning-done";
const string KeyScreenPositioningIncomplete = "appui-sideslip-screen-positioning-incomplete";
const string KeyStatusNotConnected = "appui-device-status-not-connected";
const string KeyStatusConnecting = "appui-device-status-connecting";
const string KeyStatusConnected = "appui-device-status-connected";
const string KeyBtnConnect = "appui-device-btn-connect";
const string KeyBtnDisconnect = "appui-device-btn-disconnect";
const string KeyBtnSwitch = "appui-device-btn-switch";
const string KeyBtnScreenPositioning = "appui-device-btn-screen-positioning";
const string KeyTipInfraredConnect = "appui-device-tip-infrared-connect";
static readonly Color32 BlackBg = new Color32(0, 0, 0, 255);
static readonly Color32 WhiteBg = new Color32(255, 255, 255, 255);
static readonly Color32 WhiteText = new Color32(255, 255, 255, 255);
static readonly Color32 BlackText = new Color32(50, 50, 50, 255);
static readonly Color32 StatusCompleteColor = new Color32(0, 0, 0, 255);
static readonly Color32 StatusIncompleteColor = new Color32(145, 144, 144, 255);
SmartBowDeviceHub Hub => SmartBowDeviceHub.ins;
public BluetoothPlayer Player => bluetoothPlayer;
/// 连接 / 屏幕定位按钮节点。
public Button BtnPrimaryAction => btnPrimaryAction;
/// 切换设备按钮节点。
public Button BtnSwitchDevice => btnSwitchDevice;
public GameObject BtnPrimaryActionNode => btnPrimaryAction != null ? btnPrimaryAction.gameObject : null;
public GameObject BtnSwitchDeviceNode => btnSwitchDevice != null ? btnSwitchDevice.gameObject : null;
enum PrimaryActionKind
{
ConnectSideSlip,
InfraredView,
Disconnect,
}
PrimaryActionKind _primaryActionKind = PrimaryActionKind.ConnectSideSlip;
bool IsConnectSuccess()
{
return Hub != null && Hub.IsConnected(bluetoothPlayer);
}
bool IsConnecting()
{
return Hub != null && Hub.IsConnecting(bluetoothPlayer);
}
bool IsScreenPositioned()
{
InfraredCameraHelper helper = InfraredCameraHelper.GetInstance();
return helper != null && helper.IsScreenLoateOK();
}
void Awake()
{
ResolveUiReferences();
if (Hub?.Aim != null)
Hub.Aim.aimDeviceInfoChangeEvent += onShowDeviceInfo;
}
void ResolveUiReferences()
{
if (titleText == null)
{
Transform title = transform.Find("Panel/title");
if (title != null)
titleText = title.GetComponent();
}
ResolveActionButtonReferences();
}
void ResolveActionButtonReferences()
{
if (btnPrimaryAction == null)
{
Transform screen = transform.Find("connected/bottom/Buttons/Screen");
if (screen != null)
{
btnPrimaryAction = screen.GetComponent