From 7e9058b2c9a155d05aa7a442d40d9f8f221d50bc Mon Sep 17 00:00:00 2001 From: Andre Padez Date: Sun, 19 Oct 2025 02:43:32 +0100 Subject: [PATCH] proper hero death / respawn --- example/src/useKeyBindings.ts | 3 ++- src/useHero/useHero.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/example/src/useKeyBindings.ts b/example/src/useKeyBindings.ts index 0c3e398..9099d0d 100644 --- a/example/src/useKeyBindings.ts +++ b/example/src/useKeyBindings.ts @@ -2,7 +2,7 @@ import { useEffect } from "react"; import type { GameManager } from "../../src"; export const useKeyBindings = (gameManager: GameManager) => { - const { gameStatus, startGame, quitGame, keyManager } = gameManager; + const { gameStatus, renderBoard, startGame, quitGame, keyManager } = gameManager; const { clearLog } = keyManager; useEffect(() => { @@ -11,6 +11,7 @@ export const useKeyBindings = (gameManager: GameManager) => { if (ev.code === "Space") { if (["waiting", "game-over", "game-won"].includes(gameStatus)) { clearLog(); + renderBoard(); if (gameStatus === "game-over" || gameStatus === "game-won") { quitGame(); setTimeout(() => startGame(), 0); diff --git a/src/useHero/useHero.ts b/src/useHero/useHero.ts index c2f5649..2677f77 100644 --- a/src/useHero/useHero.ts +++ b/src/useHero/useHero.ts @@ -22,6 +22,15 @@ export function useHero(board: BoardManager, gameStatus: GameStatus) { } }, [gameStatus, heroPos, mazeRef]); + useEffect(() => { + if (gameStatus === 'waiting' || gameStatus === 'game-over' || gameStatus === 'game-won') { + setHeroPos(null); + const container = containerRef.current; + container?.querySelector("#maze")?.classList.remove("finished"); + container?.querySelectorAll(".hero").forEach((el) => el.classList.remove("hero")); + } + }, [gameStatus, containerRef]); + const getCellEl = useCallback((r: number, c: number): HTMLElement | null => { const container = containerRef.current; if (!container) return null;