additional package setup
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Boxfriend.Utils
|
||||
{
|
||||
public class EventManager : Singleton<EventManager>
|
||||
{
|
||||
public delegate void Event(object arg, object sender);
|
||||
|
||||
private readonly Dictionary<string, Event> _events = new ();
|
||||
|
||||
public void RegisterEvent(string name)
|
||||
{
|
||||
if (_events.ContainsKey(name))
|
||||
throw new ArgumentException($"Event {name} already registered");
|
||||
|
||||
_events.Add(name, null);
|
||||
}
|
||||
public void RegisterEvent (string name, Event callback)
|
||||
{
|
||||
if (_events.ContainsKey(name))
|
||||
throw new ArgumentException($"Event {name} already registered");
|
||||
|
||||
_events.Add(name, callback);
|
||||
}
|
||||
|
||||
public void UnregisterEvent(string name)
|
||||
{
|
||||
if (!_events.ContainsKey(name))
|
||||
throw new ArgumentException($"Event {name} not registered");
|
||||
|
||||
_events.Remove(name);
|
||||
}
|
||||
|
||||
public void SubscribeEvent (string name, Event callback)
|
||||
{
|
||||
if (!_events.ContainsKey(name))
|
||||
throw new ArgumentException($"Event {name} not registered");
|
||||
|
||||
_events[name] += callback ?? throw new ArgumentNullException($"Event {name} callback is null");
|
||||
}
|
||||
|
||||
public void UnsubscribeEvent (string name, Event callback)
|
||||
{
|
||||
if (!_events.ContainsKey(name))
|
||||
throw new ArgumentException($"Event {name} not registered");
|
||||
|
||||
_events[name] -= callback ?? throw new ArgumentNullException($"Event {name} callback is null");
|
||||
}
|
||||
|
||||
public void InvokeEvent (string name, object arg, object sender)
|
||||
{
|
||||
if (!_events.ContainsKey(name))
|
||||
throw new ArgumentException($"Event {name} not registered");
|
||||
|
||||
_events[name]?.Invoke(arg, sender);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user