public void FromBytes(byte[] data, ref int offset) { PlayerID = new PlayerIDData(data, ref offset).PlayerID; EP = new IPEPData(data, ref offset).EP; }
public void FromBytes(byte[] data, ref int offset) { PlayerID = new PlayerIDData(data, ref offset).PlayerID; UdpConnectKey = new byte[8]; Array.Copy(data, offset, UdpConnectKey, 0, 8); offset += 8; }
public void FromBytes(byte[] data, ref int offset) { PlayerID = new PlayerIDData(data, ref offset).PlayerID; Setup = new PlayerSetupData(data, ref offset).Setup; }
protected override void HandleMessage(TypedPackage message) { Debug.Log(string.Format("Msg: {0} of length {1}.", message.Type, message.Data.Length)); if (message.Type == PackageType.LoginSucceed) { try { LoginSucceedData data = new LoginSucceedData(message.Data, ref message.Offset); _playerID = data.PlayerID; _udpConnectionKey = data.UdpConnectKey; OnLogedIn(); } catch (Exception e) { Debug.Log("Failed to parse: " + e.ToString()); } BeginUdpRegister(); } else if (message.Type == PackageType.LoginFailed) { OnLoginFailed(); } else if (message.Type == PackageType.RoomCreated) { OnCreatedRoom(); } else if (message.Type == PackageType.JoinedRoom) { JoinedRoomInfoData data; try { data = new JoinedRoomInfoData(message.Data, ref message.Offset); ConnectedRoom = data.Room; OnJoinedRoom(); } catch (Exception e) { Debug.Log("Failed to parse data: " + e.Message + " | " + e.TargetSite + " | " + e.StackTrace); } } else if (message.Type == PackageType.RoomList) { RoomListData data = new RoomListData(message.Data, ref message.Offset); OpenRooms = data.Rooms; OnReceivedRooms(); } else if (message.Type == PackageType.OtherJoinedRoom) { RoomPlayerInfo playerInfo = new RoomPlayerData(message.Data, ref message.Offset).Player; ConnectedRoom.Players.Add(playerInfo); OnOtherJoinedRoom(playerInfo); } else if (message.Type == PackageType.OtherLeftRoom) { PlayerIDData playerInfo = new PlayerIDData(message.Data, ref message.Offset); RoomPlayerInfo player = null; for (int i = ConnectedRoom.Players.Count - 1; i >= 0; i--) { if (ConnectedRoom.Players[i].PlayerID == playerInfo.PlayerID) { player = ConnectedRoom.Players[i]; ConnectedRoom.Players.RemoveAt(i); break; } } if (player != null) OnOtherLeftRoom(player); else Debug.Log("Could not find player to remove"); } else if (message.Type == PackageType.OtherChangedSetup) { // Parse OtherPlayerSetupData info = new OtherPlayerSetupData(message.Data, ref message.Offset); // Find player of id RoomPlayerInfo foundPlayer = null; foreach (RoomPlayerInfo player in ConnectedRoom.Players) { if (player.PlayerID == info.PlayerID) { foundPlayer = player; break; } } // Change setup of player if (foundPlayer != null) { foundPlayer.Setup = info.Setup; OnOtherChangedSetup(); } else { Debug.Log("Could not find player to remove"); } } else if (message.Type == PackageType.UDPRegistered) { _udpRegistered = true; } else if (message.Type == PackageType.RoomLoad) { RoomUdpSetupData msg = new RoomUdpSetupData(message.Data, ref message.Offset); // Assign udp settings foreach (PlayerUdpSetupData playerUDP in msg.UdpPlayerList) { foreach (RoomPlayerInfo player in ConnectedRoom.Players) { if (player.PlayerID == playerUDP.PlayerID) { player.UdpEP = playerUDP.EP; break; } } } OnGameLoad(); } else if (message.Type == PackageType.RoomStart) { OnGameStart(); } else { base.HandleMessage(message); } }