﻿using Lovense.UnityKit;
using Lovense.UnityKit.Dongle;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class DongleFeedbackItem: MonoBehaviour
{

    private LovenseDongleToy thisToy;
    [SerializeField]
    public Text movement, airInTime, airOutTime,toyName;
    [SerializeField]
    public Toggle keyUp, keyDown,startAirPump,stopAirPump, keyUp1, keyDown1;
    [SerializeField]
    public Slider vibrateSlider, rotateSlider, shakeSlider, deepSlider, batterySlider;
    [SerializeField]
    public Text ShakeTimeText;
    private int shakeTimes = 0;

   
    private void Start()
    {
        LovenseDongleTools.onGetToyDataReportingEnabled.AddListener(OnToyDataReportingEnabled);
    }

    public void SetData(LovenseDongleToy toy)
    {
        thisToy = toy;
        toyName.text = ((toy.name == null) || (toy.name == ""))?toy.id:toy.name;
    }

    private void OnToyDataReportingEnabled(string id)
    {
        //thisToy.isConnected
    }

    public void ClickOnStartListener()
    {
        LovenseDongleTools.GetInstance().AddDataReportingListener(thisToy.id, OnDataReportingGet);
    }

    

    public void ClickOnStartNotify()
    {
        LovenseDongleTools.GetInstance().SetDataReportingMode(thisToy.id,true);
    }

    public void ClickOnStopNotify()
    {
        LovenseDongleTools.GetInstance().SetDataReportingMode(thisToy.id, false);
    }

    public void OnDataReportingGet(string id,LovenseDataReportingEventType type,int target,int value)
    {
        if(id != thisToy.id)
        {
            return;
        }
        if(type == LovenseDataReportingEventType.KEY_DOWN)
        {
            if (target == 0)
            {
                keyDown.isOn = true;
            }
            else if (target == 1)
            {
                keyDown1.isOn = true;
            }
        }
        else if (type == LovenseDataReportingEventType.KEY_UP)
        {
            if (target == 0)
            {
                keyUp.isOn = true;
            } else if(target == 1)
            {
                keyUp1.isOn = true;
            }
        }
        else if (type == LovenseDataReportingEventType.AIR_OPEN)
        {
            startAirPump.isOn = true;
        }
        else if (type == LovenseDataReportingEventType.AIR_CLOSE)
        {
            stopAirPump.isOn = true;
        }
        else if (type == LovenseDataReportingEventType.VIBTATE)
        {
            vibrateSlider.value = value;
        }
        else if (type == LovenseDataReportingEventType.ROTATE)
        {
            rotateSlider.value = value;
        }
        else if (type == LovenseDataReportingEventType.SHAKE)
        {
            shakeSlider.value = value;
        } else if(type == LovenseDataReportingEventType.SHAKE_TIMES)
        {
            shakeTimes++;
            ShakeTimeText.text = "Shake:" + shakeTimes;
        }
        else if (type == LovenseDataReportingEventType.DEEP)
        {
            deepSlider.value = value;
        }
        else if (type == LovenseDataReportingEventType.MOVEMENT)
        {
            if(value == 0 )
            {
                movement.text = "to stillness";
            } else if(value == 1)
            {
                movement.text = "to movement";
            }
        }
        else if (type == LovenseDataReportingEventType.AIR_IN)
        {
            airInTime.text = (value * 10) + "ms";
        }
        else if (type == LovenseDataReportingEventType.AIR_OUT)
        {
            airOutTime.text = (value * 10) + "ms";
        }
    }

    public void OnParentDestroy()
    {
        LovenseDongleTools.GetInstance().RemoveDataReportingListener(thisToy.id, OnDataReportingGet);
        LovenseDongleTools.GetInstance().SetDataReportingMode(thisToy.id, false);
    }

}
