Esempio n. 1
0
        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);
                }
            }
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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();
        }