Skip to content

Commit e1059ee

Browse files
Bug fix on submap with rivers with river.parent not visible in the new map (#1431)
* fixing issue 1411 * bug fix : getBasin() does not check if the river parent exists. added a getParent() function that retuns the current river id of the parent does not exists. bug fix : submap removes rivers not visible in the new map but does not modify river.parent of children rivers. This fix forces river.parent and river.basin to river.i in that case
1 parent f1cf1bb commit e1059ee

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

src/modules/resample.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ class Resampler {
184184
.filter((river) => river !== null);
185185

186186
pack.rivers.forEach((river) => {
187+
river.parent = Rivers.getParent(river.i);
187188
river.basin = Rivers.getBasin(river.i);
188189
river.length = Rivers.getApproximateLength(river.points);
189190
});

src/modules/river-generator.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,7 @@ class RiverModule {
558558
if (!rivers.length) return;
559559

560560
for (const river of rivers) {
561+
river.parent = this.getParent(river.i);
561562
river.basin = this.getBasin(river.i);
562563
river.name = this.getName(river.mouth);
563564
river.type = this.getType(river);
@@ -616,11 +617,18 @@ class RiverModule {
616617
pack.rivers = pack.rivers.filter((r) => !riversToRemove.includes(r.i));
617618
}
618619

620+
getParent(r: number): number {
621+
const parent = pack.rivers.find(river => river.i === r)?.parent;
622+
if (!parent || parent === r) return r;
623+
if (!pack.rivers.some(river => river.i === parent)) return r;
624+
return parent;
625+
};
626+
619627
getBasin(r: number): number {
620-
const parent = pack.rivers.find((river) => river.i === r)?.parent;
621-
if (!parent || r === parent) return r;
628+
const parent = this.getParent(r);
629+
if (parent === r) return r;
622630
return this.getBasin(parent);
623-
}
631+
};
624632

625633
getNextId(rivers: { i: number }[]) {
626634
return rivers.length ? Math.max(...rivers.map((r) => r.i)) + 1 : 1;

0 commit comments

Comments
 (0)