using Lovense.UnityKit.Android;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class AndroidLovenseItem : MonoBehaviour
{
    [SerializeField]
    public Text deviceName, deviceId, deviceRssi, deviceStatus,devicesBattery;
    [SerializeField]
    public Toggle toggle;
    public LovenseAndroidToy toy;

    public void SetToy(LovenseAndroidToy ty)
    {
        LovenseAndroidSDK.GetInstance().AddBatteryListener(ty.toyId);
        LovenseAndroidSDK.GetInstance().SubscribeBatteryChangedEvent(OnGetBattery);
        LovenseAndroidSDK.GetInstance().SubscribeConnectionChangedEvent(OnConnectionChanged);
        this.gameObject.SetActive(true);
        this.toy = ty;
        deviceName.text = ty.deviceName;
        deviceId.text = ty.toyId;
        deviceRssi.text = ty.rssi+"";
        deviceStatus.text = (ty.connected ? "connected" : "disconnected");
        if (LovenseAndroidSDK.GetInstance().IsConnected(this.toy.toyId))
        {
            deviceStatus.text = ("connected");
            devicesBattery.text = ty.battery+"%";

        }
        else
        {
            deviceStatus.text = ("not connected");
            devicesBattery.text = "";

        }
        toggle.gameObject.SetActive(true);

    }

    private void OnConnectionChanged(string toyId, ToyStatus status)
    {
        if (this.toy.toyId == toyId)
        {
            toy.connected = status == ToyStatus.CONNECTED;
            deviceStatus.text = status == ToyStatus.CONNECTED? "connected" : ("disconnected");
        }
    }

    private void OnGetBattery(string toyid, int battery)
    {
        if (this.toy.toyId == toyid)
        {
            devicesBattery.text = battery + "%";
        }
    }
    public void ClickOnRoot()
    {
        AndroidGlobalParams.GetInstance().thisToys = new List<LovenseAndroidToy>() {this.toy };
        SceneManager.LoadScene("LovenseAndroidScene1");
    }

    public bool IsCheck()
    {
        return toggle.isOn;
    }

    public LovenseAndroidToy GetToy()
    {
        if(this.toy != null)
        {
            return this.toy;
        }
        return null;
    }

    private void OnDestroy()
    {
        LovenseAndroidSDK.GetInstance().UnsubscribeBatteryChangedEvent(OnGetBattery);
        LovenseAndroidSDK.GetInstance().UnsubscribeConnectionChangedEvent(OnConnectionChanged);

    }

}
