diff --git a/CuckooChess/src/uci/EngineControl.java b/CuckooChess/src/uci/EngineControl.java index 01edbcb..eec2d4b 100644 --- a/CuckooChess/src/uci/EngineControl.java +++ b/CuckooChess/src/uci/EngineControl.java @@ -129,8 +129,8 @@ public class EngineControl { computeTimeLimit(sPar); ponder = false; infinite = (maxTimeLimit < 0) && (maxDepth < 0) && (maxNodes < 0); - startThread(minTimeLimit, maxTimeLimit, maxDepth, maxNodes); searchMoves = sPar.searchMoves; + startThread(minTimeLimit, maxTimeLimit, maxDepth, maxNodes); } final public void startPonder(Position pos, List moves, SearchParams sPar) { @@ -229,9 +229,8 @@ public class EngineControl { sc.setStrength(strength, randomSeed); MoveGen.MoveList moves = moveGen.pseudoLegalMoves(pos); MoveGen.removeIllegal(pos, moves); - if ((searchMoves != null) && (searchMoves.size() > 0)) { - Arrays.asList(moves.m).retainAll(searchMoves); - } + if ((searchMoves != null) && (searchMoves.size() > 0)) + moves.filter(searchMoves); final MoveGen.MoveList srchMoves = moves; onePossibleMove = false; if ((srchMoves.size < 2) && !infinite) { diff --git a/CuckooChessEngine/src/chess/MoveGen.java b/CuckooChessEngine/src/chess/MoveGen.java index ee112b4..28cf3c8 100644 --- a/CuckooChessEngine/src/chess/MoveGen.java +++ b/CuckooChessEngine/src/chess/MoveGen.java @@ -18,6 +18,8 @@ package chess; +import java.util.List; + /** * * @author petero @@ -35,6 +37,13 @@ public final class MoveGen { m = new Move[MAX_MOVES]; this.size = 0; } + public final void filter(List searchMoves) { + int used = 0; + for (int i = 0; i < size; i++) + if (searchMoves.contains(m[i])) + m[used++] = m[i]; + size = used; + } } /**