From 8d93acf950b0ac6a274ad56fb230ddf7fb2104ff Mon Sep 17 00:00:00 2001 From: Pavel Lutskov Date: Mon, 13 Dec 2021 20:14:53 +0100 Subject: [PATCH] Implement selected piece highlighting Issue #3 --- frontend/main.js | 3 +++ frontend/visuals.js | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/frontend/main.js b/frontend/main.js index 65a9b07..085f8eb 100644 --- a/frontend/main.js +++ b/frontend/main.js @@ -31,6 +31,7 @@ class Chess { this.canvas = new visuals.Canvas(); this.configVis = new visuals.ConfigVis(this.backend.getConfig()); this.configVis.draw(this.canvas); + this.activeSquares = new visuals.ActiveSquares(); this.moveSource = null; this.canMoveTo = []; document.onclick = (ev) => this.click(ev); @@ -44,12 +45,14 @@ class Chess { if (source === null) return; let validMoves = this.backend.getAvailableMoves(source); if (validMoves === null) return; + this.activeSquares.selectSquare(this.canvas, source); this.moveSource = source; } finalizeMove(target) { if (target !== null) { this.backend.makeMove(this.moveSource, target); } + this.activeSquares.unselectSquare(this.canvas); this.syncBackend(); this.moveSource = null; } diff --git a/frontend/visuals.js b/frontend/visuals.js index 2ec0309..3064cff 100644 --- a/frontend/visuals.js +++ b/frontend/visuals.js @@ -86,6 +86,23 @@ export function rowColToBoardIndex(row, col) { return `${colLetter}${rowDigit}`; } +export class ActiveSquares { + constructor() { + this.selectedSquare = null; + } + selectSquare(canvas, position) { + let [r, c] = boardIndexToRowCol(position); + canvas.drawSquareColor("#c0c0ff", r, c); + this.selectedSquare = position; + } + unselectSquare(canvas) { + if (this.selectedSquare === null) return; + let [r, c] = boardIndexToRowCol(this.selectedSquare); + canvas.drawSquareColor(canvas.decideColor(r, c), r, c); + this.selectedSquare = null; + } +} + class PieceVis { constructor(piece) { this.piece = piece;