/**
* Реестр диалоговых графов «Пепельных луга» (перенос 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')}`);