From 84d4d1c624b5aabe44b7dfcea9b980fe3fe02326 Mon Sep 17 00:00:00 2001 From: GuillaumeSD Date: Mon, 4 Mar 2024 02:24:39 +0100 Subject: [PATCH] feat : arrow color match move classification --- src/sections/analysis/board/index.tsx | 37 ++++++++++++++++---- src/sections/engineSettings/arrowOptions.tsx | 4 +-- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/sections/analysis/board/index.tsx b/src/sections/analysis/board/index.tsx index 10d9661..d08d6b6 100644 --- a/src/sections/analysis/board/index.tsx +++ b/src/sections/analysis/board/index.tsx @@ -14,6 +14,7 @@ import { useMemo, useRef } from "react"; import PlayerInfo from "./playerInfo"; import EvaluationBar from "./evaluationBar"; import { useScreenSize } from "@/hooks/useScreenSize"; +import { MoveClassification } from "@/types/enums"; export default function Board() { const boardRef = useRef(null); @@ -45,22 +46,36 @@ export default function Board() { const customArrows: Arrow[] = useMemo(() => { const arrows: Arrow[] = []; + const bestMove = currentMove?.lastEval?.bestMove; + const moveClassification = currentMove?.eval?.moveClassification; - if (currentMove?.lastEval?.bestMove && showBestMoveArrow) { + if ( + bestMove && + showBestMoveArrow && + moveClassification !== MoveClassification.Book + ) { const bestMoveArrow = [ - currentMove.lastEval.bestMove.slice(0, 2), - currentMove.lastEval.bestMove.slice(2, 4), - "#3aab18", + bestMove.slice(0, 2), + bestMove.slice(2, 4), + moveClassificationColors[MoveClassification.Best], ] as Arrow; arrows.push(bestMoveArrow); } - if (currentMove.from && currentMove.to && showPlayerMoveArrow) { + if ( + currentMove.from && + currentMove.to && + showPlayerMoveArrow && + moveClassification !== MoveClassification.Best + ) { + const arrowColor = moveClassification + ? moveClassificationColors[moveClassification] + : "#ffaa00"; const playerMoveArrow: Arrow = [ currentMove.from, currentMove.to, - "#ffaa00", + arrowColor, ]; if ( @@ -124,3 +139,13 @@ export default function Board() { ); } + +const moveClassificationColors: Record = { + [MoveClassification.Best]: "#26c2a3", + [MoveClassification.Book]: "#d5a47d", + [MoveClassification.Excellent]: "#3aab18", + [MoveClassification.Good]: "#81b64c", + [MoveClassification.Inaccuracy]: "#f7c631", + [MoveClassification.Mistake]: "#ffa459", + [MoveClassification.Blunder]: "#fa412d", +}; diff --git a/src/sections/engineSettings/arrowOptions.tsx b/src/sections/engineSettings/arrowOptions.tsx index 01f5871..3410246 100644 --- a/src/sections/engineSettings/arrowOptions.tsx +++ b/src/sections/engineSettings/arrowOptions.tsx @@ -31,7 +31,7 @@ export default function ArrowOptions() { onChange={(_, checked) => setShowBestMove(checked)} /> } - label="Show best move green arrow" + label="Show engine best move arrow" sx={{ marginX: 0 }} /> setShowPlayerMove(checked)} /> } - label="Show player move yellow arrow" + label="Show played move arrow" sx={{ marginX: 0 }} />