框架上传
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Stary.Evo
|
||||
{
|
||||
public interface IEasyEvent
|
||||
{
|
||||
}
|
||||
|
||||
public class EasyEvent : IEasyEvent
|
||||
{
|
||||
private Action mOnEvent = () => { };
|
||||
|
||||
public IUnRegister Register(Action onEvent)
|
||||
{
|
||||
mOnEvent += onEvent;
|
||||
return new CustomUnRegister(() => { UnRegister(onEvent); });
|
||||
}
|
||||
|
||||
public void UnRegister(Action onEvent)
|
||||
{
|
||||
mOnEvent -= onEvent;
|
||||
}
|
||||
|
||||
public void Trigger()
|
||||
{
|
||||
mOnEvent?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
public class EasyEvent<T> : IEasyEvent
|
||||
{
|
||||
private Action<T> mOnEvent = e => { };
|
||||
|
||||
public IUnRegister Register(Action<T> onEvent)
|
||||
{
|
||||
mOnEvent += onEvent;
|
||||
return new CustomUnRegister(() => { UnRegister(onEvent); });
|
||||
}
|
||||
|
||||
public void UnRegister(Action<T> onEvent)
|
||||
{
|
||||
mOnEvent -= onEvent;
|
||||
}
|
||||
|
||||
public void Trigger(T t)
|
||||
{
|
||||
mOnEvent?.Invoke(t);
|
||||
}
|
||||
}
|
||||
|
||||
public class EasyEvent<T, K> : IEasyEvent
|
||||
{
|
||||
private Action<T, K> mOnEvent = (t, k) => { };
|
||||
|
||||
public IUnRegister Register(Action<T, K> onEvent)
|
||||
{
|
||||
mOnEvent += onEvent;
|
||||
return new CustomUnRegister(() => { UnRegister(onEvent); });
|
||||
}
|
||||
|
||||
public void UnRegister(Action<T, K> onEvent)
|
||||
{
|
||||
mOnEvent -= onEvent;
|
||||
}
|
||||
|
||||
public void Trigger(T t, K k)
|
||||
{
|
||||
mOnEvent?.Invoke(t, k);
|
||||
}
|
||||
}
|
||||
|
||||
public class EasyEvent<T, K, S> : IEasyEvent
|
||||
{
|
||||
private Action<T, K, S> mOnEvent = (t, k, s) => { };
|
||||
|
||||
public IUnRegister Register(Action<T, K, S> onEvent)
|
||||
{
|
||||
mOnEvent += onEvent;
|
||||
return new CustomUnRegister(() => { UnRegister(onEvent); });
|
||||
}
|
||||
|
||||
public void UnRegister(Action<T, K, S> onEvent)
|
||||
{
|
||||
mOnEvent -= onEvent;
|
||||
}
|
||||
|
||||
public void Trigger(T t, K k, S s)
|
||||
{
|
||||
mOnEvent?.Invoke(t, k, s);
|
||||
}
|
||||
}
|
||||
|
||||
public class EasyEventSystems
|
||||
{
|
||||
private static EasyEventSystems _mGlobalEventSystems = new EasyEventSystems();
|
||||
|
||||
public static T Get<T>() where T : IEasyEvent
|
||||
{
|
||||
return _mGlobalEventSystems.GetEvent<T>();
|
||||
}
|
||||
|
||||
|
||||
public static void Register<T>() where T : IEasyEvent, new()
|
||||
{
|
||||
_mGlobalEventSystems.AddEvent<T>();
|
||||
}
|
||||
|
||||
private Dictionary<Type, IEasyEvent> mTypeEvents = new Dictionary<Type, IEasyEvent>();
|
||||
|
||||
public void AddEvent<T>() where T : IEasyEvent, new()
|
||||
{
|
||||
mTypeEvents.Add(typeof(T), new T());
|
||||
}
|
||||
|
||||
public T GetEvent<T>() where T : IEasyEvent
|
||||
{
|
||||
IEasyEvent e;
|
||||
|
||||
if (mTypeEvents.TryGetValue(typeof(T), out e))
|
||||
{
|
||||
return (T) e;
|
||||
}
|
||||
|
||||
return default;
|
||||
}
|
||||
|
||||
public T GetOrAddEvent<T>() where T : IEasyEvent, new()
|
||||
{
|
||||
var eType = typeof(T);
|
||||
if (mTypeEvents.TryGetValue(eType, out var e))
|
||||
{
|
||||
return (T) e;
|
||||
}
|
||||
|
||||
var t = new T();
|
||||
mTypeEvents.Add(eType, t);
|
||||
return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e33d19dd11204fbe87eb16c6bc9b2621
|
||||
timeCreated: 1658655004
|
||||
@@ -0,0 +1,199 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
namespace Stary.Evo
|
||||
{
|
||||
|
||||
|
||||
public class EnumEventSystem
|
||||
{
|
||||
public static readonly EnumEventSystem Global = new EnumEventSystem();
|
||||
|
||||
private readonly Dictionary<int, IEasyEvent> mEvents = new Dictionary<int, IEasyEvent>(50);
|
||||
|
||||
public EnumEventSystem(){}
|
||||
|
||||
#region 功能函数
|
||||
|
||||
public IUnRegister Register<T>(T key, Action onEvent)where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent>();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent();
|
||||
mEvents.Add(kv,easyEvent);
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
}
|
||||
public IUnRegister Register<T,T1>(T key, Action<T1> onEvent)where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T1>>();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent<T1>();
|
||||
mEvents.Add(kv,easyEvent);
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
}
|
||||
public IUnRegister Register<T,T1,T2>(T key, Action<T1,T2> onEvent)where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T1,T2>>();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent<T1,T2>();
|
||||
mEvents.Add(kv,easyEvent);
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
}
|
||||
public IUnRegister Register<T,T1,T2,T3>(T key, Action<T1,T2,T3> onEvent) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T1,T2,T3>>();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent<T1,T2,T3>();
|
||||
mEvents.Add(kv, easyEvent);
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
}
|
||||
public IUnRegister Register<T>(T key, Action<object[]> onEvent) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<object[]>>();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent<object[]>();
|
||||
mEvents.Add(kv, easyEvent);
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
}
|
||||
public void UnRegister<T>(T key, Action onEvent) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent>()?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
public void UnRegister<T,T1>(T key, Action<T1> onEvent) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent<T1>>()?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
public void UnRegister<T,T1,T2>(T key, Action<T1,T2> onEvent) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent<T1,T2>>()?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
public void UnRegister<T,T1,T2,T3>(T key, Action<T1,T2,T3> onEvent) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent<T1,T2,T3>>()?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
public void UnRegister<T>(T key, Action<object[]> onEvent) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent<object[]>>()?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void UnRegisterAll()
|
||||
{
|
||||
mEvents.Clear();
|
||||
}
|
||||
public void Send<T>(T key) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent>().Trigger();
|
||||
}
|
||||
}
|
||||
public void Send<T,T1>(T key, T1 t1) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent<T1>>().Trigger(t1);
|
||||
}
|
||||
}
|
||||
public void Send<T,T1,T2>(T key, T1 t1,T2 t2) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent<T1,T2>>().Trigger(t1,t2);
|
||||
}
|
||||
}
|
||||
public void Send<T,T1,T2,T3>(T key, T1 t1,T2 t2 ,T3 t3) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent<T1,T2,T3>>().Trigger(t1,t2,t3);
|
||||
}
|
||||
}
|
||||
public void Send<T>(T key, params object[] args) where T : IConvertible
|
||||
{
|
||||
var kv = key.ToInt32(null);
|
||||
|
||||
if (mEvents.TryGetValue(kv, out var e))
|
||||
{
|
||||
e.As<EasyEvent<int,object[]>>().Trigger(kv,args);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
mEvents.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0f9c387bd15b741b2a7451be23c992ae
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Stary.Evo
|
||||
{
|
||||
|
||||
public class TypeEventSystem
|
||||
{
|
||||
private readonly EasyEventSystems _mEventSystems = new EasyEventSystems();
|
||||
|
||||
|
||||
public static readonly TypeEventSystem Global = new TypeEventSystem();
|
||||
|
||||
public void Send<T>() where T : new()
|
||||
{
|
||||
_mEventSystems.GetEvent<EasyEvent<T>>()?.Trigger(new T());
|
||||
}
|
||||
|
||||
public void Send<T>(T e)
|
||||
{
|
||||
_mEventSystems.GetEvent<EasyEvent<T>>()?.Trigger(e);
|
||||
}
|
||||
|
||||
public IUnRegister Register<T>(Action<T> onEvent)
|
||||
{
|
||||
var e = _mEventSystems.GetOrAddEvent<EasyEvent<T>>();
|
||||
return e.Register(onEvent);
|
||||
}
|
||||
|
||||
public void UnRegister<T>(Action<T> onEvent)
|
||||
{
|
||||
var e = _mEventSystems.GetEvent<EasyEvent<T>>();
|
||||
if (e != null)
|
||||
{
|
||||
e.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public interface IOnEvent<T>
|
||||
{
|
||||
void OnEvent(T e);
|
||||
}
|
||||
|
||||
public static class OnGlobalEventExtension
|
||||
{
|
||||
public static IUnRegister RegisterEvent<T>(this IOnEvent<T> self) where T : struct
|
||||
{
|
||||
return TypeEventSystem.Global.Register<T>(self.OnEvent);
|
||||
}
|
||||
|
||||
public static void UnRegisterEvent<T>(this IOnEvent<T> self) where T : struct
|
||||
{
|
||||
TypeEventSystem.Global.UnRegister<T>(self.OnEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 228453eae0804759b0fd585f7169789c
|
||||
timeCreated: 1625121334
|
||||
@@ -0,0 +1,173 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Stary.Evo
|
||||
{
|
||||
[Obsolete("推荐使用 EnumEventSystem",false)]
|
||||
public class StringEventSystem
|
||||
{
|
||||
public static readonly StringEventSystem Global = new StringEventSystem();
|
||||
|
||||
private Dictionary<string, IEasyEvent> mEvents = new Dictionary<string, IEasyEvent>();
|
||||
|
||||
public IUnRegister Register(string key, Action onEvent)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent>();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent();
|
||||
mEvents.Add(key,easyEvent);
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
}
|
||||
public IUnRegister Register<T>(string key, Action<T> onEvent)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T>>();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent<T>();
|
||||
mEvents.Add(key,easyEvent);
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
}
|
||||
public IUnRegister Register<T1,T2>(string key, Action<T1,T2> onEvent)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T1,T2>>();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent<T1,T2>();
|
||||
mEvents.Add(key,easyEvent);
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
}
|
||||
public IUnRegister Register<T1,T2,T3>(string key, Action<T1,T2,T3> onEvent)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T1,T2,T3>>();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent<T1,T2,T3>();
|
||||
mEvents.Add(key,easyEvent);
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
}
|
||||
public IUnRegister Register(string key, Action<object[]> onEvent)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<object[]> >();
|
||||
return easyEvent.Register(onEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var easyEvent = new EasyEvent<object[]> ();
|
||||
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>();
|
||||
easyEvent?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
public void UnRegister<T>(string key, Action<T> onEvent)
|
||||
{
|
||||
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T>>();
|
||||
easyEvent?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
public void UnRegister<T1,T2>(string key, Action<T1,T2> onEvent)
|
||||
{
|
||||
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T1,T2>>();
|
||||
easyEvent?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
public void UnRegister<T1,T2,T3>(string key, Action<T1,T2,T3> onEvent)
|
||||
{
|
||||
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T1,T2,T3>>();
|
||||
easyEvent?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
public void UnRegister(string key, Action<object[]> onEvent)
|
||||
{
|
||||
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<object[]>>();
|
||||
easyEvent?.UnRegister(onEvent);
|
||||
}
|
||||
}
|
||||
public void Send(string key)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent>();
|
||||
easyEvent?.Trigger();
|
||||
}
|
||||
}
|
||||
public void Send<T>(string key, T data)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T>>();
|
||||
easyEvent?.Trigger(data);
|
||||
}
|
||||
}
|
||||
public void Send<T1,T2>(string key, T1 data1, T2 data2)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T1,T2>>();
|
||||
easyEvent?.Trigger(data1,data2);
|
||||
}
|
||||
}
|
||||
public void Send<T1,T2,T3>(string key, T1 data1, T2 data2, T3 data3)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<T1,T2,T3>>();
|
||||
easyEvent?.Trigger(data1,data2,data3);
|
||||
}
|
||||
}
|
||||
public void Send(string key, object[] data)
|
||||
{
|
||||
if (mEvents.TryGetValue(key, out var e))
|
||||
{
|
||||
var easyEvent = e.As<EasyEvent<object[]>>();
|
||||
easyEvent?.Trigger(data);
|
||||
}
|
||||
}
|
||||
public void Dispose()
|
||||
{
|
||||
mEvents.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8502c9eab24d488c950d3eacbfc584b1
|
||||
timeCreated: 1649307359
|
||||
Reference in New Issue
Block a user