From 162a981677a818cc140b3099bb3e645b2e26489b Mon Sep 17 00:00:00 2001 From: kolaflash Date: Tue, 30 Dec 2025 00:49:51 +0100 Subject: [PATCH] Meh WIP 2 --- dev/main.tsx | 66 +++++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/dev/main.tsx b/dev/main.tsx index 3f6d6a2..d8d6e29 100644 --- a/dev/main.tsx +++ b/dev/main.tsx @@ -4,7 +4,6 @@ import { render } from "solid-js/web"; import { InputField } from "#/dev/controls/InputField.tsx"; import { RangeSlider } from "#/dev/controls/RangeSlider.tsx"; import { type BrowserFolder, FileBrowser } from "#/dev/FileBrowser.tsx"; -import type { ListItem } from "#/dev/ItemList.tsx"; import { ArrowAutofitHeightIcon, ArrowAutofitWidthIcon, @@ -14,6 +13,7 @@ import { import type { Entity } from "#/engine/Entity"; import { currentScene, loadScene, type SceneData } from "#/engine/Scene.ts"; import { setScale, viewport } from "#/engine/Viewport.ts"; +import type { ListItem } from "./ItemList"; import { RemoteItemList } from "./RemoteItemList"; async function fetchBrowserData(dir: string): Promise { @@ -29,13 +29,13 @@ async function fetchBrowserData(dir: string): Promise { return new Map([[dir, scenes]]); } -function mapSceneEntities(sceneData: SceneData): BrowserFolder { +function mapSceneEntitiesOld(sceneData: SceneData): BrowserFolder { const sets: Record = {}; - const entites = sceneData.entities.reduce((root, entiry) => { - sets[entiry.name] = - sets[entiry.name] === undefined ? 0 : sets[entiry.name] + 1; - root.set(`${entiry.name}:${sets[entiry.name]}`, { - path: `${entiry.name}:${sets[entiry.name]}`, + const entites = sceneData.entities.reduce((root, entity) => { + sets[entity.name] = + sets[entity.name] === undefined ? 0 : sets[entity.name] + 1; + root.set(`${entity.name}:${sets[entity.name]}`, { + path: `${entity.name}:${sets[entity.name]}`, isActive: false, }); return root; @@ -46,6 +46,19 @@ function mapSceneEntities(sceneData: SceneData): BrowserFolder { const scenesRaw = await fetchBrowserData("scenes"); +function mapSceneEntities(sceneData: SceneData): Array { + const sets: Record = {}; + return sceneData.entities.map((entity, index) => { + sets[entity.name] = + sets[entity.name] === undefined ? 0 : sets[entity.name] + 1; + return { + label: entity.name, + isActive: false, + index, + }; + }); +} + function adjustGameContainer(gameContainer: HTMLElement, width: number): void { gameContainer.style = `position: relative; top: 0; left: ${width}px; width: ${document.body.offsetWidth - width}px;`; } @@ -101,13 +114,22 @@ const DevTools: Component<{ gameContainer: HTMLElement }> = ({ }; let activeEntity = null; - const setActiveEntity = (path: string): void => { - const [id, index] = path.split(":"); - const instances = currentScene.entityInstanceMap.get(id)!.instances; - activeEntity = instances[parseInt(index)] as Entity; - setEntities(mapActive("entities", path, entities)); + const setActiveEntity = (entityItem: ListItem & { index: number }): void => { + const instances = currentScene.entityInstanceMap.get( + entityItem.label, + )!.instances; + console.log(entityItem); + activeEntity = instances[entityItem.index] as Entity; + // setEntities(mapActive("entities", path, entities)); console.log(activeEntity); }; + // const setActiveEntity = (path: string): void => { + // const [id, index] = path.split(":"); + // const instances = currentScene.entityInstanceMap.get(id)!.instances; + // activeEntity = instances[parseInt(index)] as Entity; + // setEntities(mapActive("entities", path, entities)); + // console.log(activeEntity); + // }; const [scenes, setScenes] = createSignal(scenesRaw); @@ -170,25 +192,11 @@ const DevTools: Component<{ gameContainer: HTMLElement }> = ({ - [ - { - label: "foo", - isActive: false, - }, - { - label: "bar", - isActive: false, - }, - { - label: "lol", - isActive: true, - }, - ]} + name={"Entities"} + handler={setActiveEntity} + fetch={async () => entities()} />