diff --git a/index.html b/index.html index b38ab36c..b9fa1e9a 100644 --- a/index.html +++ b/index.html @@ -1326,6 +1326,7 @@ + @@ -3018,6 +3019,7 @@
+ diff --git a/modules/resources-generator.js b/modules/resources-generator.js index 1de4ee07..cbbda9d9 100644 --- a/modules/resources-generator.js +++ b/modules/resources-generator.js @@ -102,9 +102,9 @@ cells = pack.cells; cells.resource = new Uint8Array(cells.i.length); // resources array [0, 255] const resourceMaxCells = Math.ceil(200 * cells.i.length / 5000); - pack.resources = getDefault(); + if (!pack.resources) pack.resources = getDefault(); pack.resources.forEach(r => r.cells = 0); - + const skipGlaciers = biomesData.habitability[11] === 0; const shuffledCells = d3.shuffle(cells.i.slice()); for (const i of shuffledCells) { @@ -125,7 +125,6 @@ pack.resources.sort((a, b) => a.i > b.i ? 1 : -1); console.timeEnd("generateResources"); - console.table(pack.resources); } const getStroke = color => d3.color(color).darker(2).hex(); diff --git a/modules/ui/editors.js b/modules/ui/editors.js index a00c23da..38e85b71 100644 --- a/modules/ui/editors.js +++ b/modules/ui/editors.js @@ -659,9 +659,8 @@ function selectIcon(initial, callback) { }); } -// Calls the refresh functionality on all editors currently open. +// Calls the refresh for all currently open editors function refreshAllEditors() { - TIME && console.time('refreshAllEditors'); if (document.getElementById('culturesEditorRefresh').offsetParent) culturesEditorRefresh.click(); if (document.getElementById('biomesEditorRefresh').offsetParent) biomesEditorRefresh.click(); if (document.getElementById('diplomacyEditorRefresh').offsetParent) diplomacyEditorRefresh.click(); @@ -669,5 +668,5 @@ function refreshAllEditors() { if (document.getElementById('religionsEditorRefresh').offsetParent) religionsEditorRefresh.click(); if (document.getElementById('statesEditorRefresh').offsetParent) statesEditorRefresh.click(); if (document.getElementById('zonesEditorRefresh').offsetParent) zonesEditorRefresh.click(); - TIME && console.timeEnd('refreshAllEditors'); + if (document.getElementById('resourcesEditorRefresh').offsetParent) resourcesEditorRefresh.click(); } diff --git a/modules/ui/layers.js b/modules/ui/layers.js index b158b778..45d88607 100644 --- a/modules/ui/layers.js +++ b/modules/ui/layers.js @@ -1315,12 +1315,11 @@ function drawEmblems() { function toggleResources(event) { if (!layerIsOn("toggleResources")) { turnButtonOn("toggleResources"); - $('#goods').fadeIn(); - if (!goods.selectAll("*").size()) drawResources(); + drawResources(); if (event && isCtrlClick(event)) editStyle("goods"); } else { if (event && isCtrlClick(event)) {editStyle("goods"); return;} - $('#goods').fadeOut(); + goods.selectAll("*").remove(); turnButtonOff("toggleResources"); } } diff --git a/modules/ui/resources-editor.js b/modules/ui/resources-editor.js index 9c1bfb76..62d1d9ee 100644 --- a/modules/ui/resources-editor.js +++ b/modules/ui/resources-editor.js @@ -17,6 +17,7 @@ function editResources() { // add listeners document.getElementById("resourcesEditorRefresh").addEventListener("click", resourcesEditorAddLines); + document.getElementById("resourcesRegenerate").addEventListener("click", regenerateResources); document.getElementById("resourcesLegend").addEventListener("click", toggleLegend); document.getElementById("resourcesPercentage").addEventListener("click", togglePercentageMode); document.getElementById("resourcesExport").addEventListener("click", downloadResourcesData); @@ -24,6 +25,11 @@ function editResources() { // add line for each resource function resourcesEditorAddLines() { let lines = ""; + const categories = [...new Set(pack.resources.map(r => r.category))].sort(); + const categoryOptions = category => categories.map(c => ``).join(""); + + const models = [...new Set(pack.resources.map(r => r.model))].sort(); + const modelOptions = model => models.map(m => ``).join(""); // // {i: 33, name: "Saltpeter", icon: "resource-saltpeter", color: "#e6e3e3", value: 8, chance: 2, model: "habitability", bonus: {artillery: 3}} for (const r of pack.resources) { @@ -36,8 +42,8 @@ function editResources() { - - + + diff --git a/modules/ui/tools.js b/modules/ui/tools.js index 2ba58d00..83e800fd 100644 --- a/modules/ui/tools.js +++ b/modules/ui/tools.js @@ -65,6 +65,7 @@ function processFeatureRegeneration(event, button) { if (button === "regenerateStates") regenerateStates(); else if (button === "regenerateProvinces") regenerateProvinces(); else if (button === "regenerateBurgs") regenerateBurgs(); else + if (button === "regenerateResources") regenerateResources(); else if (button === "regenerateEmblems") regenerateEmblems(); else if (button === "regenerateReligions") regenerateReligions(); else if (button === "regenerateCultures") regenerateCultures(); else @@ -238,8 +239,6 @@ function regenerateBurgs() { const burgsCount = manorsInput.value == 1000 ? rn(sorted.length / 5 / (grid.points.length / 10000) ** .8) + states.length : +manorsInput.value + states.length; const spacing = (graphWidth + graphHeight) / 150 / (burgsCount ** .7 / 66); // base min distance between towns - //clear locked list since ids will change - //burglock.selectAll("text").remove(); for (let j=0; j < Lockedburgs.length; j++) { const id = burgs.length; const oldBurg = Lockedburgs[j]; @@ -248,7 +247,6 @@ function regenerateBurgs() { burgsTree.add([oldBurg.x, oldBurg.y]); cells.burg[oldBurg.cell] = id; if (oldBurg.capital) {states[oldBurg.state].capital = id; states[oldBurg.state].center = oldBurg.cell;} - //burglock.append("text").attr("data-id", id); } for (let i=0; i < sorted.length && burgs.length < burgsCount; i++) { @@ -295,6 +293,13 @@ function regenerateBurgs() { if (document.getElementById("statesEditorRefresh").offsetParent) statesEditorRefresh.click(); } +function regenerateResources() { + Resources.generate(); + goods.selectAll("*").remove(); + if (layerIsOn("toggleResources")) drawResources(); + refreshAllEditors(); +} + function regenerateEmblems() { // remove old emblems document.querySelectorAll("[id^=stateCOA]").forEach(el => el.remove());