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
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);
|
|
// }
|
|
}
|