private void CapturedPieceBoxClick(object sender, EventArgs e) { if (!chessboard.RetakingIsActive || chessboard.CurrentTurn != playerTurn) { return; } var clickedCapturedPieceBox = (CapturedPieceBoxUserControl)sender; var chessPieceToRetake = clickedCapturedPieceBox.ChessPiece; var count = chessboard.CapturedPieceCollection.GetEntryCount(chessPieceToRetake); if (count <= 0) { return; } var retakingPosition = chessboard.RetakingPosition; chessboard.RetakePiece(retakingPosition, chessPieceToRetake); networkManager?.NotifyOfRetakeSelection(retakingPosition, chessboard[retakingPosition].Piece); EndTurn(); }
private AIResponse HandleRetaking(IChessboard chessboard) { var canRetakePieces = chessboard.CapturedPieceCollection.GetCountTotalCapturedPieces(Turn, typeof(Pawn)) > 0; if (!canRetakePieces) { return(AIResponse.SuccessfulMove); } var capturedTypes = chessboard.CapturedPieceCollection.GetIndividualCountsForCapturedPieces(Turn, typeof(Pawn)) .Where(x => x.Value > 0) .ToList(); var choice = rng.Next(0, capturedTypes.Count); var pieceType = capturedTypes[choice].Key; var pieceToRetake = ChessPieceProvider.GetChessPiece(pieceType, Turn); chessboard.RetakePiece(chessboard.RetakingPosition, pieceToRetake); return(AIResponse.SuccessfulMove); }