You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.0 KiB

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]();
}
}