X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=base_rules.js;h=8eed3d35250e521b0a6cb78d4a85d67222c8341d;hb=d6d0a46e5c8c1d9176f4a9e9c44a4b5f2ed791e7;hp=08e9d1bd0d1a7174577d5c860230359897c13022;hpb=98d144512e5505f5ef8b702b139ca6ceff92c823;p=xogo.git diff --git a/base_rules.js b/base_rules.js index 08e9d1b..8eed3d3 100644 --- a/base_rules.js +++ b/base_rules.js @@ -1,5 +1,5 @@ -import { Random } from "/utils/alea.js"; -import { ArrayFun } from "/utils/array.js"; +import {Random} from "/utils/alea.js"; +import {ArrayFun} from "/utils/array.js"; import PiPo from "/utils/PiPo.js"; import Move from "/utils/Move.js"; @@ -117,7 +117,7 @@ export default class ChessRules { } // Some variants reveal moves only after both players played - hideMoves() { + get hideMoves() { return false; } @@ -528,20 +528,16 @@ export default class ChessRules { (oldV,newV) => oldV + (this.reserve[c][newV] > 0 ? 1 : 0), 0); } - static AddClass_es(piece, class_es) { + static AddClass_es(elt, class_es) { if (!Array.isArray(class_es)) class_es = [class_es]; - class_es.forEach(cl => { - piece.classList.add(cl); - }); + class_es.forEach(cl => elt.classList.add(cl)); } - static RemoveClass_es(piece, class_es) { + static RemoveClass_es(elt, class_es) { if (!Array.isArray(class_es)) class_es = [class_es]; - class_es.forEach(cl => { - piece.classList.remove(cl); - }); + class_es.forEach(cl => elt.classList.remove(cl)); } // Generally light square bottom-right @@ -629,6 +625,8 @@ export default class ChessRules { class="chessboard_SVG">`; for (let i=0; i < this.size.x; i++) { for (let j=0; j < this.size.y; j++) { + if (!this.onBoard(i, j)) + continue; const ii = (flipped ? this.size.x - 1 - i : i); const jj = (flipped ? this.size.y - 1 - j : j); let classes = this.getSquareColorClass(ii, jj); @@ -1494,7 +1492,7 @@ export default class ChessRules { let moves = []; for (let i=0; i this.play(m)); callback(); @@ -2658,10 +2660,17 @@ export default class ChessRules { alert("New move! Let's go back to game..."); document.getElementById("gameInfos").style.display = "none"; container.style.display = "block"; - setTimeout(() => this.launchAnimation(moves, callback), 700); + setTimeout( + () => this.launchAnimation(moves, container, callback), + 700 + ); + } + else { + setTimeout( + () => this.launchAnimation(moves, container, callback), + delay || 0 + ); } - else - setTimeout(() => this.launchAnimation(moves, callback), delay || 0); }; let container = document.getElementById(this.containerId); if (document.hidden) {