protected void clearPseudoMaterialMoveLists(List <Move> moves) { moves.Clear(); clearPseudoCaptures(); PseudoEPCapture.Clear(); PseudoQueenPromotion.Clear(); PseudoUnderPromotion.Clear(); PseudoQueenPromotionCapture.Clear(); PseudoUnderPromotionCapture.Clear(); PseudoCaptures.Clear(); }
// //[Warning]Duplicate Moves can result in a number of strange, difficult to debug side-effects. // protected void clearPseudoMoveLists(List <Move> moves, Boolean bSwap) // ~32 MHz { moves.Clear(); clearPseudoCaptures(); clearPseudoMoves(); PseudoCastles.Clear(); PseudoEPCapture.Clear(); PseudoQueenPromotion.Clear(); PseudoUnderPromotion.Clear(); PseudoQueenPromotionCapture.Clear(); PseudoUnderPromotionCapture.Clear(); PseudoCaptures.Clear(); if (bSwap) { PseudoBadCaptures.Clear(); PseudoGoodCaptures.Clear(); } #if !UseMoveSort SiftedMoves.Clear(); // See sortMoves() #endif }
protected void addPawnCapture(Int32 nFrom, Int32 nTo, Boolean bAbove, Boolean bPromote, Boolean bEnPassant) { #if DebugSquares Debug.Assert(getPieceIndex(nFrom) == vP6, "Piece not a Pawn"); Debug.Assert((nTo & uSquareMask) == nTo, "To Overflow"); #endif var capture = bEnPassant ? Piece.EP : Piece.Capture; var move = captureMove(capture) | PawnMove | fromToMove(nFrom, nTo); #if DebugMoveColor if (WTM()) { move |= Move.WTM; } #endif if (bPromote) { foreach (var p in Promotions) { var moves = p == Piece.Q ? PseudoQueenPromotionCapture : PseudoUnderPromotionCapture; moves.Add(promotionMove(p) | move); } } else if (bEnPassant) { #if DebugSquares Debug.Assert(getPieceIndex(nTo) == vPieceNull, "Passed Square not Empty"); #endif PseudoEPCapture.Add(move); } else { var moves = bAbove ? PseudoPawnAboveCapture : PseudoPawnBelowCapture; moves.Add(move); } }