72 lines
2.0 KiB
C#
72 lines
2.0 KiB
C#
|
/**************************************************************************************************
|
|||
|
Copyright (C) 2021 - All Rights Reserved.
|
|||
|
--------------------------------------------------------------------------------------------------------
|
|||
|
当前版本:1.0;
|
|||
|
文 件 : MessageDispatcher.cs;
|
|||
|
作 者 : HuBingJie;
|
|||
|
时 间 : 2021 - 06 - 22;
|
|||
|
注 释 : 消息中心,方便各系统之间通信;
|
|||
|
**************************************************************************************************/
|
|||
|
|
|||
|
using System.Collections.Generic;
|
|||
|
|
|||
|
public delegate void MessageHandler(uint iMessageType, object arg);
|
|||
|
|
|||
|
public class MessageDispatcher : DataSingleton<MessageDispatcher>
|
|||
|
{
|
|||
|
Dictionary<uint, MessageHandler> m_HandlerMap;
|
|||
|
public MessageDispatcher()
|
|||
|
{
|
|||
|
m_HandlerMap = new Dictionary<uint, MessageHandler>();
|
|||
|
}
|
|||
|
|
|||
|
public MessageHandler RegisterMessageHandler(uint iMessageType, MessageHandler handler)
|
|||
|
{
|
|||
|
if (handler == null)
|
|||
|
return null;
|
|||
|
|
|||
|
if (!m_HandlerMap.ContainsKey(iMessageType))
|
|||
|
{
|
|||
|
MessageHandler Handlers = handler;
|
|||
|
m_HandlerMap.Add(iMessageType, Handlers);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
m_HandlerMap[iMessageType] += handler;
|
|||
|
}
|
|||
|
return handler;
|
|||
|
}
|
|||
|
|
|||
|
public void UnRegisterMessageHandler(uint iMessageType, MessageHandler handler)
|
|||
|
{
|
|||
|
if (handler == null)
|
|||
|
return;
|
|||
|
|
|||
|
if (m_HandlerMap.ContainsKey(iMessageType))
|
|||
|
{
|
|||
|
m_HandlerMap[iMessageType] -= handler;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void SendMessage(uint iMessageType, object arg)
|
|||
|
{
|
|||
|
if (m_HandlerMap.ContainsKey(iMessageType))
|
|||
|
{
|
|||
|
if (m_HandlerMap[iMessageType] != null)
|
|||
|
{
|
|||
|
m_HandlerMap[iMessageType].Invoke(iMessageType, arg);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public override void Init()
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
public override void OnDispose()
|
|||
|
{
|
|||
|
throw new System.NotImplementedException();
|
|||
|
}
|
|||
|
}
|