/** Dev harness for the cave engine. node dev/render-cave-sample.mjs */ import { writeFileSync } from "node:fs"; import { fileURLToPath } from "node:url"; import { dirname, join } from "node:path"; import { generateCave } from "../module/lib/dungeon.mjs"; import { renderCaveSVG } from "../module/lib/render-cave.mjs"; const here = dirname(fileURLToPath(import.meta.url)); const SAMPLES = [ { name: "cave-stone", theme: "cave", cols: 30, rows: 22, seed: "deep-4" }, { name: "cave-crypt", theme: "crypt", cols: 28, rows: 20, seed: "tomb-7" }, { name: "cave-sewer", theme: "sewer", cols: 26, rows: 20, seed: "drain-2" } ]; for (const cfg of SAMPLES) { const model = generateCave({ cols: cfg.cols, rows: cfg.rows, seed: cfg.seed }); const svg = renderCaveSVG({ model, gridSize: 70, theme: cfg.theme, seed: cfg.seed }); const segCount = model.segments.length; console.log(`${cfg.name.padEnd(12)} loops:${model.loops.length} segments:${segCount} features:${model.features.length}`); writeFileSync(join(here, `${cfg.name}.svg`), svg); } console.log("\nWrote cave samples to", here);