Exemplo n.º 1
0
 private void OnWinnerAvailable(Player player, WinningReason winningReason, Move invalidMove)
 {
     System.Windows.Application.Current.Dispatcher.Invoke(() =>
     {
         WinnerAvailable?.Invoke(player, winningReason, invalidMove);
     });
 }
Exemplo n.º 2
0
        private void OnWinnerAvailable(Player player, WinningReason winningReason, Move invalidMove)
        {
            StopTimer();

            var reportWinning = player.PlayerType == PlayerType.BottomPlayer;



            ExecuteWinDialog(reportWinning, player, winningReason, invalidMove);

            GameStatus = GameStatus.Finished;
        }
Exemplo n.º 3
0
        private static string WinningReasonToString(WinningReason winningReason)
        {
            switch (winningReason)
            {
            case WinningReason.Capitulation:            return(Captions.WinningReason_Capitulation);

            case WinningReason.InvalidMove:             return(Captions.WinningReason_InvalidMode);

            case WinningReason.ExceedanceOfMaxMoves:    return(Captions.WinningReason_ExceedanceOfMaxMoves);

            case WinningReason.ExceedanceOfThoughtTime: return(Captions.WinningReason_ExceedanceOfThoughtTime);

            case WinningReason.RegularQuoridorWin:      return(Captions.WinningReason_RegularQuoridorWin);
            }

            return("");
        }
Exemplo n.º 4
0
        private static string GetWinningOrLoosingMessage(bool reportWinning, WinningReason winningReason, Move invalidMove)
        {
            var sb = new StringBuilder();

            sb.Append(reportWinning
                                                        ? $"{Captions.WD_WinningMessage}"
                                                        : $"{Captions.WD_LoosingMessage}");

            sb.Append($"\n{Captions.WD_Message_Reason}: {WinningReasonToString(winningReason)}");

            if (winningReason == WinningReason.InvalidMove)
            {
                sb.Append($" [{invalidMove}]");
            }

            sb.Append($"\n\n{Captions.WD_SaveGameRequest}");

            return(sb.ToString());
        }
Exemplo n.º 5
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();
        }
Exemplo n.º 6
0
        public static string AndAppendWinnerAndReason(this string progress, Player winner, WinningReason winningReason, Move invalidMove)
        {
            var sb = new StringBuilder();

            sb.Append(progress);
            sb.Append(Environment.NewLine);

            var winnerName = string.IsNullOrWhiteSpace(winner.Name)
                                                                ? "Player"
                                                                : winner.Name;

            sb.Append($"{winnerName} wins because");

            switch (winningReason)
            {
            case WinningReason.ExceedanceOfThoughtTime:
            {
                sb.Append(" the oppenden bot exceeded its thinking time");
                break;
            }

            case WinningReason.Capitulation:
            {
                sb.Append(" the oppenden player capitulated");
                break;
            }

            case WinningReason.InvalidMove:
            {
                sb.Append($" the oppenden player tryed to do an illegal move [{invalidMove}]");
                break;
            }

            case WinningReason.ExceedanceOfMaxMoves:
            {
                sb.Append(" the oppenden player exceeds the maximal moves per player");
                break;
            }

            case WinningReason.RegularQuoridorWin:
            {
                sb.Append(" he/she was simply better ;-)");
                break;
            }
            }

            return(sb.ToString());
        }
Exemplo n.º 7
0
 private void OnWinnerAvailable(Player player, WinningReason winningReason, Move invalidMove)
 {
     StopGame();
     WinnerAvailable?.Invoke(player, winningReason, invalidMove);
 }
Exemplo n.º 8
0
 private void OnWinnerAvailable(Player player, WinningReason winningReason)
 {
     StopGame();
     WinnerAvailable?.Invoke(player, winningReason);
 }
Exemplo n.º 9
0
 private void OnWinnerAvailable(Player player, WinningReason winningReason, Move illegalMove)
 {
     DisablePlacement();
 }