private void DoDumpProgressToFile() { var dialog = new SaveFileDialog() { Filter = "textFiles |*.txt", AddExtension = true, CheckFileExists = false, OverwritePrompt = true, ValidateNames = true, CheckPathExists = true, CreatePrompt = false, Title = Captions.PvB_DumpProgressFileDialogTitle }; var result = dialog.ShowDialog(); if (result.HasValue) { if (result.Value) { var fileText = CreateProgressText.FromBoardState(gameService.CurrentBoardState); File.WriteAllText(dialog.FileName, fileText); } } }
private void DoLoadGame() { if (string.IsNullOrWhiteSpace(ProgressFilePath)) { MessageBox.Show("bevor das Replay gestartet werden kann muss eine Replay-Datei ausgewählt werden"); return; } if (!File.Exists(ProgressFilePath)) { MessageBox.Show($"die datei {ProgressFilePath} existiert nicht"); return; } string fileText; try { fileText = File.ReadAllText(ProgressFilePath); } catch { MessageBox.Show($"die datei {ProgressFilePath} kann nicht als text geladen werden"); return; } var splittedMoves = ParseProgressText.FromFileText(fileText); if (!splittedMoves.Any()) { MessageBox.Show("die datei beschreibt keinen gültigen spielverlauf"); return; } lastPlayedReplayService.SaveLastReplay(ProgressFilePath); ProgressRows.Clear(); CreateProgressText.FromMoveList(splittedMoves.ToList()) .Select(line => new ProgressRow(line)) .Do(ProgressRows.Add); var moveCount = replayService.NewReplay(splittedMoves); moveIndex = 0; MaxMoveIndex = moveCount - 1; PropertyChanged.Notify(this, nameof(MoveIndex)); }
private async void ExecuteWinDialog(bool reportWinning, Player player, WinningReason winningReason, Move invalidMove) { var yesNoDialogViewModel = new YesNoDialogViewModel(GetWinningOrLoosingMessage(reportWinning, winningReason, invalidMove)); var winningDialog = new YesNoDialog { DataContext = yesNoDialogViewModel }; var dialogResult = await DialogHost.Show(winningDialog, "RootDialog"); if ((bool)dialogResult) { var dialog = new SaveFileDialog() { Filter = "textFiles |*.txt", AddExtension = true, CheckFileExists = false, OverwritePrompt = true, ValidateNames = true, CheckPathExists = true, CreatePrompt = false, Title = Captions.PvB_SaveGameProgressFileDialogTitle }; var result = dialog.ShowDialog(); if (result.HasValue) { if (result.Value) { var fileText = CreateProgressText.FromBoardState(gameService.CurrentBoardState) .AndAppendWinnerAndReason(player, winningReason, invalidMove); File.WriteAllText(dialog.FileName, fileText); } } } yesNoDialogViewModel.Dispose(); }