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

public class Batteryanimation : MonoBehaviour
{
    [Header("电池id")]
    public string ID;
    [Header("所有电池所位移的点位和需要初始化设备点位")]
    public Transform point1, point2, point3, point4, point5, point6, point7, point8;
    [Header("电池需要初始化")]
    public GameObject battery;
    [Header("电池爪子")]
    public Transform paw;
    [Header("判断是否有电池")]
    public Transform Batspoint;
    /// <summary>
    /// 初始化判断
    /// </summary>
    private bool ispcon = false;
    private float speed = 1f;
    void Start()
    {

    }
    void Update()
    {

    }
    /// <summary>
    /// 接收电池数据
    /// </summary>
    /// <param name="qcbd"></param>
    public void Batterydata(Qcbd qcbd)
    {
        if (!ispcon)
        {
            if (qcbd.BatteryStatus1 != "0")
            {
                Initbattery(point6);
            }
            if (qcbd.BatteryStatus2 != "0")
            {
                Initbattery(point7);
            }
            if (qcbd.BatteryStatus3 != "0")
            {
                Initbattery(point8);
            }
            ispcon = true;
        }
        if (qcbd.Take0Battery == "True")
        {
            Takebattery(point1, point5);
        }
        else if (qcbd.Put0Battery == "True")
        {
            Putbattery(point1, point5);
        }
        else if (qcbd.Take1Battery == "True")
        {
            Batterywithdrawal(point2, point6);
        }
        else if (qcbd.Put1Battery == "True")
        {
            Dischargecell(point2, point6);
        }
        else if (qcbd.Take2Battery == "True")
        {
            Batterywithdrawal(point3, point7);
        }
        else if (qcbd.Put2Battery == "True")
        {
            Dischargecell(point3, point7);
        }
        else if (qcbd.Take3Battery == "True")
        {
            Batterywithdrawal(point4, point8);
        }
        else if (qcbd.Put3Battery == "True")
        {
            Dischargecell(point4, point8);
        }
    }
    /// <summary>
    /// 电池初始化
    /// </summary>
    /// <param name="pos"></param>
    public void Initbattery(Transform pos)
    {
        if (pos)
        {
            GameObject battery = Instantiate(this.battery, pos);
            battery.transform.SetParent(pos);
        }
    }
    /// <summary>
    /// 取小车电池
    /// </summary>
    public void Takebattery(Transform pos, Transform pos2)
    {
        if (pos && pos2)
        {
            paw.transform.DOMove(pos.position, (Vector3.Distance(paw.transform.position, pos.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
            {
                paw.transform.DOMove(pos2.position, (Vector3.Distance(paw.transform.position, pos2.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
                {
                    GameObject battery = Instantiate(this.battery, Batspoint);
                    battery.transform.SetParent(Batspoint);
                    paw.transform.DOMove(pos.position, (Vector3.Distance(paw.transform.position, pos.position) / speed)).SetEase(Ease.InOutQuad);
                });
            });
        }
    }
    /// <summary>
    /// 给小车装电池
    /// </summary>
    /// <param name="pos"></param>
    /// <param name="pos2"></param>
    public void Putbattery(Transform pos, Transform pos2)
    {
        if (pos && pos2)
        {
            paw.transform.DOMove(pos.position, (Vector3.Distance(paw.transform.position, pos.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
            {
                paw.transform.DOMove(pos2.position, (Vector3.Distance(paw.transform.position, pos2.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
                {
                    if (Batspoint.childCount > 0)
                    {
                        GameObject battery = Batspoint.transform.GetChild(0).gameObject;
                        if (battery != null)
                        {
                            Destroy(battery);
                        }
                    }
                    paw.transform.DOMove(pos.position, (Vector3.Distance(paw.transform.position, pos.position) / speed)).SetEase(Ease.InOutQuad);
                });
            });
        }
    }
    /// <summary>
    /// 放电池
    /// </summary>
    public void Dischargecell(Transform pos, Transform pos2)
    {
        if (pos && pos2)
        {
            paw.transform.DOMove(pos.position, (Vector3.Distance(paw.transform.position, pos.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
            {
                paw.transform.DOMove(pos2.position, (Vector3.Distance(paw.transform.position, pos2.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
                {
                    if (Batspoint.childCount > 0 && pos2.childCount == 0)
                    {
                        GameObject bat = Batspoint.transform.GetChild(0).gameObject;
                        bat.transform.SetParent(null);
                        bat.transform.position = pos2.position;
                        bat.transform.SetParent(pos2);
                    }
                    paw.transform.DOMove(pos.position, (Vector3.Distance(paw.transform.position, pos.position) / speed)).SetEase(Ease.InOutQuad);
                });
            });
        }
    }
    /// <summary>
    /// 取电池
    /// </summary>
    /// <param name="pos"></param>
    /// <param name="pos2"></param>
    public void Batterywithdrawal(Transform pos, Transform pos2)
    {
        if (pos && pos2)
        {
            paw.transform.DOMove(pos.position, (Vector3.Distance(paw.transform.position, pos.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
            {
                paw.transform.DOMove(pos2.position, (Vector3.Distance(paw.transform.position, pos2.position) / speed)).SetEase(Ease.InOutQuad).OnComplete(() =>
                {
                    if (pos2.childCount > 0 && Batspoint.childCount == 0)
                    {
                        GameObject bat = pos2.transform.GetChild(0).gameObject;
                        if (bat != null)
                        {
                            bat.transform.SetParent(null);
                            bat.transform.position = Batspoint.position;
                            bat.transform.SetParent(Batspoint);
                        }
                    }
                    paw.transform.DOMove(pos.position, (Vector3.Distance(paw.transform.position, pos.position) / speed)).SetEase(Ease.InOutQuad);
                });
            });
        }
    }
}