public Move getNextMove(int whichLine) { short shortMove = m_moves.getMove(m_moves.goForward(m_cur, whichLine)); if (shortMove == GameMoveModel.NO_MOVE) return null; // =====> try { m_position.setNotifyListeners(false); m_position.doMove(shortMove); // ChMove move = m_position.getLastMove(shortMove); Move move = m_position.getLastMove(); m_position.undoMove(); m_position.setNotifyListeners(true); return move; } catch (IllegalMoveException ex) { ex.printStackTrace(); return null; } }
private boolean goBackInLine(boolean silent) { if (DEBUG) System.out.println("goBackInLine"); int index = m_moves.goBack(m_cur, false); if (index != -1) { m_cur = index; // needs to be set before undoing the move to allow listeners to check for curNode m_ignoreNotifications = true; if (silent) m_position.setNotifyListeners(false); m_position.undoMove(); if (silent) m_position.setNotifyListeners(true); m_ignoreNotifications = false; return true; } else { return false; } }
private boolean goBack(boolean silent) { if (DEBUG) System.out.println("goBack"); int index = m_moves.goBack(m_cur, true); if (index != -1) { // if (m_position.canUndoMove()) { // do not rely on position since in silent mode it // is not updated // m_cur = m_moves.goBack(m_cur, true); m_cur = index; m_ignoreNotifications = true; if (silent) m_position.setNotifyListeners(false); m_position.undoMove(); if (silent) m_position.setNotifyListeners(true); m_ignoreNotifications = false; return true; } else { return false; } }
public Move[] getMainLine() { int num = 0; int index = m_cur; while (m_moves.hasNextMove(index)) { index = m_moves.goForward(index); num++; } Move[] moves = new Move[num]; for (int i = 0; i < num; i++) { moves[i] = goForwardAndGetMove(true); } m_position.setNotifyListeners(false); for (int i = 0; i < moves.length; i++) m_position.undoMove(); m_position.setNotifyListeners(true); return moves; }
public Move[] getNextMoves() { m_position.setNotifyListeners(false); Move[] moves = new Move[m_moves.getNumOfNextMoves(m_cur)]; for (int i = 0; i < moves.length; i++) { short move = m_moves.getMove(m_moves.goForward(m_cur, i)); try { m_position.doMove(move); // moves[i] = m_position.getLastMove(move); moves[i] = m_position.getLastMove(); m_position.undoMove(); } catch (IllegalMoveException ex) { m_moves.write(System.out); System.out.println("cur = " + m_cur + " move=" + GameMoveModel.valueToString(move)); ex.printStackTrace(); } } m_position.setNotifyListeners(true); return moves; }