import type { SetId } from "../board/pieces"; export interface Prefs { pieceSet: SetId; theme: "paper" | "crt"; sound: boolean; reactions: boolean; coords: boolean; personality: string; side: "w" | "b" | "random"; clock: string; clockBase: number; // custom base, seconds clockInc: number; // custom increment, seconds threats: boolean; blunder: boolean; } const DEFAULTS: Prefs = { pieceSet: "kingdom", theme: "paper", sound: true, reactions: false, coords: true, personality: "beginner", side: "w", clock: "none", clockBase: 300, clockInc: 0, threats: false, blunder: false, }; const PREFS_KEY = "emchess.prefs"; const SAVE_KEY = "emchess.save"; export function loadPrefs(): Prefs { try { const raw = localStorage.getItem(PREFS_KEY); if (!raw) return { ...DEFAULTS }; return { ...DEFAULTS, ...JSON.parse(raw) }; } catch { return { ...DEFAULTS }; } } export function savePrefs(prefs: Prefs) { try { localStorage.setItem(PREFS_KEY, JSON.stringify(prefs)); } catch { /* private mode, no storage — the game still works, it just won't remember. */ } } export interface SavedGame { pgn: string; side: "w" | "b"; personality: string; savedAt: number; } export function saveGame(game: SavedGame) { try { localStorage.setItem(SAVE_KEY, JSON.stringify(game)); } catch { /* ignore */ } } export function loadGame(): SavedGame | null { try { const raw = localStorage.getItem(SAVE_KEY); return raw ? (JSON.parse(raw) as SavedGame) : null; } catch { return null; } } export function clearGame() { try { localStorage.removeItem(SAVE_KEY); } catch { /* ignore */ } }