示例#1
0
        private byte[] SaveTrainerInfo(uint version)
        {
            List <byte> data = new List <byte>();

            playTime    += new TimeSpan((DateTime.Now - lastSaveTime).Ticks);
            lastSaveTime = DateTime.Now;

            byte[] seenData = new byte[50];
            ByteHelper.SetBits(seenData, 0, 0, new BitArray(pokedexSeen));
            byte[] ownedData = new byte[50];
            ByteHelper.SetBits(ownedData, 0, 0, new BitArray(pokedexOwned));

            /* 0 */ data.AddRange(GBACharacterEncoding.GetBytes(trainerName, 7));
            /* 7 */ data.Add((byte)trainerGender);
            /* 8 */ data.AddRange(BitConverter.GetBytes(trainerID));
            /* 10 */ data.AddRange(BitConverter.GetBytes(secretID));
            /* 12 */ data.AddRange(BitConverter.GetBytes(playTime.Ticks));

            /* 20 */ data.AddRange(BitConverter.GetBytes(money));
            /* 24 */ data.AddRange(BitConverter.GetBytes(coins));
            /* 28 */ data.AddRange(BitConverter.GetBytes(battlePoints));
            /* 32 */ data.AddRange(BitConverter.GetBytes(pokeCoupons));
            /* 36 */ data.AddRange(BitConverter.GetBytes(volcanicAsh));

            /* 40 */ data.AddRange(seenData);
            /* 90 */ data.AddRange(ownedData);

            return(data.ToArray());
        }
示例#2
0
        private void LoadTrainerInfo(uint version, byte[] data)
        {
            if (version >= 1)
            {
                trainerName   = GBACharacterEncoding.GetString(ByteHelper.SubByteArray(0, data, 7));
                trainerGender = (Genders)data[7];
                trainerID     = LittleEndian.ToUInt16(data, 8);
                secretID      = LittleEndian.ToUInt16(data, 10);
                playTime      = TimeSpan.FromTicks(LittleEndian.ToSInt64(data, 12));
                lastSaveTime  = DateTime.Now;

                money        = LittleEndian.ToUInt32(data, 20);
                coins        = LittleEndian.ToUInt32(data, 24);
                battlePoints = LittleEndian.ToUInt32(data, 28);
                pokeCoupons  = LittleEndian.ToUInt32(data, 32);
                volcanicAsh  = LittleEndian.ToUInt32(data, 36);

                BitArray seen  = ByteHelper.GetBits(data, 40, 0, 386);
                BitArray owned = ByteHelper.GetBits(data, 90, 0, 386);
                for (int i = 0; i < 386; i++)
                {
                    pokedexSeen[i] = seen[i];
                }
                for (int i = 0; i < 386; i++)
                {
                    pokedexOwned[i] = owned[i];
                }
            }
        }
示例#3
0
        private void OnNameChanged(object sender, TextChangedEventArgs e)
        {
            if (!loaded)
            {
                return;
            }

            newNameRaw = GBACharacterEncoding.GetBytes(textBoxName.Text, 7, newLanguage);
        }
        private void OnSaveClicked(object sender, RoutedEventArgs e)
        {
            byte[] trainerNameBytes = GBACharacterEncoding.GetBytes(trainerName, 7);
            string newTrainerName   = GBACharacterEncoding.GetString(trainerNameBytes);
            bool   setName          = newTrainerName != gameSave.TrainerName;
            bool   setGender        = trainerGender != gameSave.TrainerGender;

            if (setName || setGender)
            {
                MessageBoxResult result = TriggerMessageBox.Show(this, "Warning: Renaming a trainer or changing their gender will also change the OT Trainer of every Pokémon caught by this trainer in all saves. Are you sure you want to continue?", "Warning", MessageBoxButton.YesNo);
                //if (result == MessageBoxResult.Yes && (gameSave.GameType == GameTypes.Ruby || gameSave.GameType == GameTypes.Sapphire || gameSave.GameType == GameTypes.Emerald))
                //	result = TriggerMessageBox.Show(this, "Warning: Certain scripts may act incorrectly if you change your gender. This includes after you beat the Elite Four where you will get stuck in a wall. Are you sure you want to continue?", "Warning", MessageBoxButton.YesNo);

                if (result == MessageBoxResult.Yes)
                {
                    if (setName)
                    {
                        gameSave.TrainerName = GBACharacterEncoding.CheckString(newTrainerName, gameSave.IsJapanese ? Languages.Japanese : Languages.English);
                    }
                    if (setGender)
                    {
                        gameSave.TrainerGender = trainerGender;
                    }

                    for (int i = -1; i < PokeManager.NumGameSaves; i++)
                    {
                        IGameSave newGameSave = PokeManager.GetGameSaveAt(i);
                        if (newGameSave is ManagerGameSave)
                        {
                            for (int j = 0; j < (newGameSave as ManagerGameSave).NumPokePCRows; j++)
                            {
                                foreach (IPokemon pokemon in (newGameSave as ManagerGameSave).GetPokePCRow(j))
                                {
                                    if (pokemon.TrainerID == gameSave.TrainerID && pokemon.SecretID == gameSave.SecretID)
                                    {
                                        if (setName)
                                        {
                                            pokemon.TrainerName = newTrainerName;
                                        }
                                        if (setGender)
                                        {
                                            pokemon.TrainerGender = trainerGender;
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            foreach (IPokemon pokemon in newGameSave.PokePC)
                            {
                                if (pokemon.TrainerID == gameSave.TrainerID && pokemon.SecretID == gameSave.SecretID)
                                {
                                    if (setName)
                                    {
                                        pokemon.TrainerName = newTrainerName;
                                    }
                                    if (setGender)
                                    {
                                        pokemon.TrainerGender = trainerGender;
                                    }
                                }
                            }
                        }
                    }
                    gameSave.IsChanged = true;
                    PokeManager.RefreshUI();
                }
            }
            DialogResult = true;
        }