regenerate resources

This commit is contained in:
Azgaar 2021-05-05 22:37:06 +03:00
parent 44b75f9cff
commit ec7cbb74cf
6 changed files with 24 additions and 14 deletions

View file

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

View file

@ -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");
}
}

View file

@ -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 => `<option ${c === category ? "selected" : ""} value="${c}">${c}</option>`).join("");
const models = [...new Set(pack.resources.map(r => r.model))].sort();
const modelOptions = model => models.map(m => `<option ${m === model ? "selected" : ""} value="${m}">${m}</option>`).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() {
<use href="#${r.icon}" x="10%" y="10%" width="80%" height="80%"/>
</svg>
<input data-tip="Resource name. Click and category to change" class="resourceName" value="${r.name}" autocorrect="off" spellcheck="false">
<select data-tip="Resource category. Select to change"><option selected>No data</option></select>
<input data-tip="Resource spread model. Select to change" value="${r.model}" class="model"/>
<select data-tip="Resource category. Select to change">${categoryOptions(r.category)}</select>
<select data-tip="Resource spread model. Select to change" class="model">${modelOptions(r.model)}</select>
<input data-tip="Resource basic value. Click and type to change" value="${r.value}" type="number" min=0 max=100 step=1 />
<input data-tip="Resource generation chance in eligible cell. Click and type to change" value="${r.chance}" type="number" min=0 max=100 step=.1 />

View file

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