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; } }
void Message_Battle_Start(UdpBattleStart _mes) { BattleStart(); }
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("帧数据发送线程结束....................."); }