コード例 #1
0
ファイル: Event.cs プロジェクト: NoeCalmness/CoreFrame
    public static void Back(Event_ e)
    {
        e.Reset();

        var t = e.GetType();

        if (t == defaultType)
        {
            m_defaultPool.Back(e); return;
        }

        m_eventPool.GetDefault(t.GetHashCode()).Back(e);
    }
コード例 #2
0
ファイル: EventManager.cs プロジェクト: NoeCalmness/CoreFrame
    public bool Invoke(Event_ e)
    {
        if (voidHandler != null)
        {
            voidHandler.Invoke();
        }
        else if (normalHandler != null)
        {
            normalHandler.Invoke(e);
        }
        else
        {
            if (moduleHandler != null)
            {
                var me = e as ModuleEvent;
                if (me == null || !me.baseModule)
                {
                    Logger.LogError("Module Event invalid! [handler:{0}, event:{1}, targetModule:{2}, evenModule:{3}]", handler.Method, me != null ? me.moduleEvent : e.name, paramType.Name, me != null && me.baseModule ? me.baseModule.GetType().Name : "null");
                    return(false);
                }
                if (extendInfo != ModuleEvent.GLOBAL && me.moduleEvent != extendInfo || me.GetType() != paramType)
                {
                    return(false);
                }
                handler.DynamicInvoke(e);
            }
            else
            {
                if (paramType != e.GetType())
                {
                    Logger.LogError("Event handler [{0}] has wrong param type, ignore. [event:{3}, targetType:{1}, eventType:{2}]", handler.Method, paramType.Name, e.GetType().Name, e.name);
                    return(false);
                }
                handler.DynamicInvoke(e);
            }
        }

        return(true);
    }