Пример #1
0
 public abstract void DeserializePlayerPartyAndStorageSystemPokemon(Stream stream,
                                                                    out PokemonInstance[] partyPokemon,
                                                                    out PlayerData.PokemonStorageSystem storageSystem);
Пример #2
0
        public override void DeserializePlayerPartyAndStorageSystemPokemon(Stream stream, out PokemonInstance[] partyPokemon, out PlayerData.PokemonStorageSystem storageSystem)
        {
            byte[] buffer;

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

            //Pokemon list

            List <PokemonInstance> pokemonList = new List <PokemonInstance>();

            for (int i = 0; i < pokemonCount; i++)
            {
                PokemonInstance newPokemon = DeserializePokemonInstance(stream);
                pokemonList.Add(newPokemon);
            }

            //Party pokemon

            partyPokemon = new PokemonInstance[PlayerData.partyCapacity];

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

                if (pokeIndex < 0)
                {
                    partyPokemon[i] = null;
                }
                else
                {
                    partyPokemon[i] = pokemonList[pokeIndex];
                }
            }

            //Storage system

            PokemonInstance[][] boxes = new PokemonInstance[PlayerData.PokemonStorageSystem.boxCount][];

            for (int boxIndex = 0; boxIndex < PlayerData.PokemonStorageSystem.boxCount; boxIndex++)
            {
                PokemonInstance[] box = new PokemonInstance[PlayerData.PokemonBox.size];

                for (int slotIndex = 0; slotIndex < PlayerData.PokemonBox.size; slotIndex++)
                {
                    buffer = new byte[4];
                    stream.Read(buffer, 0, 4);
                    int pokeIndex = BitConverter.ToInt32(buffer, 0);

                    if (pokeIndex < 0)
                    {
                        box[slotIndex] = null;
                    }
                    else
                    {
                        box[slotIndex] = pokemonList[pokeIndex];
                    }
                }

                boxes[boxIndex] = box;
            }

            storageSystem = new PlayerData.PokemonStorageSystem(boxes);
        }