using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class MessageCenter : MonoSingleton<MessageCenter>
{
    public delegate void Message();
    Dictionary<string, Message> Events=new Dictionary<string, Message>();

    protected override void Awake()
    {
        base.Awake();
        DontDestroyOnLoad(gameObject);
        Events = new Dictionary<string, Message>();
    }
    public void AddListen(string eventName, IObserver observer) {
        if (!Events.ContainsKey(eventName))
        {
            Message message = new Message(observer.Notify);
            Events.Add(eventName, message);
            return;
        }
        Events[eventName]+=observer.Notify;
    }

    public void RemoveListen(string eventName, IObserver observer)
    {
        if (Events.ContainsKey(eventName))
        {
            Events[eventName] -= observer.Notify;
        } 
    }

    public void SendEvent(string eventName) {
        if (!Events.ContainsKey(eventName)) return;
        Events[eventName]();
    }

}