finalize block tooltips, begin work on menubar
This commit is contained in:
parent
53b5386465
commit
ea6813b415
27
index.html
27
index.html
|
|
@ -7,11 +7,28 @@
|
|||
<script type="module" src="scripts/main.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<nav id="top-menu">
|
||||
<button>File</button>
|
||||
<button>Edit</button>
|
||||
<button>Select</button>
|
||||
<button>View</button>
|
||||
<nav id="top-menu" class="menu-bar">
|
||||
<div data-section="File" data-alt="f">
|
||||
<button data-alt="n" data-button="new-file">New</button>
|
||||
<button data-alt="o" data-button="open-file">Open</button>
|
||||
<div data-section="Recent Files" data-alt="r">
|
||||
<button disabled>-</button>
|
||||
</div>
|
||||
</div>
|
||||
<div data-section="Edit" data-alt="e">
|
||||
<button data-alt="u" data-button="undo">Undo</button>
|
||||
<button data-alt="r" data-button="redo" disabled>Redo</button>
|
||||
</div>
|
||||
<div data-section="Select" data-alt="s">
|
||||
<button data-alt="i">Invert</button>
|
||||
</div>
|
||||
<div data-section="View" data-alt="v">
|
||||
<div data-section="Test" data-alt="e">
|
||||
<div data-section="Test" data-alt="e">
|
||||
<button disabled>-</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<nav id="left-menu" data-state="planning">
|
||||
<span data-resize="left-menu"></span>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ function putTextureOnCanvas(ctx, atlasSize, index, data) {
|
|||
}
|
||||
|
||||
export async function buildAtlas(data) {
|
||||
// TODO: atlas caching
|
||||
|
||||
emitEvent("config:process:atlas:start");
|
||||
const textures = [
|
||||
...Object.entries(data.configuration),
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { initializePlanner } from "./planner.js";
|
|||
import { initializeMenuResizing } from "./resize-menus.js";
|
||||
import { getState, setState, STATE } from "./state.js";
|
||||
import { initializeTooltips } from "./tooltip.js";
|
||||
import { initializeMenuBar } from "./menu-bar.js";
|
||||
|
||||
window.addEventListener("load", () => {
|
||||
emitEvent("setup-start");
|
||||
|
|
@ -37,6 +38,7 @@ window.addEventListener("load", () => {
|
|||
initializePlanner();
|
||||
initializeMenuResizing();
|
||||
initializeTooltips();
|
||||
initializeMenuBar();
|
||||
|
||||
emitEvent("setup-end");
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
export function initializeMenuBar() {}
|
||||
|
|
@ -4,7 +4,8 @@ function findInPossible(entryList, entry) {
|
|||
switch (entry.type) {
|
||||
case "legacy_block":
|
||||
return entryList.find(v => v.name === entry.name
|
||||
&& v.metadata === entry.metadata);
|
||||
&& v.metadata === entry.metadata
|
||||
&& (!entry.blockstate || JSON.stringify(v.blockstate) === JSON.stringify(entry.blockstate)));
|
||||
|
||||
case "oredict":
|
||||
return entryList.find(v => v.oredict === entry.oredict);
|
||||
|
|
|
|||
|
|
@ -180,7 +180,10 @@ function* getBlockTooltip(metadata) {
|
|||
|
||||
yield data.modules["plannerator:display_name"].display_name;
|
||||
|
||||
let hasAdditionalData = false;
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:heat_sink" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
const heatSink = data.modules["nuclearcraft:overhaul_sfr:heat_sink"];
|
||||
yield "Heatsink";
|
||||
if (heatSink.cooling) {
|
||||
|
|
@ -192,60 +195,71 @@ function* getBlockTooltip(metadata) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:casing" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
yield "Casing";
|
||||
}
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:controller" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
yield "Controller";
|
||||
}
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:fuel_cell" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
yield "Fuel Cell";
|
||||
}
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:port" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
if (data.modules["nuclearcraft:overhaul_sfr:port"].output) {
|
||||
yield "Output Port";
|
||||
} else {
|
||||
yield "Input Port";
|
||||
}
|
||||
}
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:irradiator" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
yield "Irradiator";
|
||||
}
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:conductor" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
yield "Conductor";
|
||||
}
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:moderator" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
const moderator = data.modules["nuclearcraft:overhaul_sfr:moderator"];
|
||||
yield "Moderator";
|
||||
yield `Flux: ${moderator.flux}`;
|
||||
yield `Efficiency: ${moderator.efficiency}`;
|
||||
}
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:reflector" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
const reflector = data.modules["nuclearcraft:overhaul_sfr:reflector"];
|
||||
yield "Reflector";
|
||||
yield `Efficiency: ${reflector.efficiency}`;
|
||||
yield `Reflectivity: ${reflector.reflectivity}`;
|
||||
}
|
||||
|
||||
if ("nuclearcraft:overhaul_sfr:neutron_shield" in data.modules) {
|
||||
hasAdditionalData = true;
|
||||
const shield = data.modules["nuclearcraft:overhaul_sfr:neutron_shield"];
|
||||
yield "Neutron Shield";
|
||||
yield `Efficiency: ${shield.efficiency}`;
|
||||
yield `Heat per Flux: ${shield.heat_per_flux}`;
|
||||
}
|
||||
|
||||
if (!hasAdditionalData) {
|
||||
console.log("unknown block", data);
|
||||
}
|
||||
}
|
||||
|
||||
function parseRuleAsTooltip(rule, props) {
|
||||
void {
|
||||
"cooling": 130,
|
||||
"rules": [
|
||||
{
|
||||
"rules": [
|
||||
{
|
||||
"rules": [
|
||||
{
|
||||
"min": 2,
|
||||
"max": 2,
|
||||
"block": {
|
||||
"metadata": 1,
|
||||
"name": "nuclearcraft:solid_fission_sink2",
|
||||
"type": "legacy_block",
|
||||
"blockstate": {
|
||||
"type": "lead"
|
||||
}
|
||||
},
|
||||
"type": "between"
|
||||
},
|
||||
{
|
||||
"min": 1,
|
||||
"max": 1,
|
||||
"block": {
|
||||
"metadata": 1,
|
||||
"name": "nuclearcraft:solid_fission_sink2",
|
||||
"type": "legacy_block",
|
||||
"blockstate": {
|
||||
"type": "lead"
|
||||
}
|
||||
},
|
||||
"type": "axial"
|
||||
}
|
||||
],
|
||||
"type": "and"
|
||||
},
|
||||
{
|
||||
"min": 1,
|
||||
"max": 6,
|
||||
"block": {
|
||||
"name": "nuclearcraft:overhaul_sfr:casing",
|
||||
"type": "module"
|
||||
},
|
||||
"type": "between"
|
||||
}
|
||||
],
|
||||
"type": "and"
|
||||
}
|
||||
]
|
||||
}
|
||||
// Requires exactly 2 lead heat sink AND exactly 1 pairs of axial lead heat sink AND at least 1 casing
|
||||
switch (rule.type) {
|
||||
case "and":
|
||||
return rule.rules.map(r => parseRuleAsTooltip(r, props)).join(" AND ");
|
||||
|
|
@ -285,7 +299,6 @@ function parseRuleAsTooltip(rule, props) {
|
|||
} else {
|
||||
return `between ${rule.min} and ${rule.max} axial ${block}`;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
default:
|
||||
|
|
|
|||
Loading…
Reference in New Issue