using Thousandto.Code.Center;
using Thousandto.Core.Asset;
using System.Collections.Generic;
using UnityEngine;

namespace Thousandto.Code.Logic
{
    //循环移动的场景,场景会一直循环移动
    public class LoopMoveSceneScript : MonoBehaviour
    {
        #region//常量
        const float MOVE_START_SPEED = 0f;
        const float MOVE_ADD_SPEED = 5f;
        const float MOVE_MAX_SPEED = 10f;
        #endregion

        #region//私有变量
        private Transform _downTrans = null;
        private Transform _upTrans = null;

        private Vector3 _downOriPos = Vector3.zero;
        private Vector3 _upOriPos = Vector3.zero;

        private float _curSpeed = 0f;
        private float _waitTime = 2f;
        #endregion

        #region//继承基类
        private void Awake()
        {
            _downTrans = transform.Find("[far]/map016/MoveTa0");
            _upTrans = transform.Find("[far]/map016/MoveTa1");

            if(_downTrans != null && _upTrans != null)
            {
                _downOriPos = _downTrans.position;
                _upOriPos = _upTrans.position;
            }
        }

        private void OnEnable()
        {
            if(_downTrans != null && _upTrans != null)
            {
                _curSpeed = MOVE_START_SPEED;
                _downTrans.position = _downOriPos;
                _upTrans.position = _upOriPos;
                _waitTime = 2f;
            }
        }

        private void Update()
        {
            if(_downTrans == null || _upTrans == null)
            {
                return;
            }
            if(_waitTime > 0f)
                {
                _waitTime -= Time.deltaTime;
                return;
            }
            if(_curSpeed < MOVE_MAX_SPEED)
            {
                _curSpeed += MOVE_ADD_SPEED * Time.deltaTime;
                if(_curSpeed > MOVE_MAX_SPEED)
                {
                    _curSpeed = MOVE_MAX_SPEED;
                }
            }

            _downTrans.position += Vector3.down * _curSpeed * Time.deltaTime;
            _upTrans.position += Vector3.down * _curSpeed * Time.deltaTime;

            if(_upTrans.position.y <= _downOriPos.y)
            {
                //上面的移动到下面的位置,交换位置
                var tmp = _upTrans;
                _upTrans = _downTrans;
                _downTrans = tmp;
                _upTrans.position = _upOriPos;
            }
        }
        #endregion
    }
}