import type { GameManager, GameOptions } from './types'; import { useBoard } from './useBoard'; import { useCursor } from './useCursor'; import { useKeyBindings } from './useKeyBindings'; import { useGameStatus } from './useGameStatus'; export function useGame(options: GameOptions, platformHook?: unknown): GameManager { const { cols, rows } = options; const board = useBoard(cols, rows); const { containerRef, renderBoard } = board; const gameStatusManager = useGameStatus(); const { gameStatus, startGame, togglePause, quitGame, setGameStatus } = gameStatusManager; const cursor = useCursor(board, gameStatus); const keyManager = useKeyBindings({ cursor, hero: cursor.hero, gameStatus, setGameStatus }); const gameManager = { containerRef, gameStatus, renderBoard, startGame, togglePause, quitGame, cursor, keyManager, } if (typeof platformHook === 'function') { platformHook(gameManager); } return gameManager; }