Esempio n. 1
0
    // todo test
    public void RemoveMessage(GameMsgDef msgName, object sender)
    {
        if (sender == null)
        {
            return;
        }

        Delegate funcs = null;

        if (m_MsgMap.TryGetValue(msgName, out funcs))
        {
            foreach (Delegate func in funcs.GetInvocationList())
            {
                if (func.Target == sender)
                {
                    Delegate.Remove(funcs, func);
                }
            }
        }

        if (funcs == null)
        {
            m_MsgMap.Remove(msgName);
        }
    }
Esempio n. 2
0
    public void AddMessage <T1, T2, T3>(GameMsgDef msgName, Action <T1, T2, T3> listener)
    {
        if (listener == null)
        {
            return;
        }

        AddDelegate(msgName, listener);
    }
Esempio n. 3
0
    // 3个参
    public void SendMessage <T1, T2, T3>(GameMsgDef msgName, T1 arg1, T2 arg2, T3 arg3)
    {
        Delegate funcs = null;

        if (m_MsgMap.TryGetValue(msgName, out funcs))
        {
            foreach (Delegate func in funcs.GetInvocationList())
            {
                Action <T1, T2, T3> tmp = (Action <T1, T2, T3>)func;
                tmp(arg1, arg2, arg3);
            }
        }
    }
Esempio n. 4
0
    // 1个参
    public void SendMessage <T>(GameMsgDef msgName, T arg)
    {
        Delegate funcs = null;

        if (m_MsgMap.TryGetValue(msgName, out funcs))
        {
            foreach (Delegate func in funcs.GetInvocationList())
            {
                Action <T> tmp = (Action <T>)func;
                tmp(arg);
            }
        }
    }
Esempio n. 5
0
    private void AddDelegate(GameMsgDef msgName, Delegate listener)
    {
        if (listener == null)
        {
            return;
        }

        Delegate func = null;

        if (m_MsgMap.TryGetValue(msgName, out func))
        {
            Delegate.Combine(func, listener);
        }
        else
        {
            func = listener;
        }

        m_MsgMap[msgName] = func;
    }