public void RemoveMsg(ICmdNum.CmdNum msgID) { for (int i = msgList.Count - 1; i >= 0; i--) { if (msgList[i].msgID == msgID) { msgList.RemoveAt(i); return; } } }
public void AddMsg(uint gameVer, ulong userID, ICmdNum.CmdNum msgID, System.Object data, float interval, int count, bool addNum, ulong msgNum) { TimeControl tc = new TimeControl(); tc.userID = userID; tc.msgID = msgID; tc.gameVer = gameVer; tc.interval = interval; tc.count = count; tc.data = data; tc.addNum = addNum; tc.msgNum = msgNum; tc.time = Time.time; msgList.Add(tc); }
//心跳包不需要消息计数增加.addNum消息计数增加,noNum只发一次(心跳包使用) public void SendMessage(UInt64 userID, ICmdNum.CmdNum msgID, System.Object data, float interval = 0.0f, int count = 0, bool addNum = true, bool fistAddNum = true) { UInt64 msgNum = 0; if (fistAddNum && ActorManager.Instance.controlActor != null) { ActorManager.Instance.controlActor.info.msgSendNum++; msgNum = ActorManager.Instance.controlActor.info.msgSendNum; } //包头 MemoryStream mshead = new MemoryStream(); BinaryWriter writer = new BinaryWriter(mshead); writer.Write((UInt32)gameVersion); writer.Write((UInt64)userID); writer.Write((UInt64)msgNum); writer.Write((UInt32)msgID); ProtoBuf.Meta.RuntimeTypeModel.Default.Serialize(mshead, data); if (mshead.Length > 1024) { Debug.Log("Send Message Length > 1024"); return; } socket.SendTo(mshead.GetBuffer(), (int)mshead.Length, System.Net.Sockets.SocketFlags.None, senderRemote); //Debug.Log("send msg: " + Enum.GetName(typeof(ICmdNum.CmdNum), msgID)); if (count > 0) msgResend.AddMsg(gameVersion, userID, msgID, data, interval, count, addNum, msgNum); }