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