using System.Collections;
using UnityEngine;

namespace Shooter.Gameplay
{
    /// <summary>
    /// Гнездо-спавнер «пауков»: через паузу поднимает свою верхнюю часть из земли
    /// (с лёгким дрожанием), затем по одному выпускает несколько врагов.
    /// </summary>
    public class SpiderSpawner_A : MonoBehaviour
    {
        [Header("Узлы")]
        public Transform m_Base;
        public Transform m_SpawnPoint;
        public GameObject m_EnemyPrefab1;

        [Header("Параметры")]
        [Tooltip("Сколько врагов выпустить")]
        public int m_SpawnCount = 3;
        [Tooltip("На какую высоту поднимается основание")]
        public float m_RaiseHeight = 3.8f;

        void Start()
        {
            m_Base.localPosition = Vector3.zero;
            StartCoroutine(Co_StartSpawn());
        }

        IEnumerator Co_StartSpawn()
        {
            yield return new WaitForSeconds(2);

            // Поднимаем основание из земли с лёгким дрожанием.
            float lerp = 0;
            while (lerp <= 1)
            {
                m_Base.localPosition = Vector3.Lerp(Vector3.zero, new Vector3(0, m_RaiseHeight, 0), lerp);
                m_Base.localPosition += new Vector3(0.03f * Mathf.Sin(50 * Time.time), 0, 0);
                lerp += 0.6f * Time.deltaTime;
                yield return null;
            }
            m_Base.localPosition = new Vector3(0, m_RaiseHeight, 0);

            yield return new WaitForSeconds(.5f);

            // Выпускаем врагов по одному.
            for (int i = 0; i < m_SpawnCount; i++)
            {
                GameObject obj = Instantiate(m_EnemyPrefab1);
                obj.transform.position = m_SpawnPoint.position;
                obj.transform.forward = Vector3.back;

                Enemy e = obj.GetComponent<Enemy>();
                e.m_StartWalkDistance = 10;

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