using DataModel.Model;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.Events;

public class Doubleclickdelete : MonoBehaviour
{
    public UnityEvent standaloneevent;
    public UnityEvent doubleclickecent;
    public float timer;//用来判断是否事单机还是双击
    public float lasttime;//计入当前场景的时间
    public int count;//用来判断点击了几下
    public float interval = 0.2f;//用来判断双击间隔时间
    private bool iscount = true;//用来判断的是单机还是双击
    void Start()
    {
         
    }


    void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            timer = 0.2f;
            if (Time.realtimeSinceStartup - lasttime < interval)
            {
                count = 2;
            }
            else
            {
                count = 1;
            }
        }
        if (Input.GetMouseButtonUp(1))
        {
            iscount = false;
            lasttime = Time.realtimeSinceStartup;
        }
        if (!iscount)
        {
            timer -= Time.deltaTime;
            if (timer < 0)
            {
                if (count == 1)
                {

                    standaloneevent?.Invoke();
                }
                else if (count == 2)
                {
                    Deletionmodel();
                    doubleclickecent?.Invoke();
                }
                iscount = true;
            }
        }
    }

    private void Deletionmodel()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit, Mathf.Infinity))
        {
            if (hit.collider.gameObject.tag=="model")
            {
                
                Modeldeletion(hit.collider.gameObject);
                //if (DragManager.Instance.devices.Count > 0)
                //{
                //    Scenariopage scenariopage = GetComponent<Scenariopage>();
                //    for (int i = 0; i < DragManager.Instance.devices.Count; i++)
                //    {
                //        int index = i;
                //        if (hit.collider.gameObject.name == DragManager.Instance.devices[index].name)
                //        {
                //            Destroy(DragManager.Instance.devices[index].gameObject);
                //            DragManager.Instance.devices.RemoveAt(index);
                //            if (scenariopage.properties.Count > 0)
                //            {
                //                Deletebutton(scenariopage,DragManager.Instance.devices[index].gameObject.name);
                //            }
                //            break;
                //        }
                //    }
                //}
            }
        }
    }

    private void Modeldeletion(GameObject gameObject)
    {
        Scenariopage scenariopage = GetComponent<Scenariopage>();
        for (int i = 0; i < DragManager.Instance.devices.Count; i++)
        {
            int index = i;
            if (gameObject.name == DragManager.Instance.devices[index].name)
            {
                Destroy(DragManager.Instance.devices[index].gameObject);
                DragManager.Instance.devices.RemoveAt(index);
                if (scenariopage.properties.Count > 0)
                {
                    Deletebutton(scenariopage, DragManager.Instance.devices[index].gameObject.name);
                }
                break;
            }
        }
    }

    private void Deletebutton(Scenariopage scenariopage, string name)
    {

        for (int i = 0; i < scenariopage.properties.Count; i++)
        {
            int index = i;
            if (scenariopage.properties[index].name == name)
            {
                Destroy(scenariopage.properties[index].gameObject);
                scenariopage.properties.RemoveAt(index);
                break;
            }
        }

    }

}