• [TWLFramework] MessageCenter


    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;

    public class MessageCenter : Singleton<MessageCenter>
    {

    private Dictionary<string, List<MessageEvent>> _dictMessageEvent = null;
    public override void Init()
    {
    _dictMessageEvent = new Dictionary<string, List<MessageEvent>>();
    }
    //add listener
    public void AddListener(string msgName, MessageEvent msgEvent)
    {
    List<MessageEvent> list = null;
    if (_dictMessageEvent.ContainsKey(msgName))
    {
    list = _dictMessageEvent[msgName];
    }
    else {
    list = new List<MessageEvent>();
    _dictMessageEvent.Add(msgName, list);
    }
    if (!list.Contains(msgEvent))
    {
    list.Add(msgEvent);
    }
    }
    //remove listener
    public void RemoveListener(string msgName, MessageEvent msgEvent)
    {
    if (_dictMessageEvent.ContainsKey(msgName))
    {
    List<MessageEvent> list = _dictMessageEvent[msgName];
    if (list.Contains(msgEvent))
    {
    list.Remove(msgEvent);
    }
    if (list.Count <= 0)
    {
    _dictMessageEvent.Remove(msgName);
    }
    }
    }
    //remove all listener
    public void RemoveAllListener()
    {
    _dictMessageEvent.Clear();
    }
    #region send message
    public void SendMessage(Message message)
    {
    DoMessageDispatcher(message);
    }

    public void SendMessage(string name, object sender)
    {
    SendMessage(new Message(name, sender));
    }
    public void SendMessage(string name, object sender, object content)
    {
    SendMessage(new Message(name, sender, content));
    }
    public void SendMessage(string name, object sender, object content, params object[] dictParams)
    {
    SendMessage(new Message(name, sender, content, dictParams));
    }
    private void DoMessageDispatcher(Message msg)
    {
    if (_dictMessageEvent == null || !_dictMessageEvent.ContainsKey(msg.Name))
    {
    return;
    }
    List<MessageEvent> list = _dictMessageEvent[msg.Name];
    for (int i = 0; i < list.Count; i++)
    {
    MessageEvent msgEvent = list[i];
    if (msgEvent != null)
    {
    msgEvent(msg);
    }
    }

    }

    #endregion


    }

  • 相关阅读:
    PHP数据库备份文件分卷导入的实现思路
    用delphi如何实现启动停止windows服务
    【创意logo】第23个世界无烟日 让烟草远离女性
    修改“windows xp资源管理器”的默认打开路径
    PHP百行代码快速构建简易聊天室
    简单的方法实现判断Mysql内某个字段Fields是否存在
    Blackhand的插件管理部分
    PHP 与 ASP.NET 正面交锋
    C语言运算符
    功能齐全的发送邮件类
  • 原文地址:https://www.cnblogs.com/cocotang/p/5785183.html
Copyright © 2020-2023  润新知