using System;
using System.Collections.Generic;
public class Messenger {
public delegate void MessengerCallback(object value);
public Dictionary<MsgType, MessengerCallback> eventTable = new Dictionary<MsgType, MessengerCallback>();
private void OnListenerRemoved(MsgType eventType) {
if (eventTable[eventType] == null) {
eventTable.Remove(eventType);
}
}
private void OnListenerAdding(MsgType eventType) {
if (!eventTable.ContainsKey(eventType)) {
eventTable.Add(eventType, null);
}
}
public void AddListener(MsgType eventType, MessengerCallback handler) {
OnListenerAdding(eventType);
eventTable[eventType] = eventTable[eventType] + handler;
}
public void RemoveListener(MsgType eventType, MessengerCallback handler) {
if (eventTable.ContainsKey(eventType)) {
eventTable[eventType] = eventTable[eventType] - handler;
OnListenerRemoved(eventType);
}
}
public void Broadcast(MsgType eventType, object value = null) {
MessengerCallback callback;
if (eventTable.TryGetValue(eventType, out callback)) {
if (callback != null) {
callback(value);
}
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum MsgType
{
None,
}