using System; using System.Collections.Generic; namespace Stary.Evo { public class StringEventSystem { public static readonly StringEventSystem Global = new StringEventSystem(); private Dictionary mEvents = new Dictionary(); public IUnRegister Register(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As(); return easyEvent.Register(onEvent); } else { var easyEvent = new EasyEvent(); mEvents.Add(key,easyEvent); return easyEvent.Register(onEvent); } } public IUnRegister Register(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); return easyEvent.Register(onEvent); } else { var easyEvent = new EasyEvent(); mEvents.Add(key,easyEvent); return easyEvent.Register(onEvent); } } public IUnRegister Register(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); return easyEvent.Register(onEvent); } else { var easyEvent = new EasyEvent(); mEvents.Add(key,easyEvent); return easyEvent.Register(onEvent); } } public IUnRegister Register(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); return easyEvent.Register(onEvent); } else { var easyEvent = new EasyEvent(); mEvents.Add(key,easyEvent); return easyEvent.Register(onEvent); } } public IUnRegister Register(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As >(); return easyEvent.Register(onEvent); } else { var easyEvent = new EasyEvent (); mEvents.Add(key,easyEvent); return easyEvent.Register(onEvent); } } public void UnRegister(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As(); easyEvent?.UnRegister(onEvent); } } public void UnRegister(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); easyEvent?.UnRegister(onEvent); } } public void UnRegister(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); easyEvent?.UnRegister(onEvent); } } public void UnRegister(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); easyEvent?.UnRegister(onEvent); } } public void UnRegister(string key, Action onEvent) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); easyEvent?.UnRegister(onEvent); } } public void Send(string key) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As(); easyEvent?.Trigger(); } } public void Send(string key, T data) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); easyEvent?.Trigger(data); } } public void Send(string key, T1 data1, T2 data2) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); easyEvent?.Trigger(data1,data2); } } public void Send(string key, T1 data1, T2 data2, T3 data3) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); easyEvent?.Trigger(data1,data2,data3); } } public void Send(string key, object[] data) { if (mEvents.TryGetValue(key, out var e)) { var easyEvent = e.As>(); easyEvent?.Trigger(data); } } public void Dispose() { mEvents.Clear(); } } }