From 71d0007f08c3d804d6057d43cd280d8545a480da Mon Sep 17 00:00:00 2001 From: kolaflash Date: Wed, 31 Dec 2025 15:29:43 +0100 Subject: [PATCH] WIP --- dev/ItemList.tsx | 4 ++-- dev/main.tsx | 35 ++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/dev/ItemList.tsx b/dev/ItemList.tsx index b59193f..3ef3ba6 100644 --- a/dev/ItemList.tsx +++ b/dev/ItemList.tsx @@ -19,7 +19,7 @@ import { export type ListItem = { label: string; isActive: boolean }; -export type ItemHandler = (item: ListItem, index: number) => void; +export type ItemHandler = (list: Array, index: number) => void; export type Direction = "default" | "asc" | "desc"; @@ -136,7 +136,7 @@ export const ItemList: Component<{ classList={{ active: item.isActive, }} - onClick={() => props.handler(item, index())} + onClick={() => props.handler(items(), index())} > {item.label} diff --git a/dev/main.tsx b/dev/main.tsx index 3934e6e..358f640 100644 --- a/dev/main.tsx +++ b/dev/main.tsx @@ -1,5 +1,5 @@ import "./main.css"; -import { type Component, createSignal, onMount } from "solid-js"; +import { type Component, createSignal, onMount, type Setter } from "solid-js"; import { render } from "solid-js/web"; import { InputField } from "#/dev/controls/InputField.tsx"; import { RangeSlider } from "#/dev/controls/RangeSlider.tsx"; @@ -40,6 +40,13 @@ function adjustGameContainer(gameContainer: HTMLElement, width: number): void { gameContainer.style = `position: relative; top: 0; left: ${width}px; width: ${document.body.offsetWidth - width}px;`; } +function mapActiveItem(items: Array, index: number): Array { + return items.map((item, idx) => ({ + ...item, + isActive: idx === index, + })); +} + const scenesRaw = await fetchScenes(); const DevTools: Component<{ gameContainer: HTMLElement }> = ({ @@ -65,17 +72,35 @@ const DevTools: Component<{ gameContainer: HTMLElement }> = ({ adjustGameContainer(gameContainer, width()); + const [scenes, setScenes] = createSignal( + scenesRaw.map((scene) => ({ + ...scene, + isActive: scene.label === currentScene.data.name, + })), + ); const [entities, setEntities] = createSignal( mapSceneEntities(currentScene.data), ); - const [scenes] = createSignal(scenesRaw); + const setCurrentScene = async ( + scenes: Array, + index: number, + ): Promise => { + setScenes(mapActiveItem(scenes, index)); - const setCurrentScene = async ({ label: name }: ListItem) => { - await loadScene(name); + await loadScene(scenes[index].label); setEntities(mapSceneEntities(currentScene.data)); }; + const setActiveEntity = (entities: Array, index: number): void => { + setEntities(mapActiveItem(entities, index)); + + const instances = currentScene.entityInstanceMap.get( + entities[index].label, + )!.instances; + console.log(instances); + }; + onMount(() => { self.addEventListener("resize", () => { adjustGameContainer(gameContainer, width()); @@ -129,7 +154,7 @@ const DevTools: Component<{ gameContainer: HTMLElement }> = ({ - +