mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 01:41:22 +01:00
fix(add river): get id as the biggest id + 1, not the last id + 1
This commit is contained in:
parent
5ca3ac44a4
commit
d48f9b3cab
5 changed files with 51 additions and 13 deletions
|
|
@ -7857,7 +7857,7 @@
|
||||||
<script src="config/precreated-heightmaps.js"></script>
|
<script src="config/precreated-heightmaps.js"></script>
|
||||||
<script src="modules/heightmap-generator.js?v=1.88.00"></script>
|
<script src="modules/heightmap-generator.js?v=1.88.00"></script>
|
||||||
<script src="modules/ocean-layers.js?v=1.89.08"></script>
|
<script src="modules/ocean-layers.js?v=1.89.08"></script>
|
||||||
<script src="modules/river-generator.js"></script>
|
<script src="modules/river-generator.js?v=1.89.13"></script>
|
||||||
<script src="modules/lakes.js"></script>
|
<script src="modules/lakes.js"></script>
|
||||||
<script src="modules/names-generator.js?v=1.87.14"></script>
|
<script src="modules/names-generator.js?v=1.87.14"></script>
|
||||||
<script src="modules/cultures-generator.js?v=1.89.10"></script>
|
<script src="modules/cultures-generator.js?v=1.89.10"></script>
|
||||||
|
|
@ -7883,7 +7883,7 @@
|
||||||
<script defer src="modules/relief-icons.js"></script>
|
<script defer src="modules/relief-icons.js"></script>
|
||||||
<script defer src="modules/ui/style.js"></script>
|
<script defer src="modules/ui/style.js"></script>
|
||||||
<script defer src="modules/ui/editors.js?v=1.89.12"></script>
|
<script defer src="modules/ui/editors.js?v=1.89.12"></script>
|
||||||
<script defer src="modules/ui/tools.js?v=1.89.00"></script>
|
<script defer src="modules/ui/tools.js?v=1.89.13"></script>
|
||||||
<script defer src="modules/ui/world-configurator.js"></script>
|
<script defer src="modules/ui/world-configurator.js"></script>
|
||||||
<script defer src="modules/ui/heightmap-editor.js?v=1.89.06"></script>
|
<script defer src="modules/ui/heightmap-editor.js?v=1.89.06"></script>
|
||||||
<script defer src="modules/ui/provinces-editor.js?v=1.89.00"></script>
|
<script defer src="modules/ui/provinces-editor.js?v=1.89.00"></script>
|
||||||
|
|
@ -7897,7 +7897,7 @@
|
||||||
<script defer src="modules/ui/coastline-editor.js"></script>
|
<script defer src="modules/ui/coastline-editor.js"></script>
|
||||||
<script defer src="modules/ui/labels-editor.js"></script>
|
<script defer src="modules/ui/labels-editor.js"></script>
|
||||||
<script defer src="modules/ui/rivers-editor.js"></script>
|
<script defer src="modules/ui/rivers-editor.js"></script>
|
||||||
<script defer src="modules/ui/rivers-creator.js"></script>
|
<script defer src="modules/ui/rivers-creator.js?v=1.89.13"></script>
|
||||||
<script defer src="modules/ui/relief-editor.js"></script>
|
<script defer src="modules/ui/relief-editor.js"></script>
|
||||||
<script defer src="modules/ui/burg-editor.js"></script>
|
<script defer src="modules/ui/burg-editor.js"></script>
|
||||||
<script defer src="modules/ui/units-editor.js"></script>
|
<script defer src="modules/ui/units-editor.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,9 @@ window.Rivers = (function () {
|
||||||
cells.fl[i] += prec[cells.g[i]] / cellsNumberModifier; // add flux from precipitation
|
cells.fl[i] += prec[cells.g[i]] / cellsNumberModifier; // add flux from precipitation
|
||||||
|
|
||||||
// create lake outlet if lake is not in deep depression and flux > evaporation
|
// create lake outlet if lake is not in deep depression and flux > evaporation
|
||||||
const lakes = lakeOutCells[i] ? features.filter(feature => i === feature.outCell && feature.flux > feature.evaporation) : [];
|
const lakes = lakeOutCells[i]
|
||||||
|
? features.filter(feature => i === feature.outCell && feature.flux > feature.evaporation)
|
||||||
|
: [];
|
||||||
for (const lake of lakes) {
|
for (const lake of lakes) {
|
||||||
const lakeCell = cells.c[i].find(c => h[c] < 20 && cells.f[c] === lake.i);
|
const lakeCell = cells.c[i].find(c => h[c] < 20 && cells.f[c] === lake.i);
|
||||||
cells.fl[lakeCell] += Math.max(lake.flux - lake.evaporation, 0); // not evaporated lake water drains to outlet
|
cells.fl[lakeCell] += Math.max(lake.flux - lake.evaporation, 0); // not evaporated lake water drains to outlet
|
||||||
|
|
@ -191,7 +193,18 @@ window.Rivers = (function () {
|
||||||
const length = getApproximateLength(meanderedPoints);
|
const length = getApproximateLength(meanderedPoints);
|
||||||
const width = getWidth(getOffset(discharge, meanderedPoints.length, widthFactor, 0));
|
const width = getWidth(getOffset(discharge, meanderedPoints.length, widthFactor, 0));
|
||||||
|
|
||||||
pack.rivers.push({i: riverId, source, mouth, discharge, length, width, widthFactor, sourceWidth: 0, parent, cells: riverCells});
|
pack.rivers.push({
|
||||||
|
i: riverId,
|
||||||
|
source,
|
||||||
|
mouth,
|
||||||
|
discharge,
|
||||||
|
length,
|
||||||
|
width,
|
||||||
|
widthFactor,
|
||||||
|
sourceWidth: 0,
|
||||||
|
parent,
|
||||||
|
cells: riverCells
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -479,6 +492,10 @@ window.Rivers = (function () {
|
||||||
return getBasin(parent);
|
return getBasin(parent);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getNextId = function (rivers) {
|
||||||
|
return rivers.length ? Math.max(...rivers.map(r => r.i)) + 1 : 1;
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
generate,
|
generate,
|
||||||
alterHeights,
|
alterHeights,
|
||||||
|
|
@ -493,6 +510,7 @@ window.Rivers = (function () {
|
||||||
getOffset,
|
getOffset,
|
||||||
getApproximateLength,
|
getApproximateLength,
|
||||||
getRiverPoints,
|
getRiverPoints,
|
||||||
remove
|
remove,
|
||||||
|
getNextId
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -74,12 +74,13 @@ function createRiver() {
|
||||||
|
|
||||||
function addRiver() {
|
function addRiver() {
|
||||||
const {rivers, cells} = pack;
|
const {rivers, cells} = pack;
|
||||||
const {addMeandering, getApproximateLength, getWidth, getOffset, getName, getRiverPath, getBasin} = Rivers;
|
const {addMeandering, getApproximateLength, getWidth, getOffset, getName, getRiverPath, getBasin, getNextId} =
|
||||||
|
Rivers;
|
||||||
|
|
||||||
const riverCells = createRiver.cells;
|
const riverCells = createRiver.cells;
|
||||||
if (riverCells.length < 2) return tip("Add at least 2 cells", false, "error");
|
if (riverCells.length < 2) return tip("Add at least 2 cells", false, "error");
|
||||||
|
|
||||||
const riverId = rivers.length ? last(rivers).i + 1 : 1;
|
const riverId = getNextId(rivers);
|
||||||
const parent = cells.r[last(riverCells)] || riverId;
|
const parent = cells.r[last(riverCells)] || riverId;
|
||||||
|
|
||||||
riverCells.forEach(cell => {
|
riverCells.forEach(cell => {
|
||||||
|
|
@ -100,12 +101,30 @@ function createRiver() {
|
||||||
const name = getName(mouth);
|
const name = getName(mouth);
|
||||||
const basin = getBasin(parent);
|
const basin = getBasin(parent);
|
||||||
|
|
||||||
rivers.push({i: riverId, source, mouth, discharge, length, width, widthFactor, sourceWidth, parent, cells: riverCells, basin, name, type: "River"});
|
rivers.push({
|
||||||
|
i: riverId,
|
||||||
|
source,
|
||||||
|
mouth,
|
||||||
|
discharge,
|
||||||
|
length,
|
||||||
|
width,
|
||||||
|
widthFactor,
|
||||||
|
sourceWidth,
|
||||||
|
parent,
|
||||||
|
cells: riverCells,
|
||||||
|
basin,
|
||||||
|
name,
|
||||||
|
type: "River"
|
||||||
|
});
|
||||||
const id = "river" + riverId;
|
const id = "river" + riverId;
|
||||||
|
|
||||||
// render river
|
// render river
|
||||||
lineGen.curve(d3.curveCatmullRom.alpha(0.1));
|
lineGen.curve(d3.curveCatmullRom.alpha(0.1));
|
||||||
viewbox.select("#rivers").append("path").attr("id", id).attr("d", getRiverPath(meanderedPoints, widthFactor, sourceWidth));
|
viewbox
|
||||||
|
.select("#rivers")
|
||||||
|
.append("path")
|
||||||
|
.attr("id", id)
|
||||||
|
.attr("d", getRiverPath(meanderedPoints, widthFactor, sourceWidth));
|
||||||
|
|
||||||
editRiver(id);
|
editRiver(id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -626,10 +626,11 @@ function addRiverOnClick() {
|
||||||
getType,
|
getType,
|
||||||
getWidth,
|
getWidth,
|
||||||
getOffset,
|
getOffset,
|
||||||
getApproximateLength
|
getApproximateLength,
|
||||||
|
getNextId
|
||||||
} = Rivers;
|
} = Rivers;
|
||||||
const riverCells = [];
|
const riverCells = [];
|
||||||
let riverId = rivers.length ? last(rivers).i + 1 : 1;
|
let riverId = getNextId(rivers);
|
||||||
let parent = riverId;
|
let parent = riverId;
|
||||||
|
|
||||||
const initialFlux = grid.cells.prec[cells.g[i]];
|
const initialFlux = grid.cells.prec[cells.g[i]];
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
// version and caching control
|
// version and caching control
|
||||||
const version = "1.89.12"; // generator version, update each time
|
const version = "1.89.13"; // generator version, update each time
|
||||||
|
|
||||||
{
|
{
|
||||||
document.title += " v" + version;
|
document.title += " v" + version;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue