map: click a region to switch the dossier to its owner; fix "no owner" (v0.7.0)
CI / build + unit + e2e (pull_request) Successful in 1m58s
CI / build + unit + e2e (pull_request) Successful in 1m58s
This commit is contained in:
@@ -72,7 +72,7 @@ history/
|
||||
│ └── utils.ts # cn()
|
||||
└── components/
|
||||
├── PresetPicker.tsx / NationSelect.tsx # home + nation pick screens
|
||||
├── WorldMap.tsx # MapLibre basemap + choropleth + click popup + player highlight
|
||||
├── WorldMap.tsx # MapLibre basemap + choropleth + click→dossier + hover tooltip + player highlight
|
||||
├── NationPanel.tsx # a nation's stats/territory/diplomacy dossier
|
||||
├── ActionPanel.tsx # tabs: Action / Diplomacy / Advisor + pending-queue list (per-item trash button + confirm dialog) + "Jump forward"
|
||||
├── EventFeed.tsx # scrolling event log (newest first)
|
||||
@@ -140,6 +140,17 @@ history/
|
||||
(model down) surfaces as an HTTP 502 to the client (shown as a toast).
|
||||
- **Stable per-nation colors.** `shared.nationColor(id)` hashes a nation id → hue, shared by the
|
||||
server's `RegionMap` and any client coloring so the choropleth always agrees.
|
||||
- **Map click → dossier target (owner resolved from the RegionMap).** Clicking a map region does
|
||||
NOT open a popup — it switches the dossier to that region's owning nation
|
||||
(`setViewingId(ownerId)` in `GameScreen`); the manual "Inspect" selector and a map click both set
|
||||
the same target and stay in sync. The owning nation is resolved from the authoritative `RegionMap`
|
||||
by the feature's stable ISO_A3 code, which `applyRegions` stamps into `properties.regionId`
|
||||
(properties survive into the rendered features) and the shared `regionOwner()` helper looks up.
|
||||
It must **never** be read from the feature's top-level `id`: MapLibre repacks a GeoJSON source's
|
||||
`id` into a numeric index when it stores the source, so at click/hover time `feature.id` is a
|
||||
number, never the ISO_A3 (that repacking was the "no owner" bug, #6). Unowned regions (no
|
||||
`RegionMap` entry) leave the current dossier target unchanged — never a broken dossier. The
|
||||
hover path (a non-closeable tooltip with owner + key stats) uses the same resolution.
|
||||
- **Deterministic stub.** `server/stub.ts` answers the model contract deterministically per
|
||||
queued round item: each `action` item → one military/success event, each `diplomacy` item → one
|
||||
diplomatic/partial event, an empty round → one political "The world moves on" event. The player
|
||||
|
||||
Reference in New Issue
Block a user