using UnityEngine;
using UnityEngine.Events;

namespace Shooter.Gameplay
{
    /// <summary>
    /// Группа врагов: следит, когда все убиты, и вызывает событие <see cref="OnKilledAll"/>
    /// (например, чтобы открыть дверь или запустить следующую волну). Каждый убитый враг
    /// уменьшает счётчик через <see cref="DecreaceEnemyCount"/>.
    /// </summary>
    public class EnemyGroup : MonoBehaviour
    {
        public EnemySpawnPoint[] m_EnemyPoints;
        public UnityEvent OnKilledAll;

        [HideInInspector] public GameObject[] m_Enemies;
        [HideInInspector] public int m_EnemyCount = 0;
        [HideInInspector] public bool KilledAll = false;

        void Start()
        {
            KilledAll = false;
            m_EnemyCount = m_EnemyPoints.Length;
        }

        void Update()
        {
            if (!KilledAll && m_EnemyCount <= 0)
            {
                KilledAll = true;
                OnKilledAll.Invoke();
            }
        }

        public void Spawn()
        {
            KilledAll = false;
            m_EnemyCount = m_EnemyPoints.Length;
        }

        public void DecreaceEnemyCount()
        {
            m_EnemyCount--;
        }
    }
}
