private void OnChangeGameType(object sender, RoutedEventArgs e)
 {
     if ((selectedGameSave.GameSave.GameType == GameTypes.Ruby || selectedGameSave.GameSave.GameType == GameTypes.Sapphire ||
          selectedGameSave.GameSave.GameType == GameTypes.FireRed || selectedGameSave.GameType == GameTypes.LeafGreen ||
          selectedGameSave.GameSave.GameType == GameTypes.Emerald) && selectedGameSave.GameSave is GBAGameSave)
     {
         var results = SelectGameTypeFullWindow.ShowDialog(this, selectedGameSave.IsJapanese);
         if (results != null)
         {
             GameTypes        gameType     = results.GameType;
             MessageBoxResult result       = MessageBoxResult.Yes;
             bool             reloadNeeded = false;
             if (((selectedGameSave.GameSave.GameType == GameTypes.Ruby || selectedGameSave.GameSave.GameType == GameTypes.Sapphire) && (gameType != GameTypes.Ruby && gameType != GameTypes.Sapphire)) ||
                 ((selectedGameSave.GameSave.GameType == GameTypes.FireRed || selectedGameSave.GameSave.GameType == GameTypes.LeafGreen) && (gameType != GameTypes.FireRed && gameType != GameTypes.LeafGreen)) ||
                 (selectedGameSave.GameSave.GameType == GameTypes.Emerald && gameType != GameTypes.Emerald))
             {
                 result = TriggerMessageBox.Show(this, "In order to change the game type to this the save must be reloaded. Are you sure you want to reload this save? Any unsaved changes will be lost.", "Reload Needed", MessageBoxButton.YesNo);
                 if (result == MessageBoxResult.Yes)
                 {
                     reloadNeeded = true;
                 }
             }
             if (result == MessageBoxResult.Yes)
             {
                 selectedGameSave.GameType            = gameType;
                 selectedGameSave.IsJapanese          = results.IsJapanese;
                 selectedGameSave.GameSave.IsJapanese = results.IsJapanese;
                 ((GBAGameSave)selectedGameSave.GameSave).GameType = gameType;
                 FillListViewItem(selectedGameSave, gameSaves[selectedIndex]);
                 if (reloadNeeded)
                 {
                     try {
                         PokeManager.ReloadGameSave(selectedGameSave);
                     }
                     catch (Exception ex) {
                         result = TriggerMessageBox.Show(this, "Error loading save after changing game type, this may not be the correct game type for it. Would you like to see the error?", "Load Error", MessageBoxButton.YesNo);
                         if (result == MessageBoxResult.Yes)
                         {
                             ErrorMessageBox.Show(ex);
                         }
                     }
                 }
             }
         }
     }
     else
     {
         // No need
         TriggerMessageBox.Show(this, "Only one game type applies to this save");
     }
 }
        public static GameTypeResults ShowDialog(Window owner, bool isJapanese)
        {
            SelectGameTypeFullWindow form = new SelectGameTypeFullWindow(isJapanese);
            form.Owner = owner;
            form.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            var dialogResult = form.ShowDialog();

            if (dialogResult.HasValue && dialogResult.Value) {
                GameTypeResults results = new GameTypeResults();
                results.GameType = form.result;
                results.IsJapanese = form.isJapanese;
                return results;
            }
            return null;
        }
Пример #3
0
        public static GameTypeResults ShowDialog(Window owner, bool isJapanese)
        {
            SelectGameTypeFullWindow form = new SelectGameTypeFullWindow(isJapanese);

            form.Owner = owner;
            form.WindowStartupLocation = WindowStartupLocation.CenterOwner;
            var dialogResult = form.ShowDialog();

            if (dialogResult.HasValue && dialogResult.Value)
            {
                GameTypeResults results = new GameTypeResults();
                results.GameType   = form.result;
                results.IsJapanese = form.isJapanese;
                return(results);
            }
            return(null);
        }
        private void OnAddSaveClicked(object sender, RoutedEventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();

            fileDialog.Title  = "Add Generation III Save";
            fileDialog.Filter = "GBA and GameCube Saves (*.sav, *.gci)|*.sav;*.gci|GBA Saves (*.sav)|*.sav|GameCube Saves (*.gci)|*.gci|All Files (*.*)|*.*";
            var result = fileDialog.ShowDialog(this);

            if (result.HasValue && result.Value)
            {
                string filePath = fileDialog.FileName;

                filePath = System.IO.Path.GetFullPath(filePath);
                foreach (ListViewItem item in gameSaves)
                {
                    GameSaveFileInfo save = item.Tag as GameSaveFileInfo;
                    if (filePath.ToLower() == System.IO.Path.GetFullPath(save.FilePath).ToLower())
                    {
                        TriggerMessageBox.Show(this, "This game save already exists", "Already Exists");
                        return;
                    }
                }

                try {
                    FileInfo         fileInfo = new FileInfo(filePath);
                    GameSaveFileInfo gameSaveFile;
                    GameTypes        gameType   = GameTypes.Any;
                    bool             isJapanese = false;
                    if (fileInfo.Length == 131072 || fileInfo.Length == 65536 || fileInfo.Length == 139264)
                    {
                        var results = SelectGameTypeFullWindow.ShowDialog(this, false);
                        if (results != null)
                        {
                            gameType   = results.GameType;
                            isJapanese = results.IsJapanese;
                        }
                    }
                    gameSaveFile = PokeManager.MakeNewGameSaveFileInfo(filePath, gameType, isJapanese);

                    ListViewItem listViewItem = new ListViewItem();
                    FillListViewItem(gameSaveFile, listViewItem);
                    gameSaves.Add(listViewItem);

                    listViewGameSaves.SelectedIndex = listViewGameSaves.Items.Count - 1;
                    // Hackish thing to make sure the list view is always scrolled at the bottom when adding a new box
                    //http://stackoverflow.com/questions/211971/scroll-wpf-listview-to-specific-line

                    /*VirtualizingStackPanel vsp =
                     * (VirtualizingStackPanel)typeof(ItemsControl).InvokeMember("_itemsHost",
                     *      BindingFlags.Instance | BindingFlags.GetField | BindingFlags.NonPublic, null,
                     *      listViewGameSaves, null);
                     * double scrollHeight = vsp.ScrollOwner.ScrollableHeight;
                     * vsp.SetVerticalOffset(vsp.ScrollOwner.ScrollableHeight * 2);*/

                    listViewGameSaves.ScrollIntoView(listViewGameSaves.SelectedItem);
                    ((Control)listViewGameSaves.SelectedItem).Focus();
                }
                catch (Exception ex) {
                    MessageBoxResult result2 = TriggerMessageBox.Show(this, "Error loading game save file. Would you like to see the error?", "Read Error", MessageBoxButton.YesNo);
                    if (result2 == MessageBoxResult.Yes)
                    {
                        ErrorMessageBox.Show(ex);
                    }
                }
            }
        }