mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 09:41:24 +01:00
regenerate resources
This commit is contained in:
parent
44b75f9cff
commit
ec7cbb74cf
6 changed files with 24 additions and 14 deletions
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 />
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue