You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.1 KiB

import {
world,
} from "./index.js";
import {
available_tiles,
} from "/stackline-wasm/pkg/stackline_wasm.js";
const right_pane = document.getElementById("right-pane");
const coordinates_elem = document.getElementById("coordinates");
const stack_elem = document.getElementById("stack");
const signal_elem = document.getElementById("signal");
const state_elem = document.getElementById("state");
const tile_elem = document.getElementById("tile");
const tile_name_elem = document.getElementById("tile-name");
export function update_selected(x, y) {
coordinates.innerText = `(${x}, ${y})`;
let full_tile = world.get(x, y);
if (!full_tile) {
right_pane.classList.remove("selected");
return;
}
let signal = full_tile.signal;
while (stack_elem.children.length > 0) {
stack_elem.removeChild(stack_elem.firstChild);
}
if (signal) {
signal_elem.classList.add("has-signal");
for (let element of signal.stack) {
let li = document.createElement("li");
if (typeof element === "string") {
li.innerText = `"${element}"`;
} else if (typeof element === "number") {
li.innerText = element.toString();
} else {
throw new Error("Unexpected element type: " + typeof element);
}
stack_elem.appendChild(li);
}
signal.free();
} else {
signal_elem.classList.remove("has-signal");
}
let tile = full_tile.tile;
if (tile) {
tile_elem.classList.add("has-tile");
let name = Object.keys(tile)[0];
tile_name_elem.innerText = name;
} else {
tile_elem.classList.remove("has-tile");
}
state_elem.innerText = full_tile.state;
full_tile.free();
right_pane.classList.add("selected");
}
export function init() {
// for (let name of available_tiles()) {
// let option = document.createElement("option");
// option.innerText = name;
// option.value = name;
// tile_name_elem.appendChild(option);
// }
}