Example #1
0
        /// <summary>
        /// Update Player Objects
        /// </summary>
        /// <param name="p">Package Data</param>
        /// <param name="SentToServer">Sent data to server?</param>
        public void Update(Package p, bool SentToServer)
        {

            if (Network != null)
            {
                Network.LastValidMovement = DateTime.Now;
            }

            if (p.IsFullPackageData())
            {
                GameMode = p.DataItems[0];
                isGameJoltPlayer = p.DataItems[1].ToInt().Tobool();
                GameJoltID = isGameJoltPlayer ? p.DataItems[2].ToInt() : -1;
                DecimalSeparator = p.DataItems[3];
                Name = p.DataItems[4];
                LevelFile = p.DataItems[5];
                Position = p.DataItems[6];
                Facing = p.DataItems[7].ToInt();
                Moving = p.DataItems[8].ToInt().Tobool();
                Skin = p.DataItems[9];
                BusyType = p.DataItems[10].ToInt();
                PokemonVisible = p.DataItems[11].ToInt().Tobool();
                PokemonPosition = p.DataItems[12];
                PokemonSkin = p.DataItems[13];
                PokemonFacing = p.DataItems[14].ToInt();

                LastValidGameData = new List<string> { LevelFile, Position, Facing.ToString(), Moving.ToString(), Skin, BusyType.ToString(), PokemonVisible.ToString(), PokemonPosition, PokemonSkin, PokemonFacing.ToString() };
            }
            else
            {
                LastValidGameData = new List<string> { LevelFile, Position, Facing.ToString(), Moving.ToString(), Skin, BusyType.ToString(), PokemonVisible.ToString(), PokemonPosition, PokemonSkin, PokemonFacing.ToString() };

                if (!string.IsNullOrWhiteSpace(p.DataItems[5]) && p.DataItems[5].SplitCount() == 1)
                {
                    LevelFile = p.DataItems[5];
                }
                if (!string.IsNullOrWhiteSpace(p.DataItems[6]) && p.DataItems[6].SplitCount() == 3)
                {
                    Position = p.DataItems[6];
                }
                if (!string.IsNullOrWhiteSpace(p.DataItems[7]) && p.DataItems[7].SplitCount() == 1)
                {
                    Facing = p.DataItems[7].ToInt();
                }
                if (!string.IsNullOrWhiteSpace(p.DataItems[8]) && p.DataItems[8].SplitCount() == 1)
                {
                    Moving = p.DataItems[8].ToInt().Tobool();
                }
                if (!string.IsNullOrWhiteSpace(p.DataItems[9]) && p.DataItems[9].SplitCount() <= 2)
                {
                    Skin = p.DataItems[9];
                }
                if (!string.IsNullOrWhiteSpace(p.DataItems[10]) && p.DataItems[10].SplitCount() == 1)
                {
                    BusyType = p.DataItems[10].ToInt();
                }
                if (!string.IsNullOrWhiteSpace(p.DataItems[11]) && p.DataItems[11].SplitCount() == 1)
                {
                    PokemonVisible = p.DataItems[11].ToInt().Tobool();
                }
                if (!string.IsNullOrWhiteSpace(p.DataItems[12]) && p.DataItems[12].SplitCount() == 3)
                {
                    PokemonPosition = p.DataItems[12];
                }
                if (!string.IsNullOrWhiteSpace(p.DataItems[13]) && p.DataItems[13].SplitCount() <= 2)
                {
                    PokemonSkin = p.DataItems[13];
                }
                if (!string.IsNullOrWhiteSpace(p.DataItems[14]) && p.DataItems[14].SplitCount() == 1)
                {
                    PokemonFacing = p.DataItems[14].ToInt();
                }
            }

            // Sent To Server
            if (SentToServer)
            {
                Core.RCONPlayer.SendToAllPlayer(new RCON_Client_Listener.Packages.Package(RCON_Client_Listener.Packages.Package.PackageTypes.UpdatePlayer, $"{ID},{ToString()}", null));
                PlayerEvent.Invoke(PlayerEvent.Types.Update, $"{ID},{ToString()}");

                if (p.IsFullPackageData())
                {
                    Core.Player.SendToAllPlayer(new Package(Package.PackageTypes.GameData, ID, GenerateGameData(true), null));
                }
                else
                {
                    Core.Player.SendToAllPlayer(new Package(Package.PackageTypes.GameData, ID, GenerateGameData(false), null));
                }
            }
        }
        /// <summary>
        /// Update Player Data.
        /// </summary>
        /// <param name="Package">Package.</param>
        /// <param name="SentToServer">Sent to server?</param>
        public void Update(Package Package, bool SentToServer)
        {
            LastValidMovement = DateTime.Now;

            if (Package.IsFullPackageData())
            {
                GameMode = Package.DataItems[0];
                isGamejoltPlayer = Package.DataItems[1].ToInt().ToBool();
                GamejoltID = isGamejoltPlayer ? Package.DataItems[2].ToInt() : -1;
                DecimalSeparator = Package.DataItems[3];
                Name = Package.DataItems[4];
                LevelFile = Package.DataItems[5];
                Position = Package.DataItems[6];
                Facing = Package.DataItems[7].ToInt();
                Moving = Package.DataItems[8].ToInt().ToBool();
                Skin = Package.DataItems[9];
                BusyType = Package.DataItems[10].ToInt();
                PokemonVisible = Package.DataItems[11].ToInt().ToBool();
                PokemonPosition = Package.DataItems[12];
                PokemonSkin = Package.DataItems[13];
                PokemonFacing = Package.DataItems[14].ToInt();

                LastValidGameData = new List<string> { LevelFile, Position, Facing.ToString(), Moving.ToString(), Skin, BusyType.ToString(), PokemonVisible.ToString(), PokemonPosition, PokemonSkin, PokemonFacing.ToString() };
            }
            else
            {
                LastValidGameData = new List<string> { LevelFile, Position, Facing.ToString(), Moving.ToString(), Skin, BusyType.ToString(), PokemonVisible.ToString(), PokemonPosition, PokemonSkin, PokemonFacing.ToString() };

                if (!string.IsNullOrWhiteSpace(Package.DataItems[5]) && Package.DataItems[5].SplitCount() == 1)
                    LevelFile = Package.DataItems[5];

                if (!string.IsNullOrWhiteSpace(Package.DataItems[6]) && Package.DataItems[6].SplitCount() == 3)
                    Position = Package.DataItems[6];

                if (!string.IsNullOrWhiteSpace(Package.DataItems[7]) && Package.DataItems[7].SplitCount() == 1)
                    Facing = Package.DataItems[7].ToInt();

                if (!string.IsNullOrWhiteSpace(Package.DataItems[8]) && Package.DataItems[8].SplitCount() == 1)
                    Moving = Package.DataItems[8].ToInt().ToBool();

                if (!string.IsNullOrWhiteSpace(Package.DataItems[9]) && Package.DataItems[9].SplitCount() <= 2)
                    Skin = Package.DataItems[9];

                if (!string.IsNullOrWhiteSpace(Package.DataItems[10]) && Package.DataItems[10].SplitCount() == 1)
                    BusyType = Package.DataItems[10].ToInt();

                if (!string.IsNullOrWhiteSpace(Package.DataItems[11]) && Package.DataItems[11].SplitCount() == 1)
                    PokemonVisible = Package.DataItems[11].ToInt().ToBool();

                if (!string.IsNullOrWhiteSpace(Package.DataItems[12]) && Package.DataItems[12].SplitCount() == 3)
                    PokemonPosition = Package.DataItems[12];

                if (!string.IsNullOrWhiteSpace(Package.DataItems[13]) && Package.DataItems[13].SplitCount() <= 2)
                    PokemonSkin = Package.DataItems[13];

                if (!string.IsNullOrWhiteSpace(Package.DataItems[14]) && Package.DataItems[14].SplitCount() == 1)
                    PokemonFacing = Package.DataItems[14].ToInt();
            }

            if (SentToServer)
            {
                if (Package.IsFullPackageData())
                    Core.PlayerCollection.SendToAllPlayer(new Package(Package.PackageTypes.GameData, ID, GenerateGameData(true), null));
                else
                    Core.PlayerCollection.SendToAllPlayer(new Package(Package.PackageTypes.GameData, ID, GenerateGameData(false), null));
            }
        }