using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Secondarymovement : MonoBehaviour
{
    public static List<Secondarymovement> secondarymovements = new List<Secondarymovement>();
    public string number;//每个设备的个数
    public Slider slider;
    private bool isDragging = false;
    private bool isp = false;
    private float time1 = 3;
    private float timer = 0;
    private Coroutine myCoroutine;
    void Start()
    {
        secondarymovements.Add(this);
        number = secondarymovements.Count.ToString();
    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                Secondarymovement secondarymovement = hit.collider.GetComponent<Secondarymovement>();
                if (secondarymovement&&secondarymovement.number==number)
                {
                    Debug.Log(transform.name);
                    isp = true;
                    slider.gameObject.SetActive(true);
                    myCoroutine = StartCoroutine(FillProgressBar());
                }
            }
        }

        if (slider.value == 1 && myCoroutine != null)
        {
            StopCoroutine(myCoroutine);
            myCoroutine = null;
            slider.gameObject.SetActive(false);
            timer = 0;
            isDragging = true;
            slider.value = 0;

        }

    }





    IEnumerator FillProgressBar()
    {
        while (timer < time1 && isp)
        {
            timer += Time.deltaTime;
            slider.value = Mathf.Lerp(slider.minValue, slider.maxValue, timer / time1);
            yield return null;
        }
    }
    void OnMouseDown()
    {

    }



    void OnMouseDrag()
    {
        if (isDragging)
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfo;
            if (Physics.Raycast(ray, out hitInfo, 1000, 1 << 8))
            {
                isp = true;
                transform.localPosition = hitInfo.point;
            }
        }
    }

    void OnMouseUp()
    {
        isp = false;
        if (myCoroutine != null)
        {
            StopCoroutine(myCoroutine);
            myCoroutine = null;
            slider.gameObject.SetActive(false);
            slider.value = 0;
            timer = 0;
        }
        isDragging = false;
    }
}