- Archive previous implementation attempt (src -> src_failed) - Create comprehensive IMPLEMENTATION_PLAN.md with phased approach - Create IMPLEMENTATION.md to track implementation progress - Update example app to match vim-maze patterns: - Simplify UI to desktop-only (no mobile support) - Add score metrics display (time, keystrokes, final score) - Update instructions for sudoku-specific keys (hjkl, i for edit) - Remove unnecessary mobile hooks Phase 5 complete. Ready to begin Phase 10 (Setup & Core Types).
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import type { RefObject } from 'react';
|
|
|
|
export type { Coord, SudokuBoard, SudokuCell, Difficulty } from './useBoard/types';
|
|
export type { CursorManager, CursorMode, GameKeyManager, KeyLogEntry } from './useCursor/types';
|
|
export type { GameStatus, GameStatusManager } from './useGameStatus/types';
|
|
export type { ScoreManager, TimerManager } from './useScore/types';
|
|
|
|
export type GameOptions = {
|
|
difficulty?: Difficulty;
|
|
};
|
|
|
|
export type GameManager = {
|
|
containerRef: RefObject<HTMLDivElement | null>;
|
|
renderBoard: () => void;
|
|
gameStatus: GameStatus;
|
|
setGameStatus: (status: GameStatus) => void;
|
|
startGame: () => void;
|
|
togglePause: (pause?: boolean) => void;
|
|
quitGame: () => void;
|
|
cursor: CursorManager;
|
|
scoreManager: ScoreManager;
|
|
keyLog: KeyLogEntry[];
|
|
clearKeyLog: () => void;
|
|
getKeyLog: () => KeyLogEntry[];
|
|
board: {
|
|
generateBoard: (difficulty: Difficulty) => void;
|
|
solveBoard: () => boolean;
|
|
resetBoard: () => void;
|
|
getCell: (row: number, col: number) => any;
|
|
setCell: (row: number, col: number, value: string) => boolean;
|
|
canEditCell: (row: number, col: number) => boolean;
|
|
isComplete: () => boolean;
|
|
isFullyValid: () => boolean;
|
|
};
|
|
}; |