using System.Collections;
using UnityEngine;

namespace Shooter.Gameplay
{
    /// <summary>
    /// Вращающаяся мина: раскручивается по спирали вокруг стартовой точки (радиус
    /// «дышит» по синусу за пол-оборота), возвращается в центр и повторяет.
    /// <see cref="m_Direction"/> задаёт сторону вращения.
    /// </summary>
    public class Enemy_SpinMine : Enemy
    {
        [Tooltip("Направление вращения (1 или -1)")]
        public int m_Direction = 1;
        [Tooltip("Начальный угол спирали")]
        public float m_StartArc = 0;
        [Tooltip("Скорость вращения, град/сек")]
        public float m_SpinSpeed = 400f;
        [Tooltip("Максимальный радиус спирали")]
        public float m_MaxRadius = 3f;

        void Start()
        {
            InitPosition = transform.position;
            StartCoroutine(Co_AttackLoop());
        }

        void Update()
        {
            HandleDeath();
        }

        IEnumerator Co_AttackLoop()
        {
            while (true)
            {
                float radiusArc = 0;
                float arc = m_StartArc;

                // Один проход спирали: радиус растёт и спадает по синусу за пол-оборота (0..π).
                while (true)
                {
                    arc += m_SpinSpeed * Time.deltaTime;
                    radiusArc += Time.deltaTime;
                    transform.position = InitPosition + Helper.RotatedLenght(m_Direction * arc, m_MaxRadius * Mathf.Sin(radiusArc));
                    transform.rotation = Quaternion.Euler(0, -5 * m_Direction * arc, 0);
                    if (radiusArc >= Mathf.PI)
                        break;
                    yield return null;
                }
                transform.position = InitPosition;

                yield return new WaitForSeconds(1);
            }
        }
    }
}
