UNPKG

easyvn

Version:

Modular visual novel engine for the web

36 lines (35 loc) 1.29 kB
import { runNextRouteIfAny } from "./router"; let choiceResolver = null; export function showChoice(choices) { return new Promise((resolve) => { const container = document.getElementById("choices"); const speaker = document.getElementById("speaker"); const dialogue = document.getElementById("dialogue"); if (!container) return resolve(); if (speaker) speaker.textContent = "Choice:"; if (dialogue) dialogue.textContent = ""; container.innerHTML = ""; choiceResolver = resolve; choices.forEach(([text, callback]) => { const btn = document.createElement("button"); btn.textContent = text; btn.className = "choice-btn"; btn.onclick = async () => { container.innerHTML = ""; const result = callback(); if (result instanceof Promise) await result; await runNextRouteIfAny(); if (choiceResolver) { const done = choiceResolver; choiceResolver = null; done(); // resume scene flow } }; container.appendChild(btn); }); }); }