public bool CanPieceMove(PieceEntity piece, BoardMovementDirection direction) { var targetPosition = piece.Position + DirectionToOffset(direction); return(_board.IsPieceInBoard(piece.Piece, targetPosition) && !_board.IsPieceColliding(piece.Piece, targetPosition)); }
public static Point DirectionToOffset(BoardMovementDirection direction) { switch (direction) { case BoardMovementDirection.Down: return(new Point(0, 1)); case BoardMovementDirection.Left: return(new Point(-1, 0)); case BoardMovementDirection.Right: return(new Point(1, 0)); default: throw new ArgumentOutOfRangeException(nameof(direction), direction, null); } }
public void Move(BoardMovementDirection direction) { Position += BoardMovement.DirectionToOffset(direction); }