yarn-spinner-runner-ts
Version:
TypeScript parser, compiler, and runtime for Yarn Spinner 3.x with React adapter [NPM package](https://www.npmjs.com/package/yarn-spinner-runner-ts)
31 lines (27 loc) • 783 B
JavaScript
import { parseYarn } from "./dist/parse/parser.js";
import { compile } from "./dist/compile/compiler.js";
import { YarnRunner } from "./dist/runtime/runner.js";
const script = `title: Start
---
Narrator: Current {$reputation}
<<set $reputation = $reputation - 25 >>
Narrator: Later {$reputation}
===`;
const ast = parseYarn(script);
const program = compile(ast);
const runner = new YarnRunner(program, { startAt: "Start", variables: { reputation: 100 } });
const outputs = [];
for (let i = 0; i < 10; i++) {
const res = runner.currentResult;
if (!res) break;
if (res.type === "text") {
outputs.push(res.text.trim());
}
if (res.isDialogueEnd) break;
if (res.type === "options") {
runner.advance(0);
} else {
runner.advance();
}
}
console.log(outputs);