/// <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; } }
/// <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; } } }
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; }
/// <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()); } }
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); }