using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance { get; private set; }
    public List<GameObject> Players = new List<GameObject>();

    public static Action<GameObject[]> OnPlayersReady;

    void Awake()
    {
        if (Instance != null)
        {
            Destroy(Instance);
        }

        Instance = this;
    }

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

    private IEnumerator WaitForPlayers()
    {
        yield return new WaitUntil(()=>Players.Count == 2);
        OnPlayersReady?.Invoke(Players.ToArray());
    }

    //public void playerDied(GameObject who)
    //{
    //    Debug.Log($"{who.name} died");
    //    if (Revives == 0)
    //    {
    //        AudioManager.Instance.StopAllAudio();
    //        AudioManager.PlaySound("Game_Over_Jingle", Vector3.zero);
    //        SceneManager.LoadScene(3);
    //    }
    //    else
    //    {
    //        Revives--;
    //        ReviveText.text = Revives + "x";
    //        Collider2D[] d = Physics2D.OverlapCircleAll(who.transform.position, 3f);

    //        Debug.Log(d);

    //        foreach (Collider2D c in d)
    //        {
    //            if (c.gameObject.CompareTag("Enemy"))
    //            {
    //                c.gameObject.GetComponent<HealthComponent>().TakeDamage(69420);
    //            }
    //        }

    //        var g = who.GetComponent<HealthComponent>();
    //        // heal
    //        g.setMaxHealth(g.getMaxHealth(), true);
    //        g.resetKillFlag();

    //        // REVIVE SOUND HERE
    //        AudioManager.PlaySound("Revive_SFX", who.transform.position);
    //        RumbleManager.StartRumble(0, 0.3f, 0.1f, 3f);
    //        RumbleManager.StartRumble(1, 0.3f, 0.1f, 3f);

    //        GameObject go = Instantiate(ReviveParticleSystem, who.transform.position, Quaternion.identity);
    //        ParticleSystem ps = go.GetComponent<ParticleSystem>();
    //        ps.Play();

    //        go.AddComponent<DestroyAfter>().Init(5f);
    //    }
    //}

}