Example #1
0
    public void SendDeltaFrames(int _battleID, List <int> list)
    {
        Debug.Log("正在发送缺失数据帧");
        UdpUpDeltaFrames _msg = new UdpUpDeltaFrames(_battleID, list);

        clientUdp.SendMessage(new Protocol(_msg));
    }
Example #2
0
    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;
        }
    }
Example #3
0
    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));
    }
Example #4
0
    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;
        }
    }