Files
healer-man/scripts/runewaker-pipeline/make-environment-review-sheets.mjs
T
2026-10-06 22:25:34 -04:00

25 lines
1.2 KiB
JavaScript

import { readFile, writeFile } from "node:fs/promises";
import path from "node:path";
import sharp from "sharp";
const output = path.resolve("artifacts/playtest/rom-environment-quality");
const { results } = JSON.parse(await readFile(path.join(output, "results.json"), "utf8"));
const columns = ["before", "view-0", "view-1", "view-2"];
for (let start = 0; start < results.length; start += 5) {
const subset = results.slice(start, start + 5);
const inputs = [];
for (const [row, result] of subset.entries()) {
for (const [column, suffix] of columns.entries()) {
try {
const input = await sharp(path.join(output, `${result.slug}-${suffix}.png`)).resize(384, 240).toBuffer();
inputs.push({ input, left: column * 384, top: row * 240 });
} catch { /* Failed captures remain empty and recorded in results.json. */ }
}
}
const file = path.join(output, `review-sheet-${Math.floor(start / 5) + 1}.jpg`);
await sharp({ create: { width: 1536, height: subset.length * 240, channels: 3, background: "#161820" } })
.composite(inputs).jpeg({ quality: 90 }).toFile(file);
await writeFile(file.replace(/\.jpg$/, ".json"), `${JSON.stringify({ columns, dungeons: subset.map((entry) => entry.slug) }, null, 2)}\n`);
console.log(file);
}