示例#1
0
    public void AnalyzeMessage(SCID messageId, byte[] bodyData)
    {
        switch (messageId)
        {
        case SCID.UDP_BATTLE_START:
        {
            UdpBattleStart pb_ReceiveMes = CSData.DeserializeData <UdpBattleStart>(bodyData);
            NetGlobal.Instance().AddAction(() => {
                    mes_battle_start(pb_ReceiveMes);
                });
        }
        break;

        case SCID.UDP_DOWN_FRAME_OPERATIONS:
        {
            UdpDownFrameOperations pb_ReceiveMes = CSData.DeserializeData <UdpDownFrameOperations>(bodyData);
            NetGlobal.Instance().AddAction(() => {
                    mes_frame_operation(pb_ReceiveMes);
                });
        }
        break;

        case SCID.UDP_DOWN_DELTA_FRAMES:
        {
            UdpDownDeltaFrames pb_ReceiveMes = CSData.DeserializeData <UdpDownDeltaFrames>(bodyData);
            NetGlobal.Instance().AddAction(() => {
                    mes_delta_frame_data(pb_ReceiveMes);
                });
        }
        break;

        case SCID.UDP_DOWN_GAME_OVER:
        {
            UdpDownGameOver pb_ReceiveMes = CSData.DeserializeData <UdpDownGameOver>(bodyData);
            NetGlobal.Instance().AddAction(() => {
                    mes_down_game_over(pb_ReceiveMes);
                });
        }
        break;

        default:
            break;
        }
    }
示例#2
0
 void Message_Battle_Start(UdpBattleStart _mes)
 {
     BattleStart();
 }
示例#3
0
    private void Thread_SendFrameData()
    {
        //向玩家发送战斗开始
        bool isFinishBS = false;

        while (!isFinishBS)
        {
            UdpBattleStart _btData = new UdpBattleStart();
            byte[]         _data   = CSData.GetSendMessage <UdpBattleStart> (_btData, SCID.UDP_BATTLE_START);
            foreach (var item in dic_udp)
            {
                item.Value.SendMessage(_data);
            }

            bool _allData = true;
            for (int i = 0; i < frameOperation.Length; i++)
            {
                if (frameOperation[i] == null)
                {
                    _allData = false;
                    break;
                }
            }

            if (_allData)
            {
                LogManage.Instance.AddLog("战斗服务器:收到全部玩家的第一次操作数据....");
                frameNum = 1;

                isFinishBS = true;
            }

            Thread.Sleep(500);
        }

        LogManage.Instance.AddLog("开始发送帧数据~~~~");

        while (_isRun)
        {
            UdpDownFrameOperations _dataPb = new UdpDownFrameOperations();
            if (oneGameOver)
            {
                _dataPb.frameID    = lastFrame;
                _dataPb.operations = dic_gameOperation [lastFrame];
            }
            else
            {
                _dataPb.operations = new AllPlayerOperation();
                _dataPb.operations.operations.AddRange(frameOperation);
                _dataPb.frameID = frameNum;
                dic_gameOperation [frameNum] = _dataPb.operations;
                lastFrame = frameNum;
                frameNum++;
            }

            byte[] _data = CSData.GetSendMessage <UdpDownFrameOperations> (_dataPb, SCID.UDP_DOWN_FRAME_OPERATIONS);
            foreach (var item in dic_udp)
            {
                int _index = item.Key - 1;
                if (!playerGameOver [_index])
                {
                    item.Value.SendMessage(_data);
                }
            }

            Thread.Sleep(ServerConfig.frameTime);
        }

        LogManage.Instance.AddLog("帧数据发送线程结束.....................");
    }