using System.Collections;
using UnityEngine;

namespace Shooter.Gameplay
{
    /// <summary>
    /// Пушка-колонна: периодически выдвигает ствол вверх, даёт залп по кругу из восьми
    /// пуль, убирает ствол и повторяет.
    /// </summary>
    public class Enm_PillarCanon_1 : Enemy
    {
        [Space]
        public GameObject m_BulletPrefab1;
        public GameObject m_FireParticlePrefab1;

        public float m_InitDelay = 0;
        public float m_FireDelay = 1;

        [Tooltip("Ствол, который выдвигается перед залпом")]
        public Transform m_Base;

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

        IEnumerator Co_AttackLoop()
        {
            yield return new WaitForSeconds(1);

            while (true)
            {
                // Выдвигаем ствол вверх.
                for (int i = 0; i <= 10; i++)
                {
                    m_Base.localPosition = new Vector3(0, 0.18f * i, 0);
                    yield return null;
                }

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

                // Убираем ствол обратно.
                for (int i = 0; i <= 10; i++)
                {
                    m_Base.localPosition = new Vector3(0, 1.8f - 0.18f * i, 0);
                    yield return null;
                }

                yield return new WaitForSeconds(2);
            }
        }

        public void ShootBullet()
        {
            GameObject obj = Instantiate(m_BulletPrefab1);
            obj.transform.position = m_FirePoint.position;
            obj.transform.forward = transform.forward;
            obj.GetComponent<ProjectileCollision>().m_Creator = gameObject;
            Destroy(obj, 10);

            obj = Instantiate(m_FireParticlePrefab1);
            obj.transform.position = m_FirePoint.position;
            Destroy(obj, 3);
        }

        public void ShootRingBullet()
        {
            // Восемь пуль по кругу (через 45°).
            for (int i = 0; i < 8; i++)
            {
                GameObject obj = Instantiate(m_BulletPrefab1);
                obj.transform.position = m_FirePoint.position;
                obj.transform.forward = Quaternion.Euler(0, i * 45, 0) * Vector3.forward;
                obj.GetComponent<ProjectileCollision>().m_Creator = gameObject;
                Destroy(obj, 10);
            }
        }
    }
}
