diff --git a/src/components/frontend/qualification/AimTrainerGame.tsx b/src/components/frontend/qualification/AimTrainerGame.tsx index 6d6fe01..9b52b00 100644 --- a/src/components/frontend/qualification/AimTrainerGame.tsx +++ b/src/components/frontend/qualification/AimTrainerGame.tsx @@ -315,6 +315,11 @@ export function AimTrainerGame({ } }, [resetToReady, startGame]); + const handleRestartAction = useCallback(() => { + if (phaseRef.current !== "playing") return; + startGame(); + }, [startGame]); + const handleShot = useCallback( (event: PointerEvent) => { if (event.button !== 0 || phaseRef.current !== "playing") return; @@ -477,6 +482,13 @@ export function AimTrainerGame({ raf = requestAnimationFrame(step); const onKeyDown = (event: KeyboardEvent) => { + if (event.code === "KeyR") { + if (event.repeat || event.ctrlKey || event.metaKey || event.altKey) return; + event.preventDefault(); + event.stopPropagation(); + handleRestartAction(); + return; + } if (event.code !== "Enter" && event.code !== "Space") return; if (event.repeat) return; event.preventDefault(); @@ -502,6 +514,7 @@ export function AimTrainerGame({ config.targetLifetimeMs, difficulty, handlePrimaryAction, + handleRestartAction, setPhaseSafe, ]);