import { useState, useEffect } from 'react'; import type { GameManager, GameOptions, GameStatus } from './types'; import { useBoard } from './useBoard/useBoard'; export function useGame(_options: GameOptions = {}, platformHook?: unknown): GameManager { const board = useBoard(); const { containerRef, renderBoard } = board; const [gameStatus, setGameStatus] = useState('waiting'); const [keyLog, setKeyLog] = useState<{ key: string; timestamp: number }[]>([]); useEffect(() => { renderBoard(); }, []); const gameManager: GameManager = { containerRef, renderBoard, gameStatus, setGameStatus, startGame: () => { setGameStatus('started'); }, togglePause: (pause?: boolean) => { if (typeof pause === 'boolean') { setGameStatus(pause ? 'paused' : 'started'); } else { setGameStatus(prev => prev === 'paused' ? 'started' : 'paused'); } }, quitGame: () => { setGameStatus('waiting'); }, cursor: {}, scoreManager: { timeValue: 0, keystrokes: 0, finalScore: null, }, keyLog, clearKeyLog: () => setKeyLog([]), getKeyLog: () => [...keyLog], }; if (typeof platformHook === 'function') { platformHook(gameManager); } return gameManager; }