X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=base_rules.js;h=54c12209a0b23e9716367eb82eac04cc957da1cf;hb=b2fc1259220619ab828a5da79cbbc8894ac5d296;hp=16f6d7a733c6e0c3b664c57391af29a02c2e2478;hpb=549ca151c2c1a5d0c76cc1ab249d1687c5a18f62;p=xogo.git diff --git a/base_rules.js b/base_rules.js index 16f6d7a..54c1220 100644 --- a/base_rules.js +++ b/base_rules.js @@ -416,6 +416,7 @@ export default class ChessRules { // Graphical (can use variables defined above) this.containerId = o.element; this.isDiagram = o.diagram; + this.marks = o.marks; this.graphicalInit(); } @@ -647,43 +648,58 @@ export default class ChessRules { } setupPieces(r) { - // TODO: d_pieces : only markers (for diagrams) / also in rescale() - if (this.g_pieces) { - // Refreshing: delete old pieces first - for (let i=0; i { + this[arrName][i][j] = document.createElement("piece"); + C.AddClass_es(this[arrName][i][j], classes); + this[arrName][i][j].style.width = pieceWidth + "px"; + this[arrName][i][j].style.height = pieceWidth + "px"; + let [ip, jp] = this.getPixelPosition(i, j, r); + // Translate coordinates to use chessboard as reference: + this[arrName][i][j].style.transform = + `translate(${ip - r.x}px,${jp - r.y}px)`; + chessboard.appendChild(this[arrName][i][j]); + }; + const conditionalReset = (arrName) => { + if (this[arrName]) { + // Refreshing: delete old pieces first. This isn't necessary, + // but simpler (this method isn't called many times) + for (let i=0; i addPiece(i, j, arrName, "mark")); + }; + if (this.marks) + conditionalReset("d_pieces"); + conditionalReset("g_pieces"); for (let i=0; i < this.size.x; i++) { for (let j=0; j < this.size.y; j++) { if (this.board[i][j] != "") { const color = this.getColor(i, j); const piece = this.getPiece(i, j); - this.g_pieces[i][j] = document.createElement("piece"); - C.AddClass_es(this.g_pieces[i][j], - this.pieces(color, i, j)[piece]["class"]); + addPiece(i, j, "g_pieces", this.pieces(color, i, j)[piece]["class"]); this.g_pieces[i][j].classList.add(C.GetColorClass(color)); - this.g_pieces[i][j].style.width = pieceWidth + "px"; - this.g_pieces[i][j].style.height = pieceWidth + "px"; - let [ip, jp] = this.getPixelPosition(i, j, r); - // Translate coordinates to use chessboard as reference: - this.g_pieces[i][j].style.transform = - `translate(${ip - r.x}px,${jp - r.y}px)`; if (this.enlightened && !this.enlightened[i][j]) this.g_pieces[i][j].classList.add("hidden"); - chessboard.appendChild(this.g_pieces[i][j]); + } + if (this.marks && this.d_pieces[i][j]) { + let classes = ["mark"]; + if (this.board[i][j] != "") + classes.push("transparent"); + addPiece(i, j, "d_pieces", classes); } } } @@ -817,7 +833,7 @@ export default class ChessRules { } } } - if (this.hasReserve && !this.isDiagram) + if (this.hasReserve) this.rescaleReserve(newR); }