fix: fix map gen again
This commit is contained in:
parent
c30db2f8a4
commit
1e5e4e9f7e
|
|
@ -272,27 +272,18 @@ function connectWildToWild(
|
|||
function connectWildToSettlement(
|
||||
wildLayer: MapLayer,
|
||||
settlementLayer: MapLayer,
|
||||
rng: RNG
|
||||
_rng: RNG
|
||||
): void {
|
||||
// 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.
|
||||
//
|
||||
// Variation: randomly flip to reverse pattern w[0]→{s[2],s[3]}, w[1]→{s[1],s[2]}, w[2]→{s[0],s[1]}
|
||||
// Both patterns guarantee no crossings.
|
||||
// This pattern guarantees no crossings because target indices are always
|
||||
// non-decreasing when sorted by source indices.
|
||||
|
||||
const reverse = rng.next() < 0.5;
|
||||
|
||||
if (reverse) {
|
||||
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]];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Settlement nodes connect to wild nodes:
|
||||
|
|
@ -306,26 +297,17 @@ function connectWildToSettlement(
|
|||
function connectSettlementToWild(
|
||||
settlementLayer: MapLayer,
|
||||
wildLayer: MapLayer,
|
||||
rng: RNG
|
||||
_rng: RNG
|
||||
): void {
|
||||
// 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
|
||||
// Both patterns guarantee no crossings.
|
||||
// This pattern guarantees no crossings because when edges are sorted by
|
||||
// source index, the minimum target index is non-decreasing.
|
||||
|
||||
const reverse = rng.next() < 0.5;
|
||||
|
||||
if (reverse) {
|
||||
settlementLayer.nodes[0].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]];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* All 3 wild nodes in the last wild layer connect to End.
|
||||
|
|
|
|||
Loading…
Reference in New Issue