Exemple #1
0
        public override PokemonInstance DeserializePokemonInstance(Stream stream)
        {
            byte[] buffer;

            int          speciesId, natureId, experience, health;
            Guid         guid, originalTrainerGuid;
            bool         cheatPokemon;
            string       nickname, originalTrainerName;
            Item         heldItem;
            bool?        gender;
            int          pokeBallId;
            long         catchTime;
            Stats <byte> effortValues, individualValues;
            Stats <int>  currentStats;
            byte         friendship;

            int[]  moveIds;
            byte[] movePPs;
            PokemonInstance.NonVolatileStatusCondition nonVolatileStatusCondition;

            buffer = new byte[4];
            stream.Read(buffer, 0, 4);
            speciesId = BitConverter.ToInt32(buffer, 0);

            buffer = new byte[16];
            stream.Read(buffer, 0, 16);
            guid = new Guid(buffer);

            nickname = DeserializeString(stream);

            heldItem = DeserializeItem(stream);

            gender = DeserializeNullableBool(stream);

            buffer = new byte[4];
            stream.Read(buffer, 0, 4);
            pokeBallId = BitConverter.ToInt32(buffer, 0);

            buffer = new byte[8];
            stream.Read(buffer, 0, 8);
            catchTime = BitConverter.ToInt64(buffer, 0);

            originalTrainerName = DeserializeString(stream);

            buffer = new byte[16];
            stream.Read(buffer, 0, 16);
            originalTrainerGuid = new Guid(buffer);

            cheatPokemon = DeserializeBool(stream);

            effortValues = DeserializeByteStats(stream);

            individualValues = DeserializeByteStats(stream);

            buffer = new byte[4];
            stream.Read(buffer, 0, 4);
            natureId = BitConverter.ToInt32(buffer, 0);

            currentStats = DeserializeIntStats(stream);

            buffer = new byte[1];
            stream.Read(buffer, 0, 1);
            friendship = buffer[0];

            moveIds = new int[4];
            for (int i = 0; i < 4; i++)
            {
                buffer = new byte[4];
                stream.Read(buffer, 0, 4);
                moveIds[i] = BitConverter.ToInt32(buffer, 0);
            }

            movePPs = new byte[4];
            for (int i = 0; i < 4; i++)
            {
                buffer = new byte[1];
                stream.Read(buffer, 0, 1);
                movePPs[i] = buffer[0];
            }

            buffer = new byte[4];
            stream.Read(buffer, 0, 4);
            experience = BitConverter.ToInt32(buffer, 0);

            buffer = new byte[4];
            stream.Read(buffer, 0, 4);
            nonVolatileStatusCondition = (PokemonInstance.NonVolatileStatusCondition)BitConverter.ToInt32(buffer, 0);

            buffer = new byte[4];
            stream.Read(buffer, 0, 4);
            health = BitConverter.ToInt32(buffer, 0);

            return(PokemonFactory.GenerateFull(
                       speciesId: speciesId,
                       natureId: natureId,
                       effortValues: effortValues,
                       individualValues: individualValues,
                       _moves: moveIds,
                       movePPs: movePPs,
                       experience: experience,
                       nonVolatileStatusCondition: nonVolatileStatusCondition,
                       null,
                       _guid: guid,
                       nickname: nickname,
                       heldItem: heldItem,
                       _health: health,
                       gender: gender,
                       currentStats: currentStats,
                       pokeBallId: pokeBallId,
                       originalTrainerName: originalTrainerName,
                       _originalTrainerGuid: originalTrainerGuid,
                       cheatPokemon: cheatPokemon,
                       catchTime: catchTime,
                       _friendship: friendship));
        }