From 6bbcadddfd1749833b2ce1f2daa5a9c439cdebd9 Mon Sep 17 00:00:00 2001 From: Pavel Lutskov Date: Tue, 14 Dec 2021 21:57:26 +0100 Subject: [PATCH] Fix flickering on board redraw Turns out == operator can't be used to compare two JS objects. Implement a custom method for determining piece equality. --- frontend/visuals.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/frontend/visuals.js b/frontend/visuals.js index e9e795b..112e920 100644 --- a/frontend/visuals.js +++ b/frontend/visuals.js @@ -154,6 +154,12 @@ class PieceVis { } } +function pieceEqual(pieceA, pieceB) { + return ( + pieceA.color === pieceB.color && pieceA.piece_type === pieceB.piece_type + ); +} + export class ConfigVis { constructor(configuration) { this.configuration = configuration; @@ -162,7 +168,7 @@ export class ConfigVis { draw(canvas) { for (let [position, piece] of this.configuration) { if (this.piecesVis.has(position)) { - if (this.piecesVis.get(position).piece == piece) { + if (pieceEqual(this.piecesVis.get(position).piece, piece)) { continue; } }