Skip to content

feat(presentation): Baubereich als Overlay sichtbar machen (#91, Paket 21.4) - #112

Merged
cubetribe merged 1 commit into
mainfrom
feat/s21-buildzone-overlay
Aug 18, 2026
Merged

feat(presentation): Baubereich als Overlay sichtbar machen (#91, Paket 21.4)#112
cubetribe merged 1 commit into
mainfrom
feat/s21-buildzone-overlay

Conversation

@cubetribe

Copy link
Copy Markdown
Collaborator

Schliesst #91. Paket 21.4.

Baut auf #109 auf (Ankerregel D-108) und ist gegen dessen Branch geöffnet — #109 zuerst mergen, danach zeigt dieser PR nur noch seinen eigenen Diff.

Was sich ändert

Bisher erfuhr der Spieler die Bauzone ausschliesslich durch Ablehnung: klicken, geht nicht, keine Begründung. Das Overlay malt sie vor dem Klick, in drei unterscheidbaren Zuständen:

Zustand Darstellung
ausserhalb der Zone kein Tint
innerhalb, baubar grün
innerhalb, aber Mindestabstand verletzt orange

Die zweite Unterscheidung ist der eigentliche Befund aus dem Testbericht: MinimumBuildingDistanceCells = 2 sperrt Zellen innerhalb des Radius, und die gefühlte Enge kam mutmasslich daher — nicht vom Radius.

Die Regel wird abgefragt, nicht nachgebaut

Jeder Texel ist die Antwort von IsInsideBuildInfluence und HasMinimumBuildingSpacing für einen 3×3-Footprint auf dieser Zelle — exakt die beiden Reads, die ValidatePlacement selbst konsumiert. Kein Radius, keine Ankerliste im Overlay.

Das ist der Grund, warum der Sprint die Reihenfolge "21.4 erst nach 21.1" nicht mehr braucht: als D-108 die Ankerliste öffnete, hat das Overlay die Änderung geerbt, ohne angefasst zu werden. In ConstructionSystem sind nur diese beiden Methoden öffentlich geworden — die Rümpfe sind unverändert.

Auch der Test hält sich daran: er pinnt nur die Relation (beide Reads sind für Applied nötig; das Paar unterscheidet "draussen" von "drin, aber gesperrt"), nie Radiuswerte oder Ankerrollen. Deshalb hat er die Regeländerung unverändert überstanden.

Bedienung und Kosten

Sichtbar automatisch im Platzierungsmodus, zusätzlich per O umschaltbar (freie Taste, Legende ergänzt). Repaint mit 4 Hz und nur solange sichtbar — der Bauzustand ändert sich ohnehin nur auf Tick-Ereignisse. FilterMode.Point, damit Grün und Orange nicht zu einem bedeutungslosen Drittton verschwimmen. Höhe 0.05: über dem Fog, unter den Markern.

Bewusst nicht gemalt: Terrain-Begehbarkeit und Feldabstände — letztere sind rollenabhängig (die Raffinerie invertiert sie), und das Vollverdikt am Cursor liefert weiterhin der Platzierungs-Ghost.

Nachweis

🤖 Generated with Claude Code

@cubetribe
cubetribe force-pushed the feat/s21-anchor-rule branch from cca97a7 to 6fcfeb0 Compare August 18, 2026 12:29
Base automatically changed from feat/s21-anchor-rule to main August 18, 2026 12:30
…t 21.4)

Bisher erfuhr der Spieler die Bauzone nur durch Ablehnung. Das Overlay malt
sie vor dem Klick, in drei Zustaenden: ausserhalb der Zone gar nichts,
innerhalb und baubar gruen, innerhalb aber Mindestabstand verletzt orange.
Die zweite Unterscheidung ist der eigentliche Befund aus dem Testbericht —
MinimumBuildingDistanceCells sperrt Zellen INNERHALB des Radius.

Die Regel wird abgefragt, nicht nachgebaut: jeder Texel ist die Antwort von
IsInsideBuildInfluence und HasMinimumBuildingSpacing, also exakt der beiden
Reads, die ValidatePlacement selbst konsumiert. Damit erbt das Overlay die
D-108-Ankeraenderung, ohne angefasst zu werden. In ConstructionSystem sind
nur diese beiden Methoden oeffentlich geworden; die Rumpfe sind unveraendert.

Sichtbar im Platzierungsmodus und per O umschaltbar. 4 Hz Repaint nur solange
sichtbar, FilterMode.Point damit Gruen und Orange nicht zu einem sinnlosen
Drittton verschwimmen.

Umsetzung durch den Kimi-K3-Worker.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@cubetribe
cubetribe force-pushed the feat/s21-buildzone-overlay branch from 87c9138 to 5a11f93 Compare August 18, 2026 12:33
@cubetribe
cubetribe merged commit 2d3fbd4 into main Aug 18, 2026
7 checks passed
@cubetribe
cubetribe deleted the feat/s21-buildzone-overlay branch August 18, 2026 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant