private void OnWinnerAvailable(Player player, WinningReason winningReason, Move invalidMove) { System.Windows.Application.Current.Dispatcher.Invoke(() => { WinnerAvailable?.Invoke(player, winningReason, invalidMove); }); }
private void OnWinnerAvailable(Player player, WinningReason winningReason, Move invalidMove) { StopTimer(); var reportWinning = player.PlayerType == PlayerType.BottomPlayer; ExecuteWinDialog(reportWinning, player, winningReason, invalidMove); GameStatus = GameStatus.Finished; }
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(""); }
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()); }
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(); }
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()); }
private void OnWinnerAvailable(Player player, WinningReason winningReason, Move invalidMove) { StopGame(); WinnerAvailable?.Invoke(player, winningReason, invalidMove); }
private void OnWinnerAvailable(Player player, WinningReason winningReason) { StopGame(); WinnerAvailable?.Invoke(player, winningReason); }
private void OnWinnerAvailable(Player player, WinningReason winningReason, Move illegalMove) { DisablePlacement(); }