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

public class WinLovenseFeedbackItem : MonoBehaviour
{

    private LovenseWinBleToy thisToy;
    [SerializeField]
    public Text movement, airInTime, airOutTime,toyName;
    [SerializeField]
    public Toggle keyUp, keyDown, key1Up, key1Down, startAirPump,stopAirPump;
    [SerializeField]
    public Slider vibrateSlider, rotateSlider, shakeSlider, deepSlider, batterySlider;

    [SerializeField]
    public Text ShakeTimeText;
    private int shakeTimes = 0;



    private void Start()
    {
       
    }

    public void SetData(LovenseWinBleToy toy)
    {
        thisToy = toy;
        toyName.text = toy.name;
    }

    public void ClickOnStartListener()
    {
        LovenseWinBleTools.GetInstance().AddDataReportingListener(thisToy.id, OnGetReportingData);
    }

    

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

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

    public void OnGetReportingData(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
            {
                key1Down.isOn = true;
            }
        }
        else if (type == LovenseDataReportingEventType.KEY_UP)
        {
            if (target == 0)
            {
                keyUp.isOn = true;
            }
            else
            {
                key1Up.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";
        }
    }

    private void OnDestroy()
    {
        if (thisToy != null)
        {
            LovenseWinBleTools.GetInstance().RemoveDataReportingListener(thisToy.id, OnGetReportingData);
        }
    }

}
