game start/stop, snake rendered on board

This commit is contained in:
2025-10-16 12:56:15 +01:00
parent 39dde6e5e6
commit 6a3cfad409
7 changed files with 216 additions and 13 deletions
+36
View File
@@ -1 +1,37 @@
import { useState } from "react";
import type { GameStatus } from "../types";
import type { UseRendererType } from "./useRenderer";
import type { UseSnakeType } from "./useSnake";
export function useGameStatus(
rendererManager: UseRendererType,
snakeManager: UseSnakeType
) {
const { containerRef } = rendererManager;
const { initSnake, clearSnake } = snakeManager;
const [gameStatus, setGameStatus] = useState<GameStatus>("waiting");
const startGame = () => {
initSnake();
setGameStatus("started");
};
const stopGame = () => {
clearSnake();
setGameStatus("waiting");
const container = containerRef.current;
container?.querySelectorAll(".snake-head, .snake-body").forEach((el) => {
el.classList.remove("snake-head", "snake-body");
});
};
return {
gameStatus,
setGameStatus,
startGame,
stopGame,
};
}
export type UseGameStatusType = ReturnType<typeof useGameStatus>;
export type { GameStatus } from "../types";