public bool IsFriendlyPawnValidForEnpassant(BoardMove move, IReadOnlyBoardState <ChessPieceEntity> roBoardState, out ChessPieceEntity pawn) { pawn = null; var pawnItem = roBoardState.GetItem(move.From); if (pawnItem == null) { return(false); } pawn = pawnItem.Item; return(pawnItem.Item.Is(ChessPieceName.Pawn)); }
public bool IsKingAllowedToCastle(BoardMove move, IReadOnlyBoardState <ChessPieceEntity> roBoardState, out ChessPieceEntity king) { var kingItem = roBoardState.GetItem(move.From); king = null; if (kingItem == null) { return(false); } king = kingItem.Item; return(king.Piece.Equals(ChessPieceName.King) && kingItem.Location.Equals(Pieces.King .StartPositionFor(king.Player)) && king.LocationHistory.Count() == 1); }