Fix coastline: 2-edge only, explicit waterSide, flip control
Coastline analysis and fix: - Coastlines now only show 2-edge patterns (straight, wide curve, sharp bend) — Y-junctions and crossroads removed since a coast always divides exactly two sides - Added waterSide property to HexFeature (1=CW, -1=CCW) — stored explicitly instead of computed by broken center-distance heuristic that flipped water/land at rotation midpoint - F key or "Flip water side" button in palette to toggle which side is water before placing - Inspector shows flip button (swap arrows) for placed coastlines - Rotation preserves waterSide — no more land/water swaps - Separate pattern lists: GENERAL_PATTERNS for road/river, COASTLINE_PATTERNS for coastline (core/tile-patterns.ts) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -42,13 +42,14 @@ export class HexMap {
|
||||
}
|
||||
|
||||
/** Add or update a linear feature on a hex */
|
||||
setFeature(coord: AxialCoord, terrainId: string, edgeMask: EdgeMask): void {
|
||||
setFeature(coord: AxialCoord, terrainId: string, edgeMask: EdgeMask, waterSide?: 1 | -1): void {
|
||||
const terrain = this.getTerrain(coord);
|
||||
const existing = terrain.features.find(f => f.terrainId === terrainId);
|
||||
if (existing) {
|
||||
existing.edgeMask = edgeMask;
|
||||
if (waterSide !== undefined) existing.waterSide = waterSide;
|
||||
} else {
|
||||
terrain.features.push({ terrainId, edgeMask });
|
||||
terrain.features.push({ terrainId, edgeMask, ...(waterSide !== undefined ? { waterSide } : {}) });
|
||||
}
|
||||
// Remove features with empty mask
|
||||
terrain.features = terrain.features.filter(f => f.edgeMask !== 0);
|
||||
|
||||
Reference in New Issue
Block a user