* start_display_move_num: number
* }}
*
- * "start_display_move_num" is the (half-)move number to start displaying the PV at.
+ * "start_display_move_num" is the (half-)move number to start displaying the PV at,
+ * i.e., the index into pv.
+ *
* "score" is also evaluated at this point. scores can be empty and is frequently
* sparse; it's generally only really useful for history (we obviously don't know
* much about how the score will * move during e.g. a PV, except that a mate/TB
/** @type {boolean} @private */
let current_display_line_is_history = false;
-/** @type {?number} @private */
+/** @type {?number} @private
+ *
+ * The highlighted/used/shown move in current_display_line.pv, in terms of absolute index
+ * (not relative to e.g. the start FEN).
+ */
let current_display_move = null;
/**
let display_line = display_lines[line_num];
let pv = display_line.pv;
let halfmove_num = find_halfmove_num(display_line.start_fen) + 2; // From two, for simplicity.
+ let start_halfmove_num = halfmove_num;
let ret = document.createDocumentFragment();
let link = document.createElement('a');
link.className = 'move';
- link.setAttribute('id', 'automove' + line_num + '-' + i);
+ link.setAttribute('id', 'automove' + line_num + '-' + (halfmove_num - start_halfmove_num));
link.textContent = pv[i];
- link.href = 'javascript:show_line(' + line_num + ', ' + i + ');';
+ link.href = 'javascript:show_line(' + line_num + ', ' + (halfmove_num - start_halfmove_num) + ');';
ret.appendChild(link);
}
if (in_tb) {
return;
} else {
current_display_line = {...display_lines[line_num]}; // Shallow clone.
- current_display_move = move_num + current_display_line.start_display_move_num;
+ current_display_move = move_num;
}
current_display_line_is_history = (line_num == 0);
display_lines[1].pv = [];
}
- highlighted_move = document.getElementById("automove" + display_line_num + "-" + (current_display_move - current_display_line.start_display_move_num));
+ highlighted_move = document.getElementById("automove" + display_line_num + "-" + current_display_move);
if (highlighted_move !== null) {
highlighted_move.classList.add('highlight');
}
}
let line = display_lines[i];
if (line.pv[line.start_display_move_num] === move.san) {
- show_line(i, 0);
+ show_line(i, line.start_display_move_num);
return;
}
}