Ejemplo n.º 1
0
 public CGameEvent(ESysEvent k, GameEventDelegate fun, object p1 = null)
 {
     key      = k;
     param1   = p1;
     param2   = null;
     paramFun = fun;
 }
Ejemplo n.º 2
0
    //public bool DetachNetListener(RockProtocol.MsgID msgID, DGameEventHandle eventHandle)
    //{
    //    return DetachListener(GetNetMsgIdEventKey(msgID), eventHandle);
    //}

    public bool DetachListener(ESysEvent eventKey, DGameEventHandle eventHandle)
    {
        if (!mListenerTable.ContainsKey(eventKey))
        {
            return(false);
        }

        List <CEventData> listenerList = mListenerTable[eventKey];

        CEventData find = null;

        foreach (CEventData evtData in listenerList)
        {
            if (evtData.mHandle == eventHandle)
            {
                find = evtData;
                break;
            }
        }

        if (find != null)
        {
            listenerList.Remove(find);
        }

        return(true);
    }
Ejemplo n.º 3
0
    public bool AddListener(ESysEvent eventkey, DGameEventHandle eventHandle)
    {
        if (eventHandle == null)
        {
            return(false);
        }

        if (!mListenerTable.ContainsKey(eventkey))
        {
            mListenerTable.Add(eventkey, new List <CEventData>());
        }

        List <CEventData> listenerList = mListenerTable[eventkey];

        listenerList.Add(new CEventData(eventHandle));

        return(true);
    }
Ejemplo n.º 4
0
    //public bool AddNetListener(RockProtocol.MsgID msgID, DGameEventHandle eventHandle)
    //{
    //    return AddListener(GetNetMsgIdEventKey(msgID), eventHandle);
    //}

    //static public int GetNetMsgIdEventKey(RockProtocol.MsgID msgID)
    //{
    //    return (int)msgID;
    //}
    public bool RemoveListener(ESysEvent eventkey, DGameEventHandle eventHandle)
    {
        if (!mListenerTable.ContainsKey(eventkey))
        {
            return(false);
        }

        List <CEventData> listenerList = mListenerTable[eventkey];

        for (int i = 0; i < listenerList.Count; ++i)
        {
            if (eventHandle == listenerList[i].mHandle)
            {
                listenerList.Remove(listenerList[i]);
                return(true);
            }
        }
        return(false);
    }
Ejemplo n.º 5
0
 public CSystemEvent(ESysEvent sysEvt, object param1, object param2)
 {
     mSysEvt = sysEvt;
     mParam1 = param1;
     mParam2 = param2;
 }
Ejemplo n.º 6
0
 public CSystemEvent(ESysEvent sysEvt)
 {
     mSysEvt = sysEvt;
 }
Ejemplo n.º 7
0
 public CSystemEvent(ESysEvent sysEvt, object param1, object param2)
 {
     this.mSysEvt = sysEvt;
     this.mParam1 = param1;
     this.mParam2 = param2;
 }
Ejemplo n.º 8
0
 public SEventData(ESysEvent eventKey, DGameEventHandle eventHandle)
 {
     this.eventKey    = eventKey;
     this.eventHandle = eventHandle;
 }
Ejemplo n.º 9
0
 public CGameEvent(ESysEvent k)
 {
     key    = k;
     param1 = null;
     param2 = null;
 }
Ejemplo n.º 10
0
 public CGameEvent(ESysEvent k, object p1, object p2)
 {
     key    = k;
     param1 = p1;
     param2 = p2;
 }
Ejemplo n.º 11
0
 public CGameEvent(ESysEvent k, object p1 = null)
 {
     key    = k;
     param1 = p1;
     param2 = null;
 }
Ejemplo n.º 12
0
 /// <summary>
 /// 自定义超时时间,-1表示不使用超时机制
 /// </summary>
 /// <param name="evtKey"></param>
 /// <param name="waitTime"></param>
 public CEvtWaiter(ESysEvent evtKey, float waitTime)
 {
     mEvtKey   = evtKey;
     mWaitTime = waitTime;
     mEvt      = null;
 }
Ejemplo n.º 13
0
    public const float cDefaultWaitTime = 10f;//20f

    /// <summary>
    /// 使用默认超时时间
    /// </summary>
    /// <param name="evtKey"></param>
    public CEvtWaiter(ESysEvent evtKey)
    {
        mEvtKey   = evtKey;
        mWaitTime = cDefaultWaitTime;
        mEvt      = null;
    }
Ejemplo n.º 14
0
    /// <summary>
    /// 同步事件触发
    /// </summary>
    /// <param name="evt"></param>
    /// <returns></returns>
    public bool TriggerEvent(IEvent evt)
    {
#if PROFILE
        Profiler.BeginSample("TriggerEvent");
#endif
        bool      ret      = true;
        ESysEvent eventKey = (ESysEvent)evt.GetKey();


        if (!mListenerTable.ContainsKey(eventKey))
        {
            ret = false;
        }
        else
        {
            List <CEventData> listenerList = mListenerTable[eventKey];

            //防止在事件处理流程中改变事件列表
            List <CEventData> tmpList = new List <CEventData>(listenerList);
            for (int i = 0; i < tmpList.Count; ++i)
            //foreach (CEventData evtData in tmpList)
            {
                CEventData evtData = tmpList[i];

                if (evtData.mHandle != null && (!evtData.mObjRelate || evtData.mGameObj != null))
                {
#if PROFILE
                    Profiler.BeginSample(string.Format("HandleEvt: {0}, {1}", eventKey, evtData.mGameObj != null ? evtData.mGameObj.name : "null"));
#endif
                    evtData.mHandle(evt);


#if PROFILE
                    Profiler.EndSample();
#endif
                }
            }

            for (int i = 0; i < tmpList.Count; ++i)
            {
                if (tmpList[i].mObjRelate && tmpList[i].mGameObj == null)
                {
                    listenerList.Remove(tmpList[i]);
                }
            }
        }


        //改变事件等待协程的状态
        if (mEvtWaiterMap.ContainsKey(eventKey))
        {
            foreach (CEvtWaiter waiter in mEvtWaiterMap[eventKey])
            {
                waiter.mEvt = evt;
            }
            mEvtWaiterMap[eventKey].Clear();
            mEvtWaiterMap[eventKey] = null;
            mEvtWaiterMap.Remove(eventKey);
        }

#if PROFILE
        Profiler.EndSample();
#endif
        return(ret);
    }