using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using UnityEngine;

public class NPC_QW : MonoBehaviour
{
    // Start is called before the first frame update
    private float distacneToPlayer;
    public GameObject player;
    public Transform[] goToPoint;

    public Animator anim;

    private Transform _targetPoint;
    private int _index = 0;
    private bool _IsRun = true;
    public Vector2 turnAnddeletTime;//x为转弯速度,y为规定时间到达。
    public Vector2 turnAnddeletTime1;//x为转弯速度,y为规定时间到达。
    public Vector2 turnAnddeletTime2;//x为转弯速度,y为规定时间到达。
    public Vector2 turnAnddeletTime3;//x为转弯速度,y为规定时间到达。
    public bool _isVuforia;//判断为SvrCamera还是vuforiaCamera;
    public int index
    {
        get => _index++;
        set
        {

        }
    }

    private void OnEnable()
    {
        //if (!_isVuforia)
        //{
        //    player = SvrManager.Instance.head.gameObject;
        //}

        StartCoroutine(CrabAI());
    }
    void Start()
    {
    }

    //private void Update()
    //{

    //    //_targetPoint = v3Point[index];
    //    //  this.transform.DOLocalPath(v3Point[], 10f, PathType.CatmullRom);
    //    // this.transform.DOLookAt(goToPoint[0].position, 0.5f);
    //    // this.transform.DOMove(goToPoint[0].transform.position, 10f, false);

    //    //transform.LookAt(v3Point[index]);
    //    //transform.DOBlendableLocalMoveBy(Vector3.forward * 10, 3);
    //    if (Input.GetKeyUp(KeyCode.A))
    //    {

    //        CrabPath(turnAnddeletTime.x, turnAnddeletTime.y);

    //    }
    //    if (Input.GetKeyUp(KeyCode.B))
    //    {
    //        CrabPath(turnAnddeletTime.x, turnAnddeletTime.y);
    //    }
    //    if (Input.GetKeyUp(KeyCode.C))
    //    {

    //        CrabPath(turnAnddeletTime.x, turnAnddeletTime.y);
    //    }
    //    if (Input.GetKeyUp(KeyCode.D))
    //    {
    //        CrabPath(turnAnddeletTime.x, turnAnddeletTime.y);
    //    }

    //}
    public IEnumerator CrabAI()
    {
        while (true)
        {
            yield return new WaitForSeconds(1f);
            if(player!=null)
            {
                distacneToPlayer = Vector3.Distance(this.transform.position, player.transform.position);
             //   Debug.Log(string.Format("{0}====={1}", transform.name, distacneToPlayer));
                if (distacneToPlayer < 1.8f && _IsRun == true)
                {
                    // anim.SetBool("IsRun", true);
                    // anim.SetBool("isWait", false);

                    //  this.transform.DOMove(goToPoint.transform.position, 10f, false);
                    if (_index == 0)
                    {
                        //  CrabPath(1f,5f);
                        CrabPath(turnAnddeletTime.x, turnAnddeletTime.y);
                    }
                    else if (_index == 1)
                    {
                        // CrabPath(1f,5f);
                        CrabPath(turnAnddeletTime.x, turnAnddeletTime.y);
                    }
                    else if (_index == 2)
                    {
                        //  CrabPath(1f,5f);
                        CrabPath(turnAnddeletTime.x, turnAnddeletTime.y);
                    }
                    else if (_index == 3)
                    {
                        //  CrabPath(1f, 5f);
                        CrabPath(turnAnddeletTime.x, turnAnddeletTime.y);
                    }


                }
            }
            

        }
    }

    public void CrabPath(float turnTime, float deletTime)
    {
        _IsRun = false;
        anim.SetBool("IsRun", true);
        this.transform.DOLookAt(goToPoint[_index].position, turnTime);
        this.transform.DOMove(goToPoint[_index].transform.position, deletTime, false);
        //   Debug.Log("Run");
        StartCoroutine(Stoppath(turnTime, deletTime));
    }
    public IEnumerator Stoppath(float turnTime, float deletTime)
    {
        float Time = deletTime - 0.35f;
        yield return new WaitForSeconds(Time);
        //  this.transform.DOLookAt(goToPoint[_index].position, turnTime);
        //  Debug.Log("stop");
        anim.SetBool("IsRun", false);
        _index++;

        _IsRun = true;
        if (_index >= goToPoint.Length)
        {
            _index = 0;
        }
    }
}