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

public class OSXLovenseFeedbackItem : MonoBehaviour
{

    private LovenseOSXToy 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 shakeTime;
    private int shakeTimes = 0;


   
    private void Start()
    {
       
    }

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

    public void ClickOnStartListener()
    {
        LovenseOSXTools.GetInstance().AddDataReportingListener(thisToy.identifier, OnFeedback);
    }

    

    public void ClickOnStartNotify()
    {
        LovenseOSXTools.GetInstance().SetDataReportingMode(thisToy.identifier, true);
    }

    public void ClickOnStopNotify()
    {
        LovenseOSXTools.GetInstance().SetDataReportingMode(thisToy.identifier, false);
    }

    public void OnFeedback(string id,LovenseDataReportingEventType type,int target,int value)
    {
        if(id != thisToy.identifier)
        {
            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++;
            shakeTime.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()
    {
        //LovenseWinBleTools.GetInstance().RemoveFeedbackListener(thisToy.id, OnFeedback);
    }
}
