/**
 * Реестр диалоговых графов «Пепельных луга» (перенос v1 1:1): 9 графов —
 * знакомства и повторные у Ирвина/Милы, сдача квестов, Клинт (акт 2).
 * Графы — данные (JSON); ошибки структуры ловит validateDialogue при
 * старте модуля (падаем сразу, а не посреди диалога).
 */
import { validateDialogue, type DialogueGraph } from '@rpg/engine';
import clintFirst from './dialogues/clint_first.json';
import clintRepeat from './dialogues/clint_repeat.json';
import clintTune from './dialogues/clint_tune.json';
import elderFirst from './dialogues/elder_first.json';
import elderHandIn from './dialogues/elder_hand_in.json';
import elderRepeat from './dialogues/elder_repeat.json';
import traderAfter from './dialogues/trader_after.json';
import traderFirst from './dialogues/trader_first.json';
import traderRepeat from './dialogues/trader_repeat.json';

/** Все графы по id (id = имя файла, как в v1). */
export const DIALOGUES: Record<string, DialogueGraph> = {
    clint_first: clintFirst,
    clint_repeat: clintRepeat,
    clint_tune: clintTune,
    elder_first: elderFirst,
    elder_hand_in: elderHandIn,
    elder_repeat: elderRepeat,
    trader_after: traderAfter,
    trader_first: traderFirst,
    trader_repeat: traderRepeat,
} as unknown as Record<string, DialogueGraph>;

// графы — данные: битый граф лучше падает при загрузке, чем в диалоге
const graphErrors = Object.entries(DIALOGUES).flatMap(([id, g]) =>
    validateDialogue(g).map((e) => `${id}: ${e}`),
);
if (graphErrors.length > 0) throw new Error(`Диалоги: ошибки графов\n${graphErrors.join('\n')}`);