mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 09:41:24 +01:00
rivers creator dialog - add river
This commit is contained in:
parent
8bbfe6dd2c
commit
1dc45f05c3
3 changed files with 16 additions and 9 deletions
|
|
@ -1656,6 +1656,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="riverBottom">
|
<div id="riverBottom">
|
||||||
|
<button id="riverCreateSelectingCells" data-tip="Create new river selecting river cells" class="icon-map-pin"></button>
|
||||||
<button id="riverEditStyle" data-tip="Edit style for all rivers in Style Editor" class="icon-brush"></button>
|
<button id="riverEditStyle" data-tip="Edit style for all rivers in Style Editor" class="icon-brush"></button>
|
||||||
<button id="riverElevationProfile" data-tip="Show the elevation profile for the river" class="icon-chart-area"></button>
|
<button id="riverElevationProfile" data-tip="Show the elevation profile for the river" class="icon-chart-area"></button>
|
||||||
<button id="riverLegend" data-tip="Edit free text notes (legend) for the river" class="icon-edit"></button>
|
<button id="riverLegend" data-tip="Edit free text notes (legend) for the river" class="icon-edit"></button>
|
||||||
|
|
|
||||||
|
|
@ -74,19 +74,22 @@ function createRiver() {
|
||||||
|
|
||||||
function addRiver() {
|
function addRiver() {
|
||||||
const {rivers, cells} = pack;
|
const {rivers, cells} = pack;
|
||||||
const {addMeandering, getApproximateLength, getWidth, getOffset, getName, getRiverPath} = Rivers;
|
const {addMeandering, getApproximateLength, getWidth, getOffset, getName, getRiverPath, getBasin} = Rivers;
|
||||||
|
|
||||||
|
const riverCells = createRiver.cells;
|
||||||
|
if (riverCells.length < 2) return tip("Add at least 2 cells", false, "error");
|
||||||
|
|
||||||
const riverId = last(rivers).i + 1;
|
const riverId = last(rivers).i + 1;
|
||||||
const riverCells = createRiver.cells;
|
const parent = cells.r[last(riverCells)] || riverId;
|
||||||
|
|
||||||
riverCells.forEach(cell => {
|
riverCells.forEach(cell => {
|
||||||
if (!cells.r[cell]) cells.r[cell] = riverId;
|
if (!cells.r[cell]) cells.r[cell] = riverId;
|
||||||
});
|
});
|
||||||
|
|
||||||
const source = riverCells[0];
|
const source = riverCells[0];
|
||||||
const mouth = riverCells[riverCells.length - 1];
|
const mouth = parent === riverId ? last(riverCells) : riverCells[riverCells.length - 2];
|
||||||
const sourceWidth = 0.05;
|
const sourceWidth = 0.05;
|
||||||
const widthFactor = 1;
|
const widthFactor = 1.2;
|
||||||
|
|
||||||
const meanderedPoints = addMeandering(riverCells);
|
const meanderedPoints = addMeandering(riverCells);
|
||||||
|
|
||||||
|
|
@ -94,8 +97,9 @@ function createRiver() {
|
||||||
const length = getApproximateLength(meanderedPoints);
|
const length = getApproximateLength(meanderedPoints);
|
||||||
const width = getWidth(getOffset(discharge, meanderedPoints.length, widthFactor, sourceWidth));
|
const width = getWidth(getOffset(discharge, meanderedPoints.length, widthFactor, sourceWidth));
|
||||||
const name = getName(mouth);
|
const name = getName(mouth);
|
||||||
|
const basin = getBasin(parent);
|
||||||
|
|
||||||
rivers.push({i: riverId, source, mouth, discharge, length, width, widthFactor, sourceWidth, parent: riverId, cells: riverCells, basin: riverId, name, type: "River"});
|
rivers.push({i: riverId, source, mouth, discharge, length, width, widthFactor, sourceWidth, parent, cells: riverCells, basin, name, type: "River"});
|
||||||
|
|
||||||
// render river
|
// render river
|
||||||
lineGen.curve(d3.curveCatmullRom.alpha(0.1));
|
lineGen.curve(d3.curveCatmullRom.alpha(0.1));
|
||||||
|
|
@ -109,6 +113,7 @@ function createRiver() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeRiverCreator() {
|
function closeRiverCreator() {
|
||||||
|
body.innerHTML = "";
|
||||||
debug.select("#controlCells").remove();
|
debug.select("#controlCells").remove();
|
||||||
restoreDefaultEvents();
|
restoreDefaultEvents();
|
||||||
clearMainTip();
|
clearMainTip();
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,11 @@ function editRiver(id) {
|
||||||
modules.editRiver = true;
|
modules.editRiver = true;
|
||||||
|
|
||||||
// add listeners
|
// add listeners
|
||||||
|
document.getElementById("riverCreateSelectingCells").addEventListener("click", createRiver);
|
||||||
|
document.getElementById("riverEditStyle").addEventListener("click", () => editStyle("rivers"));
|
||||||
|
document.getElementById("riverElevationProfile").addEventListener("click", showElevationProfile);
|
||||||
|
document.getElementById("riverLegend").addEventListener("click", editRiverLegend);
|
||||||
|
document.getElementById("riverRemove").addEventListener("click", removeRiver);
|
||||||
document.getElementById("riverName").addEventListener("input", changeName);
|
document.getElementById("riverName").addEventListener("input", changeName);
|
||||||
document.getElementById("riverType").addEventListener("input", changeType);
|
document.getElementById("riverType").addEventListener("input", changeType);
|
||||||
document.getElementById("riverNameCulture").addEventListener("click", generateNameCulture);
|
document.getElementById("riverNameCulture").addEventListener("click", generateNameCulture);
|
||||||
|
|
@ -40,10 +45,6 @@ function editRiver(id) {
|
||||||
document.getElementById("riverMainstem").addEventListener("change", changeParent);
|
document.getElementById("riverMainstem").addEventListener("change", changeParent);
|
||||||
document.getElementById("riverSourceWidth").addEventListener("input", changeSourceWidth);
|
document.getElementById("riverSourceWidth").addEventListener("input", changeSourceWidth);
|
||||||
document.getElementById("riverWidthFactor").addEventListener("input", changeWidthFactor);
|
document.getElementById("riverWidthFactor").addEventListener("input", changeWidthFactor);
|
||||||
document.getElementById("riverEditStyle").addEventListener("click", () => editStyle("rivers"));
|
|
||||||
document.getElementById("riverElevationProfile").addEventListener("click", showElevationProfile);
|
|
||||||
document.getElementById("riverLegend").addEventListener("click", editRiverLegend);
|
|
||||||
document.getElementById("riverRemove").addEventListener("click", removeRiver);
|
|
||||||
|
|
||||||
function getRiver() {
|
function getRiver() {
|
||||||
const riverId = +elSelected.attr("id").slice(5);
|
const riverId = +elSelected.attr("id").slice(5);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue