import { emitEvent } from "./events.js"; import { getPlannerCellDom, getPlannerDom } from "./planner.js"; import { findFullEntry } from "./ncpf-utils.js"; import { setCellMetadata, setDomMetadata } from "./metadata.js"; export function resetSolver(design = undefined, designConfiguration) { const planner = getPlannerDom(); if (design && designConfiguration) { planner.dataset.type = design.type; if (design.type === "nuclearcraft:overhaul_sfr") { // design has coolant_recipe and block_recipes const designCoolantRecipe = designConfiguration.coolant_recipes[design.coolant_recipe]; const fullCoolantRecipe = findFullEntry( "coolant_recipes", designCoolantRecipe, { configurationHint: design.type }, ); setDomMetadata(planner, { coolant_recipe: fullCoolantRecipe }); const designBlockRecipes = design.block_recipes.flat(3); for (let x = 0; x < design.dimensions[0]; x++) { for (let y = 0; y < design.dimensions[1]; y++) { for (let z = 0; z < design.dimensions[2]; z++) { const block = designConfiguration.blocks[design.design[x][y][z]]; if (!block || !block.modules || !block.modules["ncpf:block_recipes"]) continue; const blockRecipeIndex = designBlockRecipes.shift(); const blockRecipe = block.modules["ncpf:block_recipes"].recipes[blockRecipeIndex]; setCellMetadata(getPlannerCellDom(x, y, z), "block_recipe", blockRecipe); } } } } } emitEvent("solver:reset:done"); }