public void SendDeltaFrames(int _battleID, List <int> list) { Debug.Log("正在发送缺失数据帧"); UdpUpDeltaFrames _msg = new UdpUpDeltaFrames(_battleID, list); clientUdp.SendMessage(new Protocol(_msg)); }
public void AnalyzeMessage(CSID messageId, byte[] bodyData) { switch (messageId) { case CSID.UDP_BATTLE_READY: { //接收战斗准备 UdpBattleReady _mes = CSData.DeserializeData <UdpBattleReady> (bodyData); CheckBattleBegin(_mes.battleID); dic_udp [_mes.battleID].RecvClientReady(_mes.uid); } break; case CSID.UDP_UP_PLAYER_OPERATIONS: { UdpUpPlayerOperations pb_ReceiveMes = CSData.DeserializeData <UdpUpPlayerOperations>(bodyData); UpdatePlayerOperation(pb_ReceiveMes.operation, pb_ReceiveMes.mesID); } break; case CSID.UDP_UP_DELTA_FRAMES: { UdpUpDeltaFrames pb_ReceiveMes = CSData.DeserializeData <UdpUpDeltaFrames>(bodyData); UdpDownDeltaFrames _downData = new UdpDownDeltaFrames(); for (int i = 0; i < pb_ReceiveMes.frames.Count; i++) { int framIndex = pb_ReceiveMes.frames [i]; UdpDownFrameOperations _downOp = new UdpDownFrameOperations(); _downOp.frameID = framIndex; _downOp.operations = dic_gameOperation [framIndex]; _downData.framesData.Add(_downOp); } byte[] _data = CSData.GetSendMessage <UdpDownDeltaFrames> (_downData, SCID.UDP_DOWN_DELTA_FRAMES); dic_udp [pb_ReceiveMes.battleID].SendMessage(_data); } break; case CSID.UDP_UP_GAME_OVER: { UdpUpGameOver pb_ReceiveMes = CSData.DeserializeData <UdpUpGameOver>(bodyData); UpdatePlayerGameOver(pb_ReceiveMes.battleID); UdpDownGameOver _downData = new UdpDownGameOver(); byte[] _data = CSData.GetSendMessage <UdpDownGameOver> (_downData, SCID.UDP_DOWN_GAME_OVER); dic_udp [pb_ReceiveMes.battleID].SendMessage(_data); } break; default: break; } }
public void SendDeltaFrames(int _battleID, List <int> _frames) { UdpUpDeltaFrames _framespb = new UdpUpDeltaFrames(); _framespb.battleID = _battleID; _framespb.frames.AddRange(_frames); _upd.SendMessage(CSData.GetSendMessage <UdpUpDeltaFrames>(_framespb, CSID.UDP_UP_DELTA_FRAMES)); }
private void HandleMsg(ServerClientUdp udp, Protocol proto) { switch (proto.ClassName) { case nameof(UdpBattleReadyMessage): { UdpBattleReadyMessage msg = proto.Decode <UdpBattleReadyMessage>(); Debug.Log("客户端完成战斗加载"); // 接收战斗准备 CheckBattleBegin(msg.BattleID); dic_udp[msg.BattleID].RecvClientReady(msg.UID); } break; case nameof(UdpUpPlayerOperation): { UdpUpPlayerOperation msg = proto.Decode <UdpUpPlayerOperation>(); //Debug.Log("服务器接收到玩家的操作信息"); UpdatePlayerOperation(msg.PlayerOperation, msg.MsgID); } break; case nameof(UdpUpDeltaFrames): { UdpUpDeltaFrames msg = proto.Decode <UdpUpDeltaFrames>(); UdpDownDeltaFrames _downData = new UdpDownDeltaFrames(); for (int i = 0; i < msg.Frames.Count; i++) { int frameIndex = msg.Frames[i]; UdpDownFrameOperations _downOps = new UdpDownFrameOperations(); _downOps.FrameID = frameIndex; _downOps.Ops = dic_gameOperation[frameIndex]; _downData.FramesData.Add(_downOps); } dic_udp[msg.BattleID].SendMessage(new Protocol(_downData)); } break; default: { Debug.LogError("未知客户端UDP信息"); } break; } }