ChessDotNet.Pieces.King.IsValidMove C# (CSharp) Method

IsValidMove() public method

public IsValidMove ( Move move, ChessGame game ) : bool
move Move
game ChessGame
return bool
        public override bool IsValidMove(Move move, ChessGame game)
        {
            ChessUtilities.ThrowIfNull(move, "move");
            Position origin = move.OriginalPosition;
            Position destination = move.NewPosition;
            PositionDistance distance = new PositionDistance(origin, destination);
            if ((distance.DistanceX != 1 || distance.DistanceY != 1)
                        && (distance.DistanceX != 0 || distance.DistanceY != 1)
                        && (distance.DistanceX != 1 || distance.DistanceY != 0)
                        && (distance.DistanceX != 2 || distance.DistanceY != 0))
                return false;
            if (distance.DistanceX != 2)
                return true;
            return CanCastle(origin, destination, game);
        }