using System;
using System.Collections.Generic;
using UnityEngine;

public static class EventCenter
{
    // 使用 enum 作为事件名的 key
    private static Dictionary<EventType, Action<object>> eventDict = new Dictionary<EventType, Action<object>>();

    /// 添加监听器
    public static void AddListener(EventType eventType, Action<object> callback)
    {
        if (eventDict.ContainsKey(eventType))
            eventDict[eventType] += callback;
        else
            eventDict[eventType] = callback;
    }

    /// 移除监听器
    public static void RemoveListener(EventType eventType, Action<object> callback)
    {
        if (eventDict.ContainsKey(eventType))
        {
            eventDict[eventType] -= callback;
            if (eventDict[eventType] == null)
                eventDict.Remove(eventType);
        }
    }

    /// 触发事件
    public static void Trigger(EventType eventType, object param = null)
    {
        if (eventDict.TryGetValue(eventType, out var callback))
        {
            callback?.Invoke(param);
        }
    }

    /// 清空所有监听
    public static void Clear()
    {
        eventDict.Clear();
    }
}
