From 52cdbd81d53b2e30d258a100b5e1cea9348314f8 Mon Sep 17 00:00:00 2001 From: Andre Padez Date: Thu, 30 Oct 2025 23:57:23 +0000 Subject: [PATCH] feat(phase2.2): implement finalScore calculation - finalScore equals current game score when gameStatus is 'game-over' or 'game-won' - finalScore is null during active gameplay ('waiting' and 'started') - Passed currentScore from gameManager to useScore hook --- src/useGame/useGame.ts | 2 +- src/useScore/useScore.ts | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/useGame/useGame.ts b/src/useGame/useGame.ts index 986d86d..2f8c68c 100755 --- a/src/useGame/useGame.ts +++ b/src/useGame/useGame.ts @@ -46,7 +46,7 @@ export function useGame(optionsOrCols: GameOptions | number, rows?: number, plat }, }); - const scoreManager = useScore({ gameStatus, keyLog: keyBindings.keyLog }); + const scoreManager = useScore({ gameStatus, keyLog: keyBindings.keyLog, currentScore: score }); // Wrap renderBoard to match Unified API signature const renderBoardWrapped = () => { diff --git a/src/useScore/useScore.ts b/src/useScore/useScore.ts index 674d0c3..174d6bf 100755 --- a/src/useScore/useScore.ts +++ b/src/useScore/useScore.ts @@ -5,18 +5,21 @@ import type { GameStatus, KeyLogEntry } from "../types"; export type UseScoreParams = { gameStatus: GameStatus; keyLog: KeyLogEntry[]; + currentScore: number; }; -export function useScore({ gameStatus, keyLog }: UseScoreParams) { +export function useScore({ gameStatus, keyLog, currentScore }: UseScoreParams) { const timer = useTimer(); const { timeValue, startTimer, stopTimer, resetTimer } = timer; useScoreTime({ gameStatus, timer }); + const finalScore = gameStatus === 'game-over' || gameStatus === 'game-won' ? currentScore : null; + return { timeValue, totalKeystrokes: keyLog.length, - finalScore: null, // TODO: Calculate on game-won + finalScore, startTimer, stopTimer, resetTimer,