if (document.hidden)
notifyMe("move");
vr.playReceivedMove(obj.moves, () => {
- if (vr.getCurrentScore(obj.moves[obj.moves.length-1]) != "*") {
+ if (vr.getCurrentScore(obj.moves) != "*") {
localStorage.removeItem("gid");
setTimeout( () => toggleVisible("gameStopped"), 2000 );
}
case "closerematch":
toggleVisible("newGame");
break;
+ case "filechange":
+ // TODO?: could be more subtle
+ setTimeout(() => location.reload(), 100);
+ break;
}
};
{gid: gid, moves: curMoves, fen: vr.getFen()},
{
retry: true,
- success: () => curMoves = [],
error: () => alert("Move not sent: reload page")
}
);
}
if (ops.res && newTurn != playerColor) {
toggleTurnIndicator(false); //now all moves are sent and animated
- const result = vr.getCurrentScore(move_s);
+ const result = vr.getCurrentScore(curMoves);
+ curMoves = [];
if (result != "*") {
setTimeout(() => {
toggleVisible("gameStopped");
}
};
-let vr, playerColor;
+let vr = null, playerColor, lastVname = undefined;
function initializeGame(obj) {
const options = obj.options || {};
import(`/variants/${obj.vname}/class.js`).then(module => {
window.V = module.default;
for (const [k, v] of Object.entries(V.Aliases))
window[k] = v;
- // Load CSS. Avoid loading twice the same stylesheet:
- const allIds = [].slice.call($.styleSheets).map(s => s.id);
- const newId = obj.vname + "_css";
- if (!allIds.includes(newId)) {
+ if (lastVname != obj.vname) {
+ // Load CSS + unload potential previous one.
+ if (lastVname)
+ document.getElementById(lastVname + "_css").remove();
$.getElementsByTagName("head")[0].insertAdjacentHTML(
"beforeend",
- `<link id="${newId}" rel="stylesheet"
+ `<link id="${obj.vname + '_css'}" rel="stylesheet"
href="/variants/${obj.vname}/style.css"/>`);
+ lastVname = obj.vname;
}
playerColor = (sid == obj.players[0].sid ? "w" : "b");
// Init + remove potential extra DOM elements from a previous game:
</svg>
</div>
<div class="chessboard"></div>`;
+ if (vr)
+ // Avoid interferences:
+ vr.removeListeners();
vr = new V({
seed: obj.seed, //may be null if FEN already exists (running game)
fen: obj.fen,