using DG.Tweening;
using System.Collections;
using UnityEngine;
/// <summary>
/// 云梯车控制
/// </summary>
public class YunTiCheController : ElevatingController
{
    public GameObject part8;
    protected Vector3 part8Rot;
    protected Vector3 part8Pos;

    public override void InitData()
    {
        base.InitData();
        part8 = transform.Find("Scene/Body/Base/Bi1/Bi2/Bi3/Bi4/Bi5/Bi6/Bi7").gameObject;
    }
    protected override void Init()
    {
        //StartCoroutine(OnAnimationPlay());
    }
    /// <summary>
    /// 实例化时主臂展开
    /// </summary>
    /// <returns></returns>
    private IEnumerator OnAnimationPlay()
    {
        yield return new WaitForSeconds(1f);
        part2.transform.DORotate(new Vector3(-30f, 0f, 0f), 1f);
    }
    /// <summary>
    /// 获取初始状态数据
    /// </summary>
    protected override void GetOriginalTransform()
    {
        base.GetOriginalTransform();
       
        part8Pos = part8.transform.localPosition;
        part8Rot = part8.transform.localEulerAngles;
    }
    /// <summary>
    /// 主臂控制
    /// </summary>
    protected override void MainArmControl()
    {
        base.MainArmControl();

        if (ctrlDown && Input.GetKey(PowerManager.Instance.up))
        {
            if (!firstFull)
            {
                float z = part3.transform.localPosition.z;
                if (z > 15)
                {
                    firstFull = true;
                }
                else
                {
                    firstZero = false;
                    
                    part3.transform.localPosition = new Vector3(part3Pos.x, part3Pos.y, z + Time.deltaTime * zSpeed);
                }

            }
            else if (firstFull && !secondFull)
            {
                float z = part4.transform.localPosition.z;
                if (z > 15)
                {
                    secondFull = true;
                }
                else
                {
                    secondZero = false;
                    part4.transform.localPosition = new Vector3(part4Pos.x, part4Pos.y, z + Time.deltaTime * zSpeed);
                }
            }
            else if (firstFull && secondFull && !thirdFull)
            {
                float z = part5.transform.localPosition.z;
                if (z > 15)
                {
                    thirdFull = true;
                }
                else
                {
                    thirdZero = false;
                    part5.transform.localPosition = new Vector3(part5Pos.x, part5Pos.y, z + Time.deltaTime * zSpeed);
                }
            }
            else if (firstFull && secondFull && thirdFull && !fourthFull)
            {
                float z = part6.transform.localPosition.z;
                if (z > 15)
                {
                    fourthFull = true;
                }
                else
                {
                    fourthZero = false;
                    part6.transform.localPosition = new Vector3(part6Pos.x, part6Pos.y, z + Time.deltaTime * zSpeed);
                }
            }
            else if (firstFull && secondFull && thirdFull && fourthFull && !fifthFull)
            {
                float z = part7.transform.localPosition.z;
                if (z > 15)
                {
                    fifthFull = true;
                }
                else
                {
                    fifthZero = false;
                    part7.transform.localPosition = new Vector3(part7Pos.x, part7Pos.y, z + Time.deltaTime * zSpeed);
                }
            }

        }
        else if (ctrlDown && Input.GetKey(PowerManager.Instance.down))
        {
            if (!fifthZero)
            {
                float z = part7.transform.localPosition.z;
                if (z < 0)
                {
                    fifthZero = true;
                }
                else
                {
                    fifthFull = false;
                    part7.transform.localPosition = new Vector3(part7Pos.x, part7Pos.y, z - Time.deltaTime * zSpeed);
                }
            }
            else if (fifthZero && !fourthZero)
            {
                float z = part6.transform.localPosition.z;
                if (z < 0)
                {
                    fourthZero = true;
                }
                else
                {
                    fourthFull = false;
                    part6.transform.localPosition = new Vector3(part6Pos.x, part6Pos.y, z - Time.deltaTime * zSpeed);
                }

            }
            else if (fifthZero && fourthZero && !thirdZero)
            {
                float z = part5.transform.localPosition.z;
                if (z < 0)
                {
                    thirdZero = true;
                }
                else
                {
                    thirdFull = false;
                    part5.transform.localPosition = new Vector3(part5Pos.x, part5Pos.y, z - Time.deltaTime * zSpeed);
                }

            }
            if (fifthZero && fourthZero && thirdZero && !secondZero)
            {
                float z = part4.transform.localPosition.z;
                if (z < 0)
                {
                    secondZero = true;
                }
                else
                {
                    secondFull = false;
                    part4.transform.localPosition = new Vector3(part4Pos.x, part4Pos.y, z - Time.deltaTime * zSpeed);
                }

            }
            else if (fifthZero && fourthZero && thirdZero && secondZero && !firstZero)
            {
                float z = part3.transform.localPosition.z;
                if (z < 0)
                {
                    firstZero = true;
                }
                else
                {
                    firstFull = false;
                    part3.transform.localPosition = new Vector3(part3Pos.x, part3Pos.y, z - Time.deltaTime * zSpeed);
                }
            }
        }
    }
   
    /// <summary>
    /// 平台旋转控制
    /// </summary>
    protected override void PlatformControl()
    {
        //z轴相对x轴弧度
        var radian = Vector3.Dot(part8.transform.forward, Vector3.up);
        //z轴相对x轴角度
        var angle = Mathf.Rad2Deg * radian;
        //平台一直水平
        part8.transform.Rotate(angle, 0, 0);

    }
    /// <summary>
    /// 重置变换
    /// </summary>
    protected override void OnReset()
    {
        base.OnReset();
        part8.transform.localPosition = part8Pos;
        part8.transform.localEulerAngles = part8Rot;
    }
}