172 lines
4.3 KiB
C#

using Assets.Scripts.Devices;
using Assets.Scripts.Devices.Ant;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class DeviceItem : Selectable, IEventSystemHandler, IPointerClickHandler
{
private bool isOn;
private Text mText;
private Image network;
private Image signal;
private float timer = 0f;
public AbstractDevice DeviceInfo
{
get;set;
}
protected override void Awake()
{
mText = this.transform.Find("Name").GetComponent<Text>();
network = this.transform.Find("Network").GetComponent<Image>();
signal = this.transform.Find("Signal").GetComponent<Image>();
}
// Start is called before the first frame update
protected override void Start()
{
//this.currentSelectionState = SelectionState.Selected
if (DeviceInfo == null)
return;
mText.text = DeviceInfo.Name;// + "-" + DeviceInfo.DeviceNumber;
if(DeviceInfo.Network == NetworkType.ANT)
{
mText.text += "-" + DeviceInfo.DeviceNumber;
}
//if(DeviceInfo.State == DeviceState.Connected)
{
// this.SetSelectedStyle();
}
if(DeviceInfo.Network == NetworkType.BLE)
{
network.sprite = Resources.Load<Sprite>("Images/link_bluetooth_2");
}
else
{
signal.enabled = false;
}
SetSignal();
}
private void SetSignal()
{
if(DeviceInfo == null)
{
return;
}
Debug.Log(DeviceInfo.SignalStrength);
//signal.enabled = true;
var signalValue = DeviceInfo.SignalStrength * -1;
if (signalValue >= 0 && signalValue <= 30)
{
signal.sprite = Resources.Load<Sprite>("Images/Signal_1");
}
else if (signalValue > 30 && signalValue <= 60)
{
signal.sprite = Resources.Load<Sprite>("Images/Signal_2");
}
else if (signalValue > 60)//&& signalValue <= 97
{
signal.sprite = Resources.Load<Sprite>("Images/Signal_3");
}
}
public override void OnPointerEnter(PointerEventData eventData)
{
//base.OnPointerEnter(eventData);
//Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
}
private void SetSelectedStyle()
{
ColorUtility.TryParseHtmlString("#F93086", out Color color);
mText.color = color;
var shadow = mText.gameObject.GetComponent<Shadow>();
if (shadow == null)
{
shadow = mText.gameObject.AddComponent<Shadow>();
}
shadow.enabled = true;
ColorUtility.TryParseHtmlString("#F93086", out Color color1);
shadow.effectColor = color1;
network.color = color1;
}
public override void Select()
{
//base.Select();
Debug.Log("select");
//SetSelectedStyle();
//UIManager.CloseModal();
}
public override void OnDeselect(BaseEventData eventData)
{
//base.OnDeselect(eventData);
//Debug.Log("deselect");
//DeviceInfo.Disconnect();
}
// Update is called once per frame
void Update()
{
if (timer >= 2)
{
timer = 0f;
SetSignal();
return;
}
timer += Time.deltaTime;
}
public void OnPointerClick(PointerEventData eventData)
{
//this.Select();
//DeviceInfo.Connect();
}
public bool GetStatus()
{
return this.isOn;
}
public void Set(bool value)
{
if(!this.IsActive() || this.interactable == false)
{
return;
}
this.isOn = value;
if (this.isOn)
{
SetSelectedStyle();
var manager = FindObjectOfType<ConnectDeviceModal>();
manager.SelectDevice(this);
}
else
{
mText.color = Color.white;
network.color = Color.white;
var shadow = mText.gameObject.GetComponent<Shadow>();
if (shadow != null)
{
//shadow = mText.gameObject.AddComponent<Shadow>();
shadow.enabled = false;
}
}
}
}