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; }
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); } } } }