zoukankan      html  css  js  c++  java
  • [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


    }

  • 相关阅读:
    Ant 警告:sun.misc.BASE64Decoder 是 Sun 的专用 API,可能会在未来版本中删除
    SerfJ REST
    SimpleDateFormat的线程安全问题与解决方案
    蔡勒(Zeller)公式:根据日期推算是星期几
    【转】详解 Spring 3.0 基于 Annotation 的依赖注入实现
    PostgreSQL JSON ARRAY 数据类型
    【转】Tomcat源代码阅读系列
    Spring 数据源
    IBatis-Spring 整合
    24 The Go image package go图片包:图片包的基本原理
  • 原文地址:https://www.cnblogs.com/cocotang/p/5785183.html
Copyright © 2011-2022 走看看