Example #1
0
 public void FromBytes(byte[] data, ref int offset)
 {
     PlayerID = new PlayerIDData(data, ref offset).PlayerID;
     EP = new IPEPData(data, ref offset).EP;
 }
Example #2
0
    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;
    }
Example #3
0
 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);
        }
    }