游戏事件

This commit is contained in:
ALEXTANG
2023-03-31 23:04:54 +08:00
parent 90a2398105
commit 090cf7433a
5 changed files with 243 additions and 129 deletions

View File

@@ -3,6 +3,9 @@ using System.Collections.Generic;
namespace TEngine namespace TEngine
{ {
/// <summary>
/// 游戏事件数据类。
/// </summary>
class EventDelegateData class EventDelegateData
{ {
private int m_eventType = 0; private int m_eventType = 0;
@@ -17,6 +20,11 @@ namespace TEngine
m_eventType = evnetType; m_eventType = evnetType;
} }
/// <summary>
/// 添加注册委托。
/// </summary>
/// <param name="handler"></param>
/// <returns></returns>
public bool AddHandler(Delegate handler) public bool AddHandler(Delegate handler)
{ {
if (m_listExist.Contains(handler)) if (m_listExist.Contains(handler))
@@ -38,22 +46,29 @@ namespace TEngine
return true; return true;
} }
public void RmvHandler(Delegate hander) /// <summary>
/// 移除反注册委托。
/// </summary>
/// <param name="handler"></param>
public void RmvHandler(Delegate handler)
{ {
if (m_isExcute) if (m_isExcute)
{ {
m_dirty = true; m_dirty = true;
m_deleteList.Add(hander); m_deleteList.Add(handler);
} }
else else
{ {
if (!m_listExist.Remove(hander)) if (!m_listExist.Remove(handler))
{ {
Log.Fatal("Delete handle failed, not exist, EventId: {0}", StringId.HashToString(m_eventType)); Log.Fatal("Delete handle failed, not exist, EventId: {0}", StringId.HashToString(m_eventType));
} }
} }
} }
/// <summary>
/// 检测脏数据修正。
/// </summary>
private void CheckModify() private void CheckModify()
{ {
m_isExcute = false; m_isExcute = false;
@@ -75,14 +90,16 @@ namespace TEngine
} }
} }
/// <summary>
/// 回调调用。
/// </summary>
public void Callback() public void Callback()
{ {
m_isExcute = true; m_isExcute = true;
for (var i = 0; i < m_listExist.Count; i++) for (var i = 0; i < m_listExist.Count; i++)
{ {
var d = m_listExist[i]; var d = m_listExist[i];
Action action = d as Action; if (d is Action action)
if (action != null)
{ {
action(); action();
} }
@@ -91,14 +108,18 @@ namespace TEngine
CheckModify(); CheckModify();
} }
public void Callback<T>(T arg1) /// <summary>
/// 回调调用。
/// </summary>
/// <param name="arg1"></param>
/// <typeparam name="TArg1"></typeparam>
public void Callback<TArg1>(TArg1 arg1)
{ {
m_isExcute = true; m_isExcute = true;
for (var i = 0; i < m_listExist.Count; i++) for (var i = 0; i < m_listExist.Count; i++)
{ {
var d = m_listExist[i]; var d = m_listExist[i];
var action = d as Action<T>; if (d is Action<TArg1> action)
if (action != null)
{ {
action(arg1); action(arg1);
} }
@@ -107,14 +128,20 @@ namespace TEngine
CheckModify(); CheckModify();
} }
public void Callback<T, U>(T arg1, U arg2) /// <summary>
/// 回调调用。
/// </summary>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <typeparam name="TArg1"></typeparam>
/// <typeparam name="TArg2"></typeparam>
public void Callback<TArg1, TArg2>(TArg1 arg1, TArg2 arg2)
{ {
m_isExcute = true; m_isExcute = true;
for (var i = 0; i < m_listExist.Count; i++) for (var i = 0; i < m_listExist.Count; i++)
{ {
var d = m_listExist[i]; var d = m_listExist[i];
var action = d as Action<T, U>; if (d is Action<TArg1, TArg2> action)
if (action != null)
{ {
action(arg1, arg2); action(arg1, arg2);
} }
@@ -123,14 +150,22 @@ namespace TEngine
CheckModify(); CheckModify();
} }
public void Callback<T, U, V>(T arg1, U arg2, V arg3) /// <summary>
/// 回调调用。
/// </summary>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <param name="arg3"></param>
/// <typeparam name="TArg1"></typeparam>
/// <typeparam name="TArg2"></typeparam>
/// <typeparam name="TArg3"></typeparam>
public void Callback<TArg1, TArg2, TArg3>(TArg1 arg1, TArg2 arg2, TArg3 arg3)
{ {
m_isExcute = true; m_isExcute = true;
for (var i = 0; i < m_listExist.Count; i++) for (var i = 0; i < m_listExist.Count; i++)
{ {
var d = m_listExist[i]; var d = m_listExist[i];
var action = d as Action<T, U, V>; if (d is Action<TArg1, TArg2, TArg3> action)
if (action != null)
{ {
action(arg1, arg2, arg3); action(arg1, arg2, arg3);
} }
@@ -139,14 +174,24 @@ namespace TEngine
CheckModify(); CheckModify();
} }
public void Callback<T, U, V, W>(T arg1, U arg2, V arg3, W arg4) /// <summary>
/// 回调调用。
/// </summary>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <param name="arg3"></param>
/// <param name="arg4"></param>
/// <typeparam name="TArg1"></typeparam>
/// <typeparam name="TArg2"></typeparam>
/// <typeparam name="TArg3"></typeparam>
/// <typeparam name="TArg4"></typeparam>
public void Callback<TArg1, TArg2, TArg3, TArg4>(TArg1 arg1, TArg2 arg2, TArg3 arg3, TArg4 arg4)
{ {
m_isExcute = true; m_isExcute = true;
for (var i = 0; i < m_listExist.Count; i++) for (var i = 0; i < m_listExist.Count; i++)
{ {
var d = m_listExist[i]; var d = m_listExist[i];
var action = d as Action<T, U, V, W>; if (d is Action<TArg1, TArg2, TArg3, TArg4> action)
if (action != null)
{ {
action(arg1, arg2, arg3, arg4); action(arg1, arg2, arg3, arg4);
} }
@@ -155,14 +200,26 @@ namespace TEngine
CheckModify(); CheckModify();
} }
public void Callback<T, U, V, W, X>(T arg1, U arg2, V arg3, W arg4, X arg5) /// <summary>
/// 回调调用。
/// </summary>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <param name="arg3"></param>
/// <param name="arg4"></param>
/// <param name="arg5"></param>
/// <typeparam name="TArg1"></typeparam>
/// <typeparam name="TArg2"></typeparam>
/// <typeparam name="TArg3"></typeparam>
/// <typeparam name="TArg4"></typeparam>
/// <typeparam name="TArg5"></typeparam>
public void Callback<TArg1, TArg2, TArg3, TArg4, TArg5>(TArg1 arg1, TArg2 arg2, TArg3 arg3, TArg4 arg4, TArg5 arg5)
{ {
m_isExcute = true; m_isExcute = true;
for (var i = 0; i < m_listExist.Count; i++) for (var i = 0; i < m_listExist.Count; i++)
{ {
var d = m_listExist[i]; var d = m_listExist[i];
var action = d as Action<T, U, V, W, X>; if (d is Action<TArg1, TArg2, TArg3, TArg4, TArg5> action)
if (action != null)
{ {
action(arg1, arg2, arg3, arg4, arg5); action(arg1, arg2, arg3, arg4, arg5);
} }
@@ -173,18 +230,22 @@ namespace TEngine
} }
/// <summary> /// <summary>
/// 封装消息的底层分发和注册 /// 封装消息的底层分发和注册
/// </summary> /// </summary>
class EventDispatcher class EventDispatcher
{ {
static Dictionary<int, EventDelegateData> m_eventTable = new Dictionary<int, EventDelegateData>(); static Dictionary<int, EventDelegateData> m_eventTable = new Dictionary<int, EventDelegateData>();
#region #region
/// <summary>
/// 增加事件监听。
/// </summary>
/// <param name="eventType"></param>
/// <param name="handler"></param>
/// <returns></returns>
public bool AddEventListener(int eventType, Delegate handler) public bool AddEventListener(int eventType, Delegate handler)
{ {
EventDelegateData data; if (!m_eventTable.TryGetValue(eventType, out var data))
if (!m_eventTable.TryGetValue(eventType, out data))
{ {
data = new EventDelegateData(eventType); data = new EventDelegateData(eventType);
m_eventTable.Add(eventType, data); m_eventTable.Add(eventType, data);
@@ -193,68 +254,118 @@ namespace TEngine
return data.AddHandler(handler); return data.AddHandler(handler);
} }
/// <summary>
/// 移除事件监听。
/// </summary>
/// <param name="eventType"></param>
/// <param name="handler"></param>
public void RemoveEventListener(int eventType, Delegate handler) public void RemoveEventListener(int eventType, Delegate handler)
{ {
EventDelegateData data; if (m_eventTable.TryGetValue(eventType, out var data))
if (m_eventTable.TryGetValue(eventType, out data))
{ {
data.RmvHandler(handler); data.RmvHandler(handler);
} }
} }
#endregion #endregion
#region #region
/// <summary>
/// 发送事件。
/// </summary>
/// <param name="eventType">事件类型。</param>
public void Send(int eventType) public void Send(int eventType)
{ {
EventDelegateData d; if (m_eventTable.TryGetValue(eventType, out var d))
if (m_eventTable.TryGetValue(eventType, out d))
{ {
d.Callback(); d.Callback();
} }
} }
public void Send<T>(int eventType, T arg1) /// <summary>
/// 发送事件。
/// </summary>
/// <param name="eventType"></param>
/// <param name="arg1"></param>
/// <typeparam name="TArg1"></typeparam>
public void Send<TArg1>(int eventType, TArg1 arg1)
{ {
EventDelegateData d; if (m_eventTable.TryGetValue(eventType, out var d))
if (m_eventTable.TryGetValue(eventType, out d))
{ {
d.Callback(arg1); d.Callback(arg1);
} }
} }
public void Send<T, U>(int eventType, T arg1, U arg2) /// <summary>
/// 发送事件。
/// </summary>
/// <param name="eventType"></param>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <typeparam name="TArg1"></typeparam>
/// <typeparam name="TArg2"></typeparam>
public void Send<TArg1, TArg2>(int eventType, TArg1 arg1, TArg2 arg2)
{ {
EventDelegateData d; if (m_eventTable.TryGetValue(eventType, out var d))
if (m_eventTable.TryGetValue(eventType, out d))
{ {
d.Callback(arg1, arg2); d.Callback(arg1, arg2);
} }
} }
public void Send<T, U, V>(int eventType, T arg1, U arg2, V arg3) /// <summary>
/// 发送事件。
/// </summary>
/// <param name="eventType"></param>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <param name="arg3"></param>
/// <typeparam name="TArg1"></typeparam>
/// <typeparam name="TArg2"></typeparam>
/// <typeparam name="TArg3"></typeparam>
public void Send<TArg1, TArg2, TArg3>(int eventType, TArg1 arg1, TArg2 arg2, TArg3 arg3)
{ {
EventDelegateData d; if (m_eventTable.TryGetValue(eventType, out var d))
if (m_eventTable.TryGetValue(eventType, out d))
{ {
d.Callback(arg1, arg2, arg3); d.Callback(arg1, arg2, arg3);
} }
} }
public void Send<T, U, V, W>(int eventType, T arg1, U arg2, V arg3, W arg4) /// <summary>
/// 发送事件。
/// </summary>
/// <param name="eventType"></param>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <param name="arg3"></param>
/// <param name="arg4"></param>
/// <typeparam name="TArg1"></typeparam>
/// <typeparam name="TArg2"></typeparam>
/// <typeparam name="TArg3"></typeparam>
/// <typeparam name="TArg4"></typeparam>
public void Send<TArg1, TArg2, TArg3, TArg4>(int eventType, TArg1 arg1, TArg2 arg2, TArg3 arg3, TArg4 arg4)
{ {
EventDelegateData d; if (m_eventTable.TryGetValue(eventType, out var d))
if (m_eventTable.TryGetValue(eventType, out d))
{ {
d.Callback(arg1, arg2, arg3, arg4); d.Callback(arg1, arg2, arg3, arg4);
} }
} }
public void Send<T, U, V, W, X>(int eventType, T arg1, U arg2, V arg3, W arg4, X arg5) /// <summary>
/// 发送事件。
/// </summary>
/// <param name="eventType"></param>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <param name="arg3"></param>
/// <param name="arg4"></param>
/// <param name="arg5"></param>
/// <typeparam name="TArg1"></typeparam>
/// <typeparam name="TArg2"></typeparam>
/// <typeparam name="TArg3"></typeparam>
/// <typeparam name="TArg4"></typeparam>
/// <typeparam name="TArg5"></typeparam>
public void Send<TArg1, TArg2, TArg3, TArg4, TArg5>(int eventType, TArg1 arg1, TArg2 arg2, TArg3 arg3, TArg4 arg4, TArg5 arg5)
{ {
EventDelegateData d; if (m_eventTable.TryGetValue(eventType, out var d))
if (m_eventTable.TryGetValue(eventType, out d))
{ {
d.Callback(arg1, arg2, arg3, arg4, arg5); d.Callback(arg1, arg2, arg3, arg4, arg5);
} }

View File

@@ -5,12 +5,12 @@ namespace TEngine
public enum EEventGroup public enum EEventGroup
{ {
/// <summary> /// <summary>
/// UI相关的交互 /// UI相关的交互
/// </summary> /// </summary>
GroupUI, GroupUI,
/// <summary> /// <summary>
/// 逻辑层内部相关的交互 /// 逻辑层内部相关的交互
/// </summary> /// </summary>
GroupLogic, GroupLogic,
} }
@@ -18,10 +18,10 @@ namespace TEngine
[System.AttributeUsage(System.AttributeTargets.Interface)] [System.AttributeUsage(System.AttributeTargets.Interface)]
public class EventInterface : Attribute public class EventInterface : Attribute
{ {
public EEventGroup mGroup; private EEventGroup _mGroup;
public EventInterface(EEventGroup group) public EventInterface(EEventGroup group)
{ {
mGroup = group; _mGroup = group;
} }
} }
} }

View File

@@ -29,7 +29,7 @@ namespace TEngine
} }
/// <summary> /// <summary>
/// 注册wrap的函数 /// 注册wrap的函数
/// </summary> /// </summary>
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
/// <param name="callerWrap"></param> /// <param name="callerWrap"></param>
@@ -42,9 +42,9 @@ namespace TEngine
m_entry.Add(typeName, entry); m_entry.Add(typeName, entry);
} }
public EventDispatcher GetDispatcher() /// <summary>
{ /// 分发注册器。
return m_dispatcher; /// </summary>
} public EventDispatcher Dispatcher => m_dispatcher;
} }
} }

View File

@@ -2,9 +2,12 @@
namespace TEngine namespace TEngine
{ {
public class GameEvent /// <summary>
/// 游戏事件类。
/// </summary>
public static class GameEvent
{ {
private static EventMgr m_mgr = new EventMgr(); private static readonly EventMgr EventMgr = new EventMgr();
public static void Init() public static void Init()
{ {
@@ -15,212 +18,212 @@ namespace TEngine
public static bool AddEventListener(int eventType, Action handler) public static bool AddEventListener(int eventType, Action handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(eventType, handler); return EventMgr.Dispatcher.AddEventListener(eventType, handler);
} }
public static bool AddEventListener<T>(int eventType, Action<T> handler) public static bool AddEventListener<TArg1>(int eventType, Action<TArg1> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(eventType, handler); return EventMgr.Dispatcher.AddEventListener(eventType, handler);
} }
public static bool AddEventListener<T, U>(int eventType, Action<T, U> handler) public static bool AddEventListener<TArg1, TArg2>(int eventType, Action<TArg1, TArg2> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(eventType, handler); return EventMgr.Dispatcher.AddEventListener(eventType, handler);
} }
public static bool AddEventListener<T, U, V>(int eventType, Action<T, U, V> handler) public static bool AddEventListener<TArg1, TArg2, TArg3>(int eventType, Action<TArg1, TArg2, TArg3> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(eventType, handler); return EventMgr.Dispatcher.AddEventListener(eventType, handler);
} }
public static bool AddEventListener<T, U, V, W>(int eventType, Action<T, U, V, W> handler) public static bool AddEventListener<TArg1, TArg2, TArg3, TArg4>(int eventType, Action<TArg1, TArg2, TArg3, TArg4> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(eventType, handler); return EventMgr.Dispatcher.AddEventListener(eventType, handler);
} }
public static bool AddEventListener<T, U, V, W, X>(int eventType, Action<T, U, V, W, X> handler) public static bool AddEventListener<TArg1, TArg2, TArg3, TArg4, TArg5>(int eventType, Action<TArg1, TArg2, TArg3, TArg4, TArg5> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(eventType, handler); return EventMgr.Dispatcher.AddEventListener(eventType, handler);
} }
public static void RemoveEventListener(int eventType, Action handler) public static void RemoveEventListener(int eventType, Action handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(eventType, handler); EventMgr.Dispatcher.RemoveEventListener(eventType, handler);
} }
public static void RemoveEventListener<T>(int eventType, Action<T> handler) public static void RemoveEventListener<TArg1>(int eventType, Action<TArg1> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(eventType, handler); EventMgr.Dispatcher.RemoveEventListener(eventType, handler);
} }
public static void RemoveEventListener<T, U>(int eventType, Action<T, U> handler) public static void RemoveEventListener<TArg1, TArg2>(int eventType, Action<TArg1, TArg2> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(eventType, handler); EventMgr.Dispatcher.RemoveEventListener(eventType, handler);
} }
public static void RemoveEventListener<T, U, V>(int eventType, Action<T, U, V> handler) public static void RemoveEventListener<TArg1, TArg2, TArg3>(int eventType, Action<TArg1, TArg2, TArg3> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(eventType, handler); EventMgr.Dispatcher.RemoveEventListener(eventType, handler);
} }
public static void RemoveEventListener<T, U, V, W>(int eventType, Action<T, U, V, W> handler) public static void RemoveEventListener<TArg1, TArg2, TArg3, TArg4>(int eventType, Action<TArg1, TArg2, TArg3, TArg4> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(eventType, handler); EventMgr.Dispatcher.RemoveEventListener(eventType, handler);
} }
public static void RemoveEventListener<T, U, V, W, X>(int eventType, Action<T, U, V, W, X> handler) public static void RemoveEventListener<TArg1, TArg2, TArg3, TArg4, TArg5>(int eventType, Action<TArg1, TArg2, TArg3, TArg4, TArg5> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(eventType, handler); EventMgr.Dispatcher.RemoveEventListener(eventType, handler);
} }
public static void RemoveEventListener(int eventType, Delegate handler) public static void RemoveEventListener(int eventType, Delegate handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(eventType, handler); EventMgr.Dispatcher.RemoveEventListener(eventType, handler);
} }
//----------------------------string Event----------------------------// //----------------------------string Event----------------------------//
public static bool AddEventListener(string eventType, Action handler) public static bool AddEventListener(string eventType, Action handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(StringId.StringToHash(eventType), handler); return EventMgr.Dispatcher.AddEventListener(StringId.StringToHash(eventType), handler);
} }
public static bool AddEventListener<T>(string eventType, Action<T> handler) public static bool AddEventListener<TArg1>(string eventType, Action<TArg1> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(StringId.StringToHash(eventType), handler); return EventMgr.Dispatcher.AddEventListener(StringId.StringToHash(eventType), handler);
} }
public static bool AddEventListener<T, U>(string eventType, Action<T, U> handler) public static bool AddEventListener<TArg1, TArg2>(string eventType, Action<TArg1, TArg2> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(StringId.StringToHash(eventType), handler); return EventMgr.Dispatcher.AddEventListener(StringId.StringToHash(eventType), handler);
} }
public static bool AddEventListener<T, U, V>(string eventType, Action<T, U, V> handler) public static bool AddEventListener<TArg1, TArg2, TArg3>(string eventType, Action<TArg1, TArg2, TArg3> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(StringId.StringToHash(eventType), handler); return EventMgr.Dispatcher.AddEventListener(StringId.StringToHash(eventType), handler);
} }
public static bool AddEventListener<T, U, V, W>(string eventType, Action<T, U, V, W> handler) public static bool AddEventListener<TArg1, TArg2, TArg3, TArg4>(string eventType, Action<TArg1, TArg2, TArg3, TArg4> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(StringId.StringToHash(eventType), handler); return EventMgr.Dispatcher.AddEventListener(StringId.StringToHash(eventType), handler);
} }
public static bool AddEventListener<T, U, V, W, X>(string eventType, Action<T, U, V, W, X> handler) public static bool AddEventListener<TArg1, TArg2, TArg3, TArg4, TArg5>(string eventType, Action<TArg1, TArg2, TArg3, TArg4, TArg5> handler)
{ {
return m_mgr.GetDispatcher().AddEventListener(StringId.StringToHash(eventType), handler); return EventMgr.Dispatcher.AddEventListener(StringId.StringToHash(eventType), handler);
} }
public static void RemoveEventListener(string eventType, Action handler) public static void RemoveEventListener(string eventType, Action handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(StringId.StringToHash(eventType), handler); EventMgr.Dispatcher.RemoveEventListener(StringId.StringToHash(eventType), handler);
} }
public static void RemoveEventListener<T>(string eventType, Action<T> handler) public static void RemoveEventListener<TArg1>(string eventType, Action<TArg1> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(StringId.StringToHash(eventType), handler); EventMgr.Dispatcher.RemoveEventListener(StringId.StringToHash(eventType), handler);
} }
public static void RemoveEventListener<T, U>(string eventType, Action<T, U> handler) public static void RemoveEventListener<TArg1, TArg2>(string eventType, Action<TArg1, TArg2> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(StringId.StringToHash(eventType), handler); EventMgr.Dispatcher.RemoveEventListener(StringId.StringToHash(eventType), handler);
} }
public static void RemoveEventListener<T, U, V>(string eventType, Action<T, U, V> handler) public static void RemoveEventListener<TArg1, TArg2, TArg3>(string eventType, Action<TArg1, TArg2, TArg3> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(StringId.StringToHash(eventType), handler); EventMgr.Dispatcher.RemoveEventListener(StringId.StringToHash(eventType), handler);
} }
public static void RemoveEventListener<T, U, V, W>(string eventType, Action<T, U, V, W> handler) public static void RemoveEventListener<TArg1, TArg2, TArg3, TArg4>(string eventType, Action<TArg1, TArg2, TArg3, TArg4> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(StringId.StringToHash(eventType), handler); EventMgr.Dispatcher.RemoveEventListener(StringId.StringToHash(eventType), handler);
} }
public static void RemoveEventListener<T, U, V, W, X>(string eventType, Action<T, U, V, W, X> handler) public static void RemoveEventListener<TArg1, TArg2, TArg3, TArg4, TArg5>(string eventType, Action<TArg1, TArg2, TArg3, TArg4, TArg5> handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(StringId.StringToHash(eventType), handler); EventMgr.Dispatcher.RemoveEventListener(StringId.StringToHash(eventType), handler);
} }
public static void RemoveEventListener(string eventType, Delegate handler) public static void RemoveEventListener(string eventType, Delegate handler)
{ {
m_mgr.GetDispatcher().RemoveEventListener(StringId.StringToHash(eventType), handler); EventMgr.Dispatcher.RemoveEventListener(StringId.StringToHash(eventType), handler);
} }
#endregion #endregion
#region #region
public static T Get<T>() public static TArg1 Get<TArg1>()
{ {
return m_mgr.GetInterface<T>(); return EventMgr.GetInterface<TArg1>();
} }
public static void Send(int eventType) public static void Send(int eventType)
{ {
m_mgr.GetDispatcher().Send(eventType); EventMgr.Dispatcher.Send(eventType);
} }
public static void Send<T>(int eventType, T arg1) public static void Send<TArg1>(int eventType, TArg1 arg1)
{ {
m_mgr.GetDispatcher().Send(eventType, arg1); EventMgr.Dispatcher.Send(eventType, arg1);
} }
public static void Send<T, U>(int eventType, T arg1, U arg2) public static void Send<TArg1, TArg2>(int eventType, TArg1 arg1, TArg2 arg2)
{ {
m_mgr.GetDispatcher().Send(eventType, arg1, arg2); EventMgr.Dispatcher.Send(eventType, arg1, arg2);
} }
public static void Send<T, U, V>(int eventType, T arg1, U arg2, V arg3) public static void Send<TArg1, TArg2, TArg3>(int eventType, TArg1 arg1, TArg2 arg2, TArg3 arg3)
{ {
m_mgr.GetDispatcher().Send(eventType, arg1, arg2, arg3); EventMgr.Dispatcher.Send(eventType, arg1, arg2, arg3);
} }
public static void Send<T, U, V, W>(int eventType, T arg1, U arg2, V arg3, W arg4) public static void Send<TArg1, TArg2, TArg3, TArg4>(int eventType, TArg1 arg1, TArg2 arg2, TArg3 arg3, TArg4 arg4)
{ {
m_mgr.GetDispatcher().Send(eventType, arg1, arg2, arg3); EventMgr.Dispatcher.Send(eventType, arg1, arg2, arg3);
} }
public static void Send<T, U, V, W, X>(int eventType, T arg1, U arg2, V arg3, W arg4, X arg5) public static void Send<TArg1, TArg2, TArg3, TArg4, TArg5>(int eventType, TArg1 arg1, TArg2 arg2, TArg3 arg3, TArg4 arg4, TArg5 arg5)
{ {
m_mgr.GetDispatcher().Send(eventType, arg1, arg2, arg3, arg4, arg5); EventMgr.Dispatcher.Send(eventType, arg1, arg2, arg3, arg4, arg5);
} }
public static void Send(int eventType, Delegate handler) public static void Send(int eventType, Delegate handler)
{ {
m_mgr.GetDispatcher().Send(eventType, handler); EventMgr.Dispatcher.Send(eventType, handler);
} }
//-------------------------------string Send-------------------------------// //-------------------------------string Send-------------------------------//
public static void Send(string eventType) public static void Send(string eventType)
{ {
m_mgr.GetDispatcher().Send(StringId.StringToHash(eventType)); EventMgr.Dispatcher.Send(StringId.StringToHash(eventType));
} }
public static void Send<T>(string eventType, T arg1) public static void Send<TArg1>(string eventType, TArg1 arg1)
{ {
m_mgr.GetDispatcher().Send(StringId.StringToHash(eventType), arg1); EventMgr.Dispatcher.Send(StringId.StringToHash(eventType), arg1);
} }
public static void Send<T, U>(string eventType, T arg1, U arg2) public static void Send<TArg1, TArg2>(string eventType, TArg1 arg1, TArg2 arg2)
{ {
m_mgr.GetDispatcher().Send(StringId.StringToHash(eventType), arg1, arg2); EventMgr.Dispatcher.Send(StringId.StringToHash(eventType), arg1, arg2);
} }
public static void Send<T, U, V>(string eventType, T arg1, U arg2, V arg3) public static void Send<TArg1, TArg2, TArg3>(string eventType, TArg1 arg1, TArg2 arg2, TArg3 arg3)
{ {
m_mgr.GetDispatcher().Send(StringId.StringToHash(eventType), arg1, arg2, arg3); EventMgr.Dispatcher.Send(StringId.StringToHash(eventType), arg1, arg2, arg3);
} }
public static void Send<T, U, V, W>(string eventType, T arg1, U arg2, V arg3, W arg4) public static void Send<TArg1, TArg2, TArg3, TArg4>(string eventType, TArg1 arg1, TArg2 arg2, TArg3 arg3, TArg4 arg4)
{ {
m_mgr.GetDispatcher().Send(StringId.StringToHash(eventType), arg1, arg2, arg3); EventMgr.Dispatcher.Send(StringId.StringToHash(eventType), arg1, arg2, arg3);
} }
public static void Send<T, U, V, W, X>(string eventType, T arg1, U arg2, V arg3, W arg4, X arg5) public static void Send<TArg1, TArg2, TArg3, TArg4, TArg5>(string eventType, TArg1 arg1, TArg2 arg2, TArg3 arg3, TArg4 arg4, TArg5 arg5)
{ {
m_mgr.GetDispatcher().Send(StringId.StringToHash(eventType), arg1, arg2, arg3, arg4, arg5); EventMgr.Dispatcher.Send(StringId.StringToHash(eventType), arg1, arg2, arg3, arg4, arg5);
} }
public static void Send(string eventType, Delegate handler) public static void Send(string eventType, Delegate handler)
{ {
m_mgr.GetDispatcher().Send(StringId.StringToHash(eventType), handler); EventMgr.Dispatcher.Send(StringId.StringToHash(eventType), handler);
} }
#endregion #endregion
} }

View File

@@ -2,7 +2,7 @@
namespace TEngine namespace TEngine
{ {
public class StringId public static class StringId
{ {
private static readonly Dictionary<string, int> eventTypeHashMap = new Dictionary<string, int>(); private static readonly Dictionary<string, int> eventTypeHashMap = new Dictionary<string, int>();
private static readonly Dictionary<int, string> eventHashToStringMap = new Dictionary<int, string>(); private static readonly Dictionary<int, string> eventHashToStringMap = new Dictionary<int, string>();