fix issue with stale metadata throwing errors

This commit is contained in:
CodedSakura 2026-08-11 15:38:36 +03:00
parent bf66f5ea31
commit 4fb19ada79
3 changed files with 8 additions and 2 deletions

View File

@ -18,6 +18,8 @@ export function setDomMetadata(domNode, data) {
export function setCellMetadata(node, key, value) { export function setCellMetadata(node, key, value) {
if (!node.dataset.metadata) { if (!node.dataset.metadata) {
node.dataset.metadata = createMetadata({ [key]: value }).toString(10); node.dataset.metadata = createMetadata({ [key]: value }).toString(10);
} else if (!metadata[Number(node.dataset.metadata)]) {
metadata[Number(node.dataset.metadata)] = { [key]: value };
} else { } else {
metadata[Number(node.dataset.metadata)][key] = value; metadata[Number(node.dataset.metadata)][key] = value;
} }
@ -38,6 +40,7 @@ export function getMetadata(id) {
return metadata[id]; return metadata[id];
} }
export function getCellMetadata(node, key) { export function getCellMetadata(node, key) {
if (!node.dataset.metadata) return null;
return metadata[Number(node.dataset.metadata)][key]; return metadata[Number(node.dataset.metadata)][key];
} }
@ -53,6 +56,7 @@ export function deleteMetadata(id) {
} }
export function clearCellMetadata(node, key) { export function clearCellMetadata(node, key) {
if (!node.dataset.metadata) return; if (!node.dataset.metadata) return;
if (!metadata[Number(node.dataset.metadata)]) return;
delete metadata[Number(node.dataset.metadata)][key]; delete metadata[Number(node.dataset.metadata)][key];
processCellOverlays(node, key, false); processCellOverlays(node, key, false);
} }

View File

@ -6,7 +6,7 @@ import { initialize3dArray } from "./js-utils.js";
import { recall, save } from "./storage.js"; import { recall, save } from "./storage.js";
import { registerLoadCallback } from "./main.js"; import { registerLoadCallback } from "./main.js";
import { getBlockPickerActiveItem, getBlockPickerRecipe } from "./block-picker.js"; import { getBlockPickerActiveItem, getBlockPickerRecipe } from "./block-picker.js";
import { clearCellMetadata, getMetadata, setCellMetadata } from "./metadata.js"; import { clearCellMetadata, deleteMetadata, getMetadata, setCellMetadata } from "./metadata.js";
import { retainTooltipHover } from "./tooltip.js"; import { retainTooltipHover } from "./tooltip.js";
import { checkEquivalence, lookupFromMetadata, parseRuleAsString } from "./ncpf-utils.js"; import { checkEquivalence, lookupFromMetadata, parseRuleAsString } from "./ncpf-utils.js";
@ -250,13 +250,14 @@ function cellClickEvent(e) {
if (e.target.tile === "-1") return; if (e.target.tile === "-1") return;
e.target.dataset.previewRemove = "yes"; e.target.dataset.previewRemove = "yes";
clearCellMetadata(e.target, "block_recipe"); deleteMetadata(e.target);
} else if (e.buttons === 1) { } else if (e.buttons === 1) {
// add // add
if (e.target.dataset.preview === activeItem.toString(10)) return; if (e.target.dataset.preview === activeItem.toString(10)) return;
e.target.dataset.preview = activeItem.toString(10); e.target.dataset.preview = activeItem.toString(10);
e.target.replaceChildren(makeAtlasImage(activeItem)); e.target.replaceChildren(makeAtlasImage(activeItem));
deleteMetadata(e.target);
const pickerRecipe = getBlockPickerRecipe(); const pickerRecipe = getBlockPickerRecipe();
if (pickerRecipe) { if (pickerRecipe) {
setCellMetadata(e.target, "block_recipe", pickerRecipe); setCellMetadata(e.target, "block_recipe", pickerRecipe);

View File

@ -163,6 +163,7 @@ export async function runSolver() {
} }
setCellMetadata(cell.dom, "primer", cell.primer); setCellMetadata(cell.dom, "primer", cell.primer);
}); });
console.log(fuelCells)
await debugBlockSolver("primed"); await debugBlockSolver("primed");