using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class EventDispatch
{
[SLua.DoNotToLua]
public delegate void OnNotificationDelegate(Notification note);
private Dictionary<string, OnNotificationDelegate> _eventListeners;
[SLua.DoNotToLua]
public virtual void Clear()
{
}
[SLua.DoNotToLua]
public EventDispatch()
{
_eventListeners = new Dictionary<string, OnNotificationDelegate>();
}
public void AddEventListener(string type, OnNotificationDelegate listener)
{
if (!_eventListeners.ContainsKey(type))
{
OnNotificationDelegate delegat = null;
_eventListeners[type] = delegat;
}
_eventListeners[type] += listener;
}
public void AddEventListenerAndRemove(string type, OnNotificationDelegate listener)
{
RemoveEventListener(type);
if (!_eventListeners.ContainsKey(type))
{
OnNotificationDelegate delegat = null;
_eventListeners[type] = delegat;
}
_eventListeners[type] += listener;
}
public void RemoveEventListener(string type,OnNotificationDelegate listener)
{
if (!_eventListeners.ContainsKey(type))
{
return;
}
_eventListeners[type] -= listener;
if (_eventListeners[type] == null)
{
_eventListeners.Remove(type);
}
}
public void RemoveEventListener(string type)
{
if (_eventListeners.ContainsKey(type))
{
_eventListeners.Remove(type);
}
}
public void DispatchEvent(string type, Notification note)
{
if (_eventListeners.ContainsKey(type))
{
_eventListeners[type](note);
}
}
public void DispatchEvent(string type)
{
DispatchEvent(type, null);
}
[SLua.DoNotToLua]
public bool HasEventListener(string type)
{
return _eventListeners.ContainsKey(type);
}
}