using UnityEngine;
using System.Collections.Generic;

public class DebugOverlay : MonoBehaviour
{
    private static DebugOverlay _instance;
    public static DebugOverlay Instance
    {
        get
        {
            if (_instance == null)
            {
                var go = new GameObject("DebugOverlay");
                _instance = go.AddComponent<DebugOverlay>();
                DontDestroyOnLoad(go);
            }
            return _instance;
        }
    }

    private class DebugMessage
    {
        public string text;
        public float expireTime;
        public Color color;
    }

    private readonly List<DebugMessage> messages = new List<DebugMessage>();

    public void Log(string message, float duration = 5f, Color? color = null)
    {
        messages.Add(new DebugMessage
        {
            text = message,
            expireTime = Time.time + duration,
            color = color ?? Color.red
        });
    }

    private void OnGUI()
    {
        for (int i = messages.Count - 1; i >= 0; i--)
        {
            if (Time.time > messages[i].expireTime)
            {
                messages.RemoveAt(i);
                continue;
            }
        }

        float y = 10f;
        for (int i = 0; i < messages.Count; i++)
        {
            GUI.contentColor = messages[i].color;
            GUI.Label(new Rect(10, y, 1000, 25), messages[i].text);
            y += 25;
        }
    }
}
