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());