From f9cd9c60e7a8f44129866380e3ecff92f3bbdd0c Mon Sep 17 00:00:00 2001 From: Andre Padez Date: Thu, 30 Oct 2025 22:30:00 +0000 Subject: [PATCH] fix(example): update useKeyBindings to work with new GameManager interface - Import GameManager type directly from main package - Use new Unified API methods: renderBoard, quitGame, clearKeyLog - Remove pause functionality for now (simplified like vim-maze) - Match vim-maze's key binding pattern - Game now starts and plays correctly --- example/src/useKeyBindings.ts | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/example/src/useKeyBindings.ts b/example/src/useKeyBindings.ts index 2c5076c..63f5690 100755 --- a/example/src/useKeyBindings.ts +++ b/example/src/useKeyBindings.ts @@ -1,19 +1,18 @@ import { useEffect } from "react"; -import type { UseGameType } from "@vimazing/vim-snake"; +import type { GameManager } from "../../src"; -export const useKeyBindings = (gameManager: UseGameType) => { - const { gameStatus, startGame, stopGame, clearLog, resetCount, togglePause } = gameManager; +export const useKeyBindings = (gameManager: GameManager) => { + const { gameStatus, renderBoard, startGame, quitGame, clearKeyLog } = gameManager; useEffect(() => { const handler = (ev: KeyboardEvent) => { - // start game if (ev.code === "Space") { if (["waiting", "game-over", "game-won"].includes(gameStatus)) { - clearLog(); - resetCount(); + clearKeyLog(); + renderBoard(); if (gameStatus === "game-over" || gameStatus === "game-won") { - stopGame(); + quitGame(); setTimeout(() => startGame(), 0); } else { startGame(); @@ -22,24 +21,18 @@ export const useKeyBindings = (gameManager: UseGameType) => { } } - console.log('ev.key', ev.key) - - if (ev.key === 'p' || ev.key === 'P') { - togglePause(); - } + // ignore other keys while waiting + if (gameStatus === "waiting") return; // quit if (ev.key === "q" || ev.key === "Q") { - if (gameStatus === "started") { - stopGame(); - resetCount(); - return; - } + quitGame(); + return; } }; - window.addEventListener("keydown", handler, { capture: true }); - return () => window.removeEventListener("keydown", handler, { capture: true }); - }, [gameStatus, startGame, stopGame, clearLog, resetCount]); + window.addEventListener("keydown", handler); + return () => window.removeEventListener("keydown", handler); + }, [gameStatus]); };