Compare commits
No commits in common. "8515e21ea96f508988309d14daddd72f1cee2674" and "9e384164f70d5a21269f3aabc553c156d897f677" have entirely different histories.
8515e21ea9
...
9e384164f7
30
index.html
30
index.html
|
|
@ -9,9 +9,9 @@
|
||||||
<body>
|
<body>
|
||||||
<nav id="top-menu" class="menu-bar">
|
<nav id="top-menu" class="menu-bar">
|
||||||
<div data-section="File" data-alt="f">
|
<div data-section="File" data-alt="f">
|
||||||
<button data-alt="n" data-button="file:new" disabled data-enable-on="config:end">New</button>
|
<button data-alt="n" data-button="file:new">New</button>
|
||||||
<button data-alt="o" data-button="file:load" disabled data-enable-on="config:end">Open</button>
|
<button data-alt="o" data-button="file:load">Open</button>
|
||||||
<button data-alt="s" data-button="file:save" disabled data-enable-on="config:end">Save</button>
|
<button data-alt="s" data-button="file:save">Save</button>
|
||||||
<div data-section="Configuiration" data-alt="c">
|
<div data-section="Configuiration" data-alt="c">
|
||||||
<button data-alt="d" data-button="load-configuration" data-configuration="default">Default</button>
|
<button data-alt="d" data-button="load-configuration" data-configuration="default">Default</button>
|
||||||
<button data-alt="e" data-button="load-configuration" data-configuration="e2ee">E2EE</button>
|
<button data-alt="e" data-button="load-configuration" data-configuration="e2ee">E2EE</button>
|
||||||
|
|
@ -19,18 +19,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-section="Edit" data-alt="e">
|
<div data-section="Edit" data-alt="e">
|
||||||
<button data-alt="u" data-button="edit:undo" disabled>Undo</button>
|
<button data-alt="u" data-button="edit:undo">Undo</button>
|
||||||
<button data-alt="r" data-button="edit:redo" disabled>Redo</button>
|
<button data-alt="r" data-button="edit:redo" disabled>Redo</button>
|
||||||
<button data-toggle="dev-mode:toggle" data-toggled="false">Developer mode</button>
|
|
||||||
</div>
|
</div>
|
||||||
<div data-section="Select" data-alt="s">
|
<div data-section="Select" data-alt="s">
|
||||||
<button data-alt="i" disabled>Invert</button>
|
<button data-alt="i">Invert</button>
|
||||||
<button data-alt="e" disabled>Expand</button>
|
|
||||||
<button data-alt="r" disabled>Reduce</button>
|
|
||||||
<button data-alt="c" disabled>All cells</button>
|
|
||||||
<button data-alt="m" disabled>All moderators</button>
|
|
||||||
<button data-alt="h" disabled>All heatsinks</button>
|
|
||||||
<button data-alt="a" disabled>All casings</button>
|
|
||||||
</div>
|
</div>
|
||||||
<div data-section="View" data-alt="v">
|
<div data-section="View" data-alt="v">
|
||||||
<button data-alt="i" data-button="planner:zoom:+">Zoom in</button>
|
<button data-alt="i" data-button="planner:zoom:+">Zoom in</button>
|
||||||
|
|
@ -57,17 +50,10 @@
|
||||||
<span data-resize="bottom-menu"></span>
|
<span data-resize="bottom-menu"></span>
|
||||||
</aside>
|
</aside>
|
||||||
<main>
|
<main>
|
||||||
<div data-state="initialization" class="m2">
|
<div data-state="initialization">
|
||||||
Select configuration file:
|
Select configuration file:
|
||||||
<div class="m1">
|
<button data-button="load-configuration" data-configuration="default">Default (2026-07-06)</button>
|
||||||
<button data-button="load-configuration" data-configuration="default">Default</button>
|
<input type="file" data-input="configuration" accept=".ncpf.json" />
|
||||||
</div>
|
|
||||||
<div class="m1">
|
|
||||||
<button data-button="load-configuration" data-configuration="e2ee">E2EE</button>
|
|
||||||
</div>
|
|
||||||
<div class="m1">
|
|
||||||
<button data-button="load-configuration">Select file...</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div data-state="planning">
|
<div data-state="planning">
|
||||||
<header class="status-bar">
|
<header class="status-bar">
|
||||||
|
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
import { registerLoadCallback } from "./main.js";
|
|
||||||
import { awaitEvent, emitEvent, listenTo } from "./events.js";
|
|
||||||
import { loadExampleFile } from "./files.js";
|
|
||||||
import { loadConfiguration } from "./configuration.js";
|
|
||||||
import { recall, save } from "./storage.js";
|
|
||||||
import { getElements } from "./dom-utils.js";
|
|
||||||
|
|
||||||
const devModeKey = "dev-mode";
|
|
||||||
let devMode = false;
|
|
||||||
|
|
||||||
registerLoadCallback(() => {
|
|
||||||
devMode = recall(devModeKey, false);
|
|
||||||
|
|
||||||
getElements("toggle", "dev-mode:toggle").forEach(e => {
|
|
||||||
e.dataset.toggled = devMode.toString();
|
|
||||||
});
|
|
||||||
|
|
||||||
listenTo("dev-mode:toggle", (e) => {
|
|
||||||
devMode = e.detail.state;
|
|
||||||
save(devModeKey, devMode);
|
|
||||||
console.log("debug mode toggled to", devMode);
|
|
||||||
});
|
|
||||||
|
|
||||||
document.addEventListener("keydown", e => {
|
|
||||||
if (!devMode) return;
|
|
||||||
|
|
||||||
if (e.key === "H") {
|
|
||||||
emitEvent("dev:suppress-hover");
|
|
||||||
}
|
|
||||||
if (e.key === "T") {
|
|
||||||
emitEvent("dev:suppress-tooltips");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!devMode) return;
|
|
||||||
|
|
||||||
awaitEvent("setup:end").then(() => {
|
|
||||||
void loadConfiguration("default");
|
|
||||||
});
|
|
||||||
|
|
||||||
awaitEvent("config:end").then(() => {
|
|
||||||
void loadExampleFile("Pandora's Fission Reactor");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import { awaitEvent, emitEvent, listenTo } from "./events.js";
|
import { awaitEvent, emitEvent, listenTo } from "./events.js";
|
||||||
import { checkEquivalence, findFullEntry, stripEntryToMinimums } from "./ncpf-utils.js";
|
import { checkEquivalence, findFullEntry, stripEntryToMinimums } from "./ncpf-utils.js";
|
||||||
import {
|
import {
|
||||||
clearPlanner,
|
|
||||||
getPlannerDom,
|
getPlannerDom,
|
||||||
getPlannerMultiblockSize,
|
getPlannerMultiblockSize,
|
||||||
getPlannerMultiblockType,
|
getPlannerMultiblockType,
|
||||||
|
|
@ -15,10 +14,7 @@ import { DevError, UserError } from "./errors.js";
|
||||||
|
|
||||||
registerLoadCallback(() => {
|
registerLoadCallback(() => {
|
||||||
listenTo("file:load", () => showOpenFileDialog(({ data, filename }) => loadFile(data, filename)));
|
listenTo("file:load", () => showOpenFileDialog(({ data, filename }) => loadFile(data, filename)));
|
||||||
listenTo("file:new", () => {
|
listenTo("file:new", () => {});
|
||||||
clearPlanner();
|
|
||||||
resetSolver();
|
|
||||||
});
|
|
||||||
listenTo("file:save", () => saveFile());
|
listenTo("file:save", () => saveFile());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
import "./atlas.js";
|
import "./atlas.js";
|
||||||
import "./block-picker.js";
|
import "./block-picker.js";
|
||||||
import "./configuration.js";
|
import { loadConfiguration } from "./configuration.js";
|
||||||
import "./dev-mode.js";
|
|
||||||
import "./dialogs.js";
|
import "./dialogs.js";
|
||||||
import "./dom-list.js";
|
import "./dom-list.js";
|
||||||
import { debounce, getElements } from "./dom-utils.js";
|
import { debounce, getElements } from "./dom-utils.js";
|
||||||
import "./errors.js";
|
import "./errors.js";
|
||||||
import { awaitEvent, emitEvent, listenTo } from "./events.js";
|
import { emitEvent, listenTo } from "./events.js";
|
||||||
import "./files.js"
|
import { loadExampleFile } from "./files.js"
|
||||||
import "./js-utils.js"
|
import "./js-utils.js"
|
||||||
import "./menu-bar.js";
|
import "./menu-bar.js";
|
||||||
import "./ncpf-utils.js";
|
import "./ncpf-utils.js";
|
||||||
|
|
@ -30,7 +29,7 @@ function runLoadCallbacks() {
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener("load", () => {
|
window.addEventListener("load", () => {
|
||||||
emitEvent("setup:start");
|
emitEvent("setup-start");
|
||||||
|
|
||||||
getElements("state", "*").forEach(e => {
|
getElements("state", "*").forEach(e => {
|
||||||
e.classList.add("hidden");
|
e.classList.add("hidden");
|
||||||
|
|
@ -77,16 +76,16 @@ window.addEventListener("load", () => {
|
||||||
emitEvent(elem.dataset.form + ":submit", e);
|
emitEvent(elem.dataset.form + ":submit", e);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
getElements("enable-on", "*").forEach(elem => {
|
|
||||||
elem.disabled = true;
|
|
||||||
awaitEvent(elem.dataset.enableOn).then(() => {
|
|
||||||
elem.disabled = false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
listenTo("config:end", () => setState(STATE.planning));
|
listenTo("config:end", () => setState(STATE.planning));
|
||||||
|
|
||||||
runLoadCallbacks();
|
runLoadCallbacks();
|
||||||
|
|
||||||
emitEvent("setup:end");
|
emitEvent("setup-end");
|
||||||
|
|
||||||
|
void loadConfiguration("default");
|
||||||
|
// void loadConfiguration("fuel-test");
|
||||||
|
|
||||||
|
// awaitEvent("config:end").then(() => loadExampleFile("Pandora's Fission Reactor"));
|
||||||
|
// awaitEvent("config:end").then(() => loadExampleFile("multi-reactor"));
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -12,15 +12,9 @@ const zoomOptions = [ 0.5, 1, 2, 3, 4, 5 ];
|
||||||
const zoomDefault = 2;
|
const zoomDefault = 2;
|
||||||
const zoomStorageKey = "zoom-size";
|
const zoomStorageKey = "zoom-size";
|
||||||
|
|
||||||
const defaultMultiblockSize = [9, 7, 9]; // width (screen x), height (xy grids), depth (screen y)
|
|
||||||
const defaultMultiblockType = "nuclearcraft:overhaul_sfr";
|
|
||||||
const maxMultiblockSize = {
|
|
||||||
["nuclearcraft:overhaul_sfr"]: [26, 26, 26],
|
|
||||||
}
|
|
||||||
|
|
||||||
let suppressHover = false;
|
let suppressHover = false;
|
||||||
let multiblockSize = [...defaultMultiblockSize];
|
let multiblockSize = [9, 7, 9]; // width (screen x), height (xy grids), depth (screen y)
|
||||||
let multiblockType = defaultMultiblockType;
|
let multiblockType = "nuclearcraft:overhaul_sfr";
|
||||||
|
|
||||||
registerLoadCallback(() => {
|
registerLoadCallback(() => {
|
||||||
listenTo("config:end", buildPlanner);
|
listenTo("config:end", buildPlanner);
|
||||||
|
|
@ -81,9 +75,11 @@ registerLoadCallback(() => {
|
||||||
|
|
||||||
listenTo("block-picker:selection", clearSelectedCells);
|
listenTo("block-picker:selection", clearSelectedCells);
|
||||||
|
|
||||||
listenTo("dev:suppress-hover", () => {
|
document.addEventListener("keydown", e => {
|
||||||
suppressHover = !suppressHover;
|
if (e.key === "H") {
|
||||||
console.log("Suppressing hover:", suppressHover);
|
suppressHover = !suppressHover;
|
||||||
|
console.log("Suppressing hover:", suppressHover);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -263,9 +259,9 @@ export function getSelectedCells() {
|
||||||
return [...document.querySelectorAll("#planner [data-selected]")];
|
return [...document.querySelectorAll("#planner [data-selected]")];
|
||||||
}
|
}
|
||||||
|
|
||||||
export function clearPlanner(size = null, type = null) {
|
export function clearPlanner(size, type) {
|
||||||
multiblockSize = size ?? [...defaultMultiblockSize];
|
multiblockSize = size;
|
||||||
multiblockType = type ?? defaultMultiblockType;
|
multiblockType = type;
|
||||||
buildPlanner();
|
buildPlanner();
|
||||||
}
|
}
|
||||||
export function loadPlanner(size, type, textures) {
|
export function loadPlanner(size, type, textures) {
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,11 @@ registerLoadCallback(() => {
|
||||||
listenTo("tooltips:show", showTooltip);
|
listenTo("tooltips:show", showTooltip);
|
||||||
listenTo("tooltips:hide", hideTooltip);
|
listenTo("tooltips:hide", hideTooltip);
|
||||||
|
|
||||||
listenTo("dev:suppress-tooltips", () => {
|
document.addEventListener("keydown", e => {
|
||||||
suppressTooltips = !suppressTooltips;
|
if (e.key === "T") {
|
||||||
console.log("suppressing tooltips", suppressTooltips);
|
suppressTooltips = !suppressTooltips;
|
||||||
|
console.log("suppressing tooltips", suppressTooltips);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue