public void Deserialize(NetDataReader reader)
 {
     PlayerId           = reader.GetByte();
     Metadata           = reader.Get <PlayerMetadata>();
     PlayerState        = reader.Get <PlayerState>();
     NetworkObjectState = reader.Get <NetworkObjectState>();
 }
Example #2
0
 public void Deserialize(NetDataReader reader)
 {
     ID      = reader.GetKey32();
     Secret  = reader.GetJoinSecret();
     MaxSize = reader.GetByte();
     Level   = reader.Get <LevelChangeMessage>();
     Players = new PlayerJoinMessage[reader.GetByte()];
     for (var i = 0; i < Players.Length; ++i)
     {
         Players[i] = reader.Get <PlayerJoinMessage>();
     }
 }
Example #3
0
        public static void LoadServerData()
        {
            string path = GameConfig.gameSaveFolder + DSPGame.LoadFile + FILE_EXTENSION;

            PlayerManager playerManager = MultiplayerHostSession.Instance.PlayerManager;

            if (!File.Exists(path) || playerManager == null)
            {
                return;
            }

            byte[]        source        = File.ReadAllBytes(path);
            NetDataReader netDataReader = new NetDataReader(source);
            int           playerNum     = netDataReader.GetInt();

            using (playerManager.GetSavedPlayerData(out var savedPlayerData))
            {
                for (int i = 0; i < playerNum; i++)
                {
                    string     hash       = netDataReader.GetString();
                    PlayerData playerData = netDataReader.Get <PlayerData>();
                    if (!savedPlayerData.ContainsKey(hash))
                    {
                        savedPlayerData.Add(hash, playerData);
                    }
                }
            }
        }
Example #4
0
 public void Deserialize(NetDataReader reader)
 {
     Error       = reader.GetString();
     Success     = reader.GetByte();
     ArmyId      = reader.GetInt();
     Destination = reader.Get <Coord>();
 }
Example #5
0
        public void Deserialize(NetDataReader reader)
        {
            var playerCount = reader.GetByte();

            Players = new Dictionary <byte, Timestamped <PlayerTransformsMessage> >(playerCount);

            for (var i = 0; i < playerCount; ++i)
            {
                Players.Add(reader.GetByte(), reader.Get <Timestamped <PlayerTransformsMessage> >());
            }
        }
    public static T[] GetArray <T>(this NetDataReader reader) where T : INetSerializable, new()
    {
        var len   = reader.GetUShort();
        var array = new T[len];

        for (int i = 0; i < len; i++)
        {
            array[i] = reader.Get <T>();
        }
        return(array);
    }
Example #7
0
        public static bool TryGet <TMessage>(this NetDataReader @this, out TMessage value) where TMessage : INetSerializable, new()
        {
            try
            {
                value = @this.Get <TMessage>();
            }
            catch
            {
                value = default;
                return(false);
            }

            return(true);
        }
Example #8
0
        public void Deserialize(NetDataReader reader)
        {
            BattleId      = Guid.Parse(reader.GetString());
            CurrentArmyId = reader.GetInt();
            CurrentUnitId = reader.GetInt();

            var armiesLength = reader.GetUShort();

            Armies = new ArmyParams[armiesLength];
            for (int i = 0; i < armiesLength; i++)
            {
                Armies[i] = reader.Get <ArmyParams>();
            }

            GameId     = reader.GetInt();
            GameString = reader.GetString();
        }
Example #9
0
        private void OnUpdatePlayerInfo(UpdatePlayerInfoPacket packet, NetPeer peer)
        {
            if (!Servers.TryGetValue(peer, out NPServer server))
            {
                return;
            }

            if (!server.PlayersDictionary.ContainsKey(packet.UserID))
            {
                server.PlayersDictionary.Add(packet.UserID, new NPPlayer(server, packet.UserID));
            }

            if (!server.PlayersDictionary.TryGetValue(packet.UserID, out NPPlayer player))
            {
                return;
            }

            NetDataReader reader = new NetDataReader(packet.Data);

            switch ((PlayerDataType)packet.Type)
            {
            case PlayerDataType.Nickname:
                player.Nickname = reader.GetString();
                break;

            case PlayerDataType.Role:
                player.Role = (PlayerRole)reader.GetUShort();
                break;

            case PlayerDataType.DoNotTrack:
                player.DoNotTrack = reader.GetBool();
                break;

            case PlayerDataType.RemoteAdminAccess:
                player.RemoteAdminAccess = reader.GetBool();
                break;

            case PlayerDataType.Overwatch:
                player.IsOverwatchEnabled = reader.GetBool();
                break;

            case PlayerDataType.IPAddress:
                player.IPAddress = reader.GetString();
                break;

            case PlayerDataType.Mute:
                player.IsMuted = reader.GetBool();
                break;

            case PlayerDataType.IntercomMute:
                player.IsIntercomMuted = reader.GetBool();
                break;

            case PlayerDataType.Godmode:
                player.IsGodModeEnabled = reader.GetBool();
                break;

            case PlayerDataType.Health:
                player.Health = reader.GetFloat();
                break;

            case PlayerDataType.MaxHealth:
                player.MaxHealth = reader.GetInt();
                break;

            case PlayerDataType.GroupName:
                player.GroupName = reader.GetString();
                break;

            case PlayerDataType.RankColor:
                player.RankColor = reader.GetString();
                break;

            case PlayerDataType.RankName:
                player.RankName = reader.GetString();
                break;

            case PlayerDataType.Position:
                player.Position = reader.Get <Position>();
                break;

            case PlayerDataType.Rotation:
                player.Rotation = reader.Get <Rotation>();
                break;

            case PlayerDataType.PlayerID:
                player.PlayerID = reader.GetInt();
                break;
            }
        }
Example #10
0
 public void Deserialize(NetDataReader reader)
 {
     ID         = reader.GetByte();
     Transforms = reader.Get <Timestamped <PlayerTransformsMessage> >();
 }
Example #11
0
 public void Deserialize(NetDataReader reader)
 {
     Item = reader.Get <TransformMessage>();
 }
 public void Deserialize(NetDataReader reader)
 {
     ArmyId      = reader.GetInt();
     Destination = reader.Get <Coord>();
 }
Example #13
0
 public void Deserialize(NetDataReader reader)
 {
     Timestamp = reader.GetDouble();
     Content   = reader.Get <TContent>();
 }
 public void Deserialize(NetDataReader reader)
 {
     Head      = reader.Get <TransformMessage>();
     HandLeft  = reader.Get <TransformMessage>();
     HandRight = reader.Get <TransformMessage>();
 }
Example #15
0
        public static void LoadServerData()
        {
            string path = GameConfig.gameSaveFolder + DSPGame.LoadFile + FILE_EXTENSION;

            IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager;

            if (!File.Exists(path) || playerManager == null)
            {
                return;
            }

            byte[]        source        = File.ReadAllBytes(path);
            NetDataReader netDataReader = new NetDataReader(source);
            ushort        revision      = 0;

            try
            {
                string revString = netDataReader.GetString();
                if (revString != "REV")
                {
                    throw new System.Exception();
                }

                revision = netDataReader.GetUShort();
                Log.Info($"Loading server data, revision {revision}");
                if (revision != REVISION)
                {
                    // Supported revision: 4~6
                    if (revision < 4 || revision > REVISION)
                    {
                        throw new System.Exception();
                    }
                }
            }
            catch (System.Exception)
            {
                Log.Warn("Skipping server data from unsupported Nebula version...");
                return;
            }

            int playerNum = netDataReader.GetInt();

            using (playerManager.GetSavedPlayerData(out Dictionary <string, IPlayerData> savedPlayerData))
            {
                for (int i = 0; i < playerNum; i++)
                {
                    string     hash       = netDataReader.GetString();
                    PlayerData playerData = null;
                    if (revision == REVISION)
                    {
                        playerData = netDataReader.Get <PlayerData>();
                    }
                    else if (revision == 4)
                    {
                        playerData = new PlayerData();
                        playerData.Deserialize_4(netDataReader);
                    }
                    else if (revision == 5)
                    {
                        playerData = new PlayerData();
                        playerData.Deserialize_5(netDataReader);
                    }

                    if (!savedPlayerData.ContainsKey(hash) && playerData != null)
                    {
                        savedPlayerData.Add(hash, playerData);
                    }
                    else if (playerData == null)
                    {
                        Log.Warn($"could not load player data from unsupported save file revision {revision}");
                    }
                }
            }
        }