private void UndoCastlingLong(Piece pieceToGoBack, Position origin, Position destination) { if (pieceToGoBack is King && destination.Column == origin.Column - 2) { Position rookOrigin = new Position(origin.Line, origin.Column - 4); Position rookDestination = new Position(origin.Line, origin.Column - 1); Piece rook = Board.RemovePieceFromBoard(rookDestination); rook.DecrementMovementQuantity(); Board.AddPieceToBoard(rook, rookOrigin); } }
private void UndoMovement(Position origin, Position destination, Piece capturedPiece) { Piece pieceToGoBack = Board.RemovePieceFromBoard(destination); pieceToGoBack.DecrementMovementQuantity(); if (capturedPiece != null) { Board.AddPieceToBoard(capturedPiece, destination); piecesCaptured.Remove(capturedPiece); } Board.AddPieceToBoard(pieceToGoBack, origin); // Special Play - Castling Short UndoCastlingShort(pieceToGoBack, origin, destination); // Special Play - Castling Long UndoCastlingLong(pieceToGoBack, origin, destination); // Special Play - En Passant UndoEnPassant(pieceToGoBack, capturedPiece, origin, destination); }