X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=base_rules.js;h=715f4e053a03b9b092618b4e6cdbf0e33b30bdf4;hb=55a15dcb7df5091f46f7dd9c170b2aae5846c6c0;hp=5b4907731ce2a30df7ad7e3972350b16bf31ed12;hpb=cc2c71836442d7495ec570f8f78c006ea60852e0;p=xogo.git diff --git a/base_rules.js b/base_rules.js index 5b49077..715f4e0 100644 --- a/base_rules.js +++ b/base_rules.js @@ -760,7 +760,7 @@ export default class ChessRules { } updateReserve(color, piece, count) { - if (this.options["cannibal"] && C.CannibalKing[piece]) + if (this.options["cannibal"] && C.CannibalKings[piece]) piece = "k"; //capturing cannibal king: back to king form const oldCount = this.reserve[color][piece]; this.reserve[color][piece] = count; @@ -1391,6 +1391,7 @@ export default class ChessRules { return; //king isn't captured this way } const steps = pieces[p].attack || pieces[p].steps; + if (!steps) return; //cannibal king for example (TODO...) const range = pieces[p].range; steps.forEach(s => { // From x,y: revert step @@ -2159,20 +2160,21 @@ export default class ChessRules { }; animateRec(0); }; - const checkDisplayThenAnimate = () => { + // Delay if user wasn't focused: + const checkDisplayThenAnimate = (delay) => { if (boardContainer.style.display == "none") { alert("New move! Let's go back to game..."); document.getElementById("gameInfos").style.display = "none"; boardContainer.style.display = "block"; setTimeout(launchAnimation, 700); } - else launchAnimation(); //focused user! + else setTimeout(launchAnimation, delay || 0); }; let boardContainer = document.getElementById("boardContainer"); if (document.hidden) { document.onvisibilitychange = () => { document.onvisibilitychange = undefined; - checkDisplayThenAnimate(); + checkDisplayThenAnimate(700); }; } else checkDisplayThenAnimate();