Beispiel #1
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="msg"></param>
        public void SendMsg(MsgBase msg)
        {
            switch (msg.GetMsgType())
            {
            case MsgType.UI:
                uiMgr.ProcessEvent(msg);
                break;

            case MsgType.Entity:
                entityMgr.ProcessEvent(msg);
                break;

            case MsgType.Player:
                break;

            case MsgType.Net:
                netMgr.ProcessEvent(msg);
                break;

            case MsgType.Game:
                break;

            case MsgType.AI:
                break;

            case MsgType.Audio:
                audioMgr.ProcessEvent(msg);
                break;

            case MsgType.Asset:
                assetMgr.ProcessEvent(msg);
                break;
            }
        }
Beispiel #2
0
        /// <summary>
        /// 注销消息
        /// </summary>
        public void UnRegistMsgs(IMessageProcess mono, List <ushort> msgIds)
        {
            for (int i = 0; i < msgIds.Count; i++)
            {
                switch (MsgBase.GetMsgType(msgIds[i]))
                {
                case MsgType.UI:
                    uiMgr.UnRegistMsg(mono, msgIds[i]);
                    break;

                case MsgType.Net:
                    netMgr.UnRegistMsg(mono, msgIds[i]);
                    break;

                case MsgType.Entity:
                    entityMgr.UnRegistMsg(mono, msgIds[i]);
                    break;

                case MsgType.Audio:
                    audioMgr.UnRegistMsg(mono, msgIds[i]);
                    break;

                case MsgType.Asset:
                    assetMgr.UnRegistMsg(mono, msgIds[i]);
                    break;
                }
            }
        }
Beispiel #3
0
        public void Send(MsgBase msg)
        {
            if (msg == null)
            {
                return;
            }

            //int sendTime;
            //if (m_WaitForAnswer.TryGetValue(msg.GetMsgType(), out sendTime))
            //{
            //    if (sendTime != 0 && Environment.TickCount - sendTime < MaxRPCWaitTime)
            //    {
            //        return;
            //    }
            //}

            if (Environment.TickCount - m_LastResetTime > SendMsgCycle)
            {
                m_CurSendMsgNum = 0;
                m_LastResetTime = Environment.TickCount;
            }
            else
            {
                if (m_CurSendMsgNum >= MaxSendMsgNum)
                {
                    //m_Log.ErrorFormat("Too Much Message! Type: {0}", msg.GetMsgType());
                    return;
                }
            }

            if (m_CurSendMsgNum == 0)
            {
                m_LastResetTime = Environment.TickCount;
            }

            SendMsgPacket.Instance.Init(msg.GetMsgType());
            SendMsgPacket rPacket = SendMsgPacket.Instance;

            msg.Serialize(rPacket);
            SendData(rPacket.ToArray(), rPacket.GetLength());


            //if (m_WaitForAnswer.ContainsKey(msg.GetMsgType()))
            //{
            //    m_WaitForAnswer[msg.GetMsgType()] = Environment.TickCount;
            //}

            ++m_CurSendMsgNum;
        }
Beispiel #4
0
        /// <summary>
        /// 处理消息
        /// </summary>
        /// <param name="msg"></param>
        public virtual void ProcessEvent(MsgBase msg)
        {
            bool hasProcessor = false;

            for (int i = 0; i < eventTree.Length; i++)
            {
                if (eventTree[i] != null && eventTree[i].ContainsKey(msg.MsgId))
                {
                    hasProcessor = true;
                    foreach (IMessageProcess mono in eventTree[i][msg.MsgId])
                    {
                        mono.ProcessEvent(msg);
                    }
                }
            }

            if (!hasProcessor)
            {
                Debug.LogError("msg isn't existed in eventTree, msgId == " + msg.MsgId + ", MsgType == " + msg.GetMsgType());
            }
        }
Beispiel #5
0
        public object GetObj(MsgBase msg)
        {
            bool   hasProcessor = false;
            object retObj       = null;
            object tmpObj       = null;

            for (int i = 0; i < getObjEventTree.Length; i++)
            {
                if (getObjEventTree[i] != null && getObjEventTree[i].ContainsKey(msg.MsgId))
                {
                    hasProcessor = true;
                    foreach (IGetObj mono in eventTree[i][msg.MsgId])
                    {
                        tmpObj = mono.GetObj(msg);
                        if (tmpObj != null)
                        {
                            retObj = tmpObj;
                        }
                    }
                }
            }

            if (!hasProcessor)
            {
                Debug.LogError("msg isn't existed in obj eventTree, msgId == " + msg.MsgId + ", MsgType == " + msg.GetMsgType());
            }

            return(retObj);
        }