From dda2ade5fbb632c592fd8af33b2f49a6a76bb13b Mon Sep 17 00:00:00 2001 From: kolaflash Date: Wed, 17 Dec 2025 23:18:59 +0100 Subject: [PATCH] Improve the scene browser stuff a bit --- dev/main.tsx | 14 ++++++++------ dev/server/middleware.ts | 9 +++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/dev/main.tsx b/dev/main.tsx index ce20564..9ba53e5 100644 --- a/dev/main.tsx +++ b/dev/main.tsx @@ -13,20 +13,21 @@ import { ZoomScanIcon, } from "./icons/index.ts"; -async function fetchScenes(): Promise { - const indexRef: string[] = await (await fetch("/api/scenes")).json(); +async function fetchBrowserData(dir: string): Promise { + const indexRef: string[] = await (await fetch(`/api/${dir}`)).json(); const scenes = indexRef.reduce((root, entry) => { const [name] = entry.substring(1).split("/"); - root.set(name, `${name}/data.json`); + root.set(name, name); return root; }, new Map() as BrowserFolder); - return new Map([["scenes", scenes]]); + return new Map([[dir, scenes]]); } -const root = await fetchScenes(); +const scenes = await fetchBrowserData("scenes"); +const entites = await fetchBrowserData("entities"); function adjustGameContainer(gameContainer: HTMLElement, width: number): void { gameContainer.style = `position: relative; top: 0; left: ${width}px; width: ${document.body.offsetWidth - width}px;`; @@ -107,7 +108,8 @@ const DevTools: Component<{ gameContainer: HTMLElement }> = ({ > - + +
diff --git a/dev/server/middleware.ts b/dev/server/middleware.ts index 2b4429a..aa5caaf 100644 --- a/dev/server/middleware.ts +++ b/dev/server/middleware.ts @@ -10,20 +10,21 @@ function buildBrowserIndex(dir: string): string[] { return dirents .filter((dirent) => dirent.isFile()) .map((dirent) => { - const path = dirent.parentPath.substring(dir.length - 2); + const path = dirent.parentPath.substring(dir.length); return `${path}/${dirent.name}`; }); } function get(req: IncomingMessage, res: ServerResponse): void { - console.log(req.url); - const match = req.url?.match(/\/(\w+)$/); + const match = req.url?.match(/^\/(\w+)$/); if (!match) { + console.error(req.url); res.statusCode = 400; res.end(); + return; } - const sceneData = buildBrowserIndex(`.${req.url}`); + const sceneData = buildBrowserIndex(match[1]); res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify(sceneData));