public static void GenerateMovesForPiece(Board board, MovesList movesList, int piece, bool slider) { for (int i = 0; i < board.pieces[piece].Count; i++) { int square = board.pieces[piece][i]; for (int j = 0; j < Directions[piece].Length; j++) { int toSquare = square + Directions[piece][j]; do { if ((board[toSquare] & border) > 0) { if ((board[toSquare] & border) == enemy) { AddMove.CaptureMove(board, Move.Write(square, toSquare, board[toSquare], 0, false, false, false), movesList); } break; } AddMove.QuietMove(board, Move.Write(square, toSquare, 0, 0, false, false, false), movesList); toSquare += Directions[piece][j]; } while (slider); } } }