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.
 
 
 
 
 
 

71 lines
1.8 KiB

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NotificationServer : MonoBehaviour
{
static Dictionary<string, List<Action>> notifications = new Dictionary<string, List<Action>>();
static Dictionary<string, List<Action<object>>> notificationsWithArgument = new Dictionary<string, List<Action<object>>>();
static public void register(string key, Action action)
{
if (!notifications.ContainsKey(key))
notifications[key] = new List<Action>();
if (!notifications[key].Contains(action))
notifications[key].Add(action);
}
static public void unregister(string key, Action action)
{
if (!notifications.ContainsKey(key))
return;
if (!notifications[key].Contains(action))
return;
notifications[key].Remove(action);
}
static public void notify(string key)
{
if (!notifications.ContainsKey(key))
return;
for (int i=0; i<notifications[key].Count; i++)
notifications[key][i]();
}
static public void register(string key, Action<object> action)
{
if (!notificationsWithArgument.ContainsKey(key))
notificationsWithArgument[key] = new List<Action<object>>();
if (!notificationsWithArgument[key].Contains(action))
notificationsWithArgument[key].Add(action);
}
static public void unregister(string key, Action<object> action)
{
if (!notificationsWithArgument.ContainsKey(key))
return;
if (!notificationsWithArgument[key].Contains(action))
return;
notificationsWithArgument[key].Remove(action);
}
static public void notify(string key, object argument)
{
if (!notificationsWithArgument.ContainsKey(key))
return;
for (int i=0; i<notificationsWithArgument[key].Count; i++)
notificationsWithArgument[key][i](argument);
}
public void doNotify(string key)
{
notify(key);
}
public void doNotify(string key, string argument)
{
notify(key, argument);
}
}