fix: fix map gen again
This commit is contained in:
parent
c30db2f8a4
commit
1e5e4e9f7e
|
|
@ -272,26 +272,17 @@ function connectWildToWild(
|
||||||
function connectWildToSettlement(
|
function connectWildToSettlement(
|
||||||
wildLayer: MapLayer,
|
wildLayer: MapLayer,
|
||||||
settlementLayer: MapLayer,
|
settlementLayer: MapLayer,
|
||||||
rng: RNG
|
_rng: RNG
|
||||||
): void {
|
): void {
|
||||||
// Non-crossing connection pattern: each wild connects to 2 adjacent settlements.
|
// Non-crossing connection pattern: each wild connects to 2 adjacent settlements.
|
||||||
// Base pattern: w[0]→{s[0],s[1]}, w[1]→{s[1],s[2]}, w[2]→{s[2],s[3]}
|
// Pattern: w[0]→{s[0],s[1]}, w[1]→{s[1],s[2]}, w[2]→{s[2],s[3]}
|
||||||
// This creates a "chain" where middle settlements are shared.
|
// This creates a "chain" where middle settlements are shared.
|
||||||
//
|
// This pattern guarantees no crossings because target indices are always
|
||||||
// Variation: randomly flip to reverse pattern w[0]→{s[2],s[3]}, w[1]→{s[1],s[2]}, w[2]→{s[0],s[1]}
|
// non-decreasing when sorted by source indices.
|
||||||
// Both patterns guarantee no crossings.
|
|
||||||
|
|
||||||
const reverse = rng.next() < 0.5;
|
wildLayer.nodes[0].childIds = [settlementLayer.nodeIds[0], settlementLayer.nodeIds[1]];
|
||||||
|
wildLayer.nodes[1].childIds = [settlementLayer.nodeIds[1], settlementLayer.nodeIds[2]];
|
||||||
if (reverse) {
|
wildLayer.nodes[2].childIds = [settlementLayer.nodeIds[2], settlementLayer.nodeIds[3]];
|
||||||
wildLayer.nodes[0].childIds = [settlementLayer.nodeIds[2], settlementLayer.nodeIds[3]];
|
|
||||||
wildLayer.nodes[1].childIds = [settlementLayer.nodeIds[1], settlementLayer.nodeIds[2]];
|
|
||||||
wildLayer.nodes[2].childIds = [settlementLayer.nodeIds[0], settlementLayer.nodeIds[1]];
|
|
||||||
} else {
|
|
||||||
wildLayer.nodes[0].childIds = [settlementLayer.nodeIds[0], settlementLayer.nodeIds[1]];
|
|
||||||
wildLayer.nodes[1].childIds = [settlementLayer.nodeIds[1], settlementLayer.nodeIds[2]];
|
|
||||||
wildLayer.nodes[2].childIds = [settlementLayer.nodeIds[2], settlementLayer.nodeIds[3]];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -306,25 +297,16 @@ function connectWildToSettlement(
|
||||||
function connectSettlementToWild(
|
function connectSettlementToWild(
|
||||||
settlementLayer: MapLayer,
|
settlementLayer: MapLayer,
|
||||||
wildLayer: MapLayer,
|
wildLayer: MapLayer,
|
||||||
rng: RNG
|
_rng: RNG
|
||||||
): void {
|
): void {
|
||||||
// Non-crossing pattern: s0→w0, s1→w0,w1, s2→w1,w2, s3→w2
|
// Non-crossing pattern: s0→w0, s1→w0,w1, s2→w1,w2, s3→w2
|
||||||
// Variation: randomly flip to reverse pattern s0→w2, s1→w1,w2, s2→w0,w1, s3→w0
|
// This pattern guarantees no crossings because when edges are sorted by
|
||||||
// Both patterns guarantee no crossings.
|
// source index, the minimum target index is non-decreasing.
|
||||||
|
|
||||||
const reverse = rng.next() < 0.5;
|
settlementLayer.nodes[0].childIds = [wildLayer.nodeIds[0]];
|
||||||
|
settlementLayer.nodes[1].childIds = [wildLayer.nodeIds[0], wildLayer.nodeIds[1]];
|
||||||
if (reverse) {
|
settlementLayer.nodes[2].childIds = [wildLayer.nodeIds[1], wildLayer.nodeIds[2]];
|
||||||
settlementLayer.nodes[0].childIds = [wildLayer.nodeIds[2]];
|
settlementLayer.nodes[3].childIds = [wildLayer.nodeIds[2]];
|
||||||
settlementLayer.nodes[1].childIds = [wildLayer.nodeIds[1], wildLayer.nodeIds[2]];
|
|
||||||
settlementLayer.nodes[2].childIds = [wildLayer.nodeIds[0], wildLayer.nodeIds[1]];
|
|
||||||
settlementLayer.nodes[3].childIds = [wildLayer.nodeIds[0]];
|
|
||||||
} else {
|
|
||||||
settlementLayer.nodes[0].childIds = [wildLayer.nodeIds[0]];
|
|
||||||
settlementLayer.nodes[1].childIds = [wildLayer.nodeIds[0], wildLayer.nodeIds[1]];
|
|
||||||
settlementLayer.nodes[2].childIds = [wildLayer.nodeIds[1], wildLayer.nodeIds[2]];
|
|
||||||
settlementLayer.nodes[3].childIds = [wildLayer.nodeIds[2]];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue