using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using System.Collections;
using System;



public class UIHoldBtn : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    [Serializable]
    public class HoldEvent : UnityEvent
    {
        public HoldEvent()
        {

        }
    }

    [SerializeField]
    private HoldEvent _BtnHold;

    [Serializable]
    public class ReleaseEvent : UnityEvent
    {
        public ReleaseEvent()
        {

        }
    }

    [SerializeField]
    private ReleaseEvent _BtnRelease;

    public float _HoldTime = 0.5f;
    private float _HoldDuring = 0;
    private bool _Holding = false;

    public void Update()
    {
        if (_HoldDuring > 0)
        {
            _HoldDuring -= Time.deltaTime;
            if (_HoldDuring <= 0)
            {
                _BtnHold.Invoke();
                _Holding = true;
            }
        }
    }

    public void OnPointerDown(PointerEventData eventData)
    {
        _HoldDuring = _HoldTime;
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        if (_Holding)
        {
            _Holding = false;
            _BtnRelease.Invoke();
        }
    }
}