private void HandleQueensideCastling(Square origin, Square destination) { var queensideRookSquare = GetQueensideRookSquare(origin); if (!destination.DistanceOfFilesIsTwoTo(queensideRookSquare)) return; if (origin.Color != queensideRookSquare.Color) return; if (origin.DistanceOfFilesIsNotTwoTo(destination)) return; if (!(queensideRookSquare.Occupier is Rook)) return; Board.SetSquare(queensideRookSquare.File, queensideRookSquare.Rank, new NullPiece(Board)); Board.SetSquare(origin.File - 1, queensideRookSquare.Rank, queensideRookSquare.Occupier); }
private bool MovingOneRankAndTwoFiles(Square origin, Square destination) { return (origin.DistanceOfRanksIsOneTo(destination) && origin.DistanceOfFilesIsTwoTo(destination)); }