void _RPC_NotifyGameStart(IPEndPoint remote, byte[] bytes) { // Debuger.Log(LOG_TAG, "_RPC_NotifyGameStart()"); FSPGameStartParam data = PBSerializer.Deserialize <FSPGameStartParam>(bytes); PVPStartParam startParam = new PVPStartParam(); startParam.fspParam = data.fspParam; startParam.gameParam = PBSerializer.Deserialize <GameParam>(data.customGameParam); for (int i = 0; i < data.players.Count; i++) { FSPPlayerData player = data.players[i]; byte[] buff = player.customPlayerData; PlayerData pb = PBSerializer.Deserialize <PlayerData>(buff); pb.playerID = (int)player.id; pb.userID = (uint)player.userId; pb.userName = player.name; pb.teamID = (int)player.id; startParam.players.Add(pb); Debuger.Log(LOG_TAG, "_RPC_NotifyGameStart: {0}", pb.ToString()); } // EventManager.Instance.SendEvent<PVPStartParam>("OnGameStart", startParam); }
private void onConnect(long peerId) { Debug.Assert(!peerToCodec.ContainsKey(peerId)); var data = new PeerData(); peerToCodec[peerId] = data; Global.RoomPID.Tell(new RoomCmdEnter { peerId = peerId }); data.codec.FrameCb = frame => { try { var msg = PBSerializer.Deserialize(typeDb, frame); Global.RoomPID.Tell(new RoomCmdMsg { msg = msg, peerId = peerId }); } catch (Exception e) { this.Fatal(e.ToString()); } }; }
//===================================================================== #region 消息接收: ACK, SYN, Broadcast void OnReceive(byte[] buffer, int size, IPEndPoint remotePoint) { try { var msg = PBSerializer.Deserialize <RPCMessage>(buffer); HandleRPCMessage(msg, remotePoint); } catch (Exception e) { Debuger.LogError(LOG_TAG, "OnReceive()->HandleMessage->Error:" + e.Message + "\n" + e.StackTrace); } }
void OnReceive(byte[] buffer, int size, IPEndPoint remotePoint) { FSPData_CS data = PBSerializer.Deserialize<FSPData_CS>(buffer); FSPSession session = GetSession(data.sid); if (session == null) { Debuger.LogWarning(LOG_TAG_RECV, "DoReceive() 收到一个未知的SID = " + data.sid); return; } session.EndPoint = remotePoint; session.Receive(data); }
public UDPSession() { codec = new FrameCodec(); typeDb = new PBTypeDB(Assembly.GetExecutingAssembly()); cli = new UDPClient(); cli.OnConnect = peerId => { Debug.Assert(this.peerId == 0); Connecting = false; Connected = true; this.peerId = peerId; OnConnect?.Invoke(); }; cli.OnDisconnect = peerId => { Debug.Assert(this.peerId == peerId); Connecting = false; Connected = false; this.peerId = 0; OnDisconnect?.Invoke(); }; cli.OnReceive = (peerId, bytes, channelId) => { Debug.Assert(this.peerId == peerId); codec.Feed(bytes); }; codec.FrameCb = frame => { try { var msg = PBSerializer.Deserialize(typeDb, frame); OnMsg?.Invoke(msg); } catch (Exception e) { this.Fatal("{0}:{1}", peerId, e.ToString()); } }; }
void OnReceive(byte[] buffer, int size, IPEndPoint remotePoint) { if (m_RecvListener != null) { FSPData_SC data = PBSerializer.Deserialize <FSPData_SC>(buffer); var frames = data.frames; for (int i = 0; i < frames.Count; i++) { m_RecvListener(frames[i]); } } else { Debuger.LogWarning(LOG_TAG, "no receive listener!"); } }
void _RPC_UpdateRoomInfo(IPEndPoint remote, byte[] bytes) { FSPRoomData data = PBSerializer.Deserialize <FSPRoomData>(bytes); m_listPlayerInfo = data.players; m_isInRoom = false; m_isReady = false; for (int i = 0; i < m_listPlayerInfo.Count; ++i) { if (m_listPlayerInfo[i].userId == m_mainUserId) { m_isInRoom = true; m_isReady = m_listPlayerInfo[i].isReady; } } EventManager.Instance.SendEvent("OnRoomUpdate"); }
static FSPParam CloneParam(FSPParam param) { byte[] bytes = PBSerializer.Serialize(param); return PBSerializer.Deserialize<FSPParam>(bytes); }