Files
BT411/engine/MUNGA
CydandClaude Opus 4.8 ca988db9ed radar: draw the MAP GEOMETRY -- staticEntities was empty on two stacked gates
Playtester DOS-binary comparison: our radar showed blips + wedge but NO map
outlines (the DOS reference draws the whole arena).  MapDisplay::DrawStatic
was always a faithful, working drawer of the rtype-18 GaugeImage outlines
(the same records docs/MAPS.html renders) -- it drew nothing because
staticEntityList was empty, from TWO stacked port regressions; fixing either
alone is insufficient:

1. GaugeRenderer::RebuildEntityGrid (per frame) Clear()ed BOTH grids and
   refilled from the DYNAMIC host iterators only -- the 528 static-flagged
   (0x20C) UnscalableTerrain map placements, which carry most arena outlines
   (arenall: 59 static vs 3 dynamic), were structurally excluded, and the
   wipe also destroyed anything the interest feed contributed.
2. The notify feed's static gate was transcribed as
   Terrain::GetClassDerivations() -- but the shipped content has ZERO Terrain
   records (census: 1008x UnscalableTerrain + 789x CulturalIcon, both
   deriving from Entity in our headers), so the predicate was dead code and
   rejected 100% of map geometry.  @0x4e6ef8 was almost certainly
   UnscalableTerrain's derivation (or the shipped machine's MUNGA derived
   UnscalableTerrain from Terrain).  [T3 on which; the corrected gate is
   what the content requires.]

FIX:
  - staticEntities is now PERSISTENT: filled ONCE per mission inside
    RebuildEntityGrid (AllEntityIterator; keep UnscalableTerrain-derived
    entities carrying a rtype-18 GaugeImage -- covers the static walls AND
    the dynamic CulturalIcon props the 2026-07-12 phantom-red-pip fix routed
    here).  Deterministic whether or not the interest feed delivers.
  - Per-frame RebuildEntityGrid now rebuilds only the MOVING grid (Mover
    filter + dead-mech skip unchanged).
  - Lifecycle: cleared + refill-armed at LinkToEntity (the pod process hosts
    many missions); the gate-corrected remove-notify prunes destroyed
    statics; the gate-corrected add-notify is guarded pre-fill so nothing
    double-adds.
  - BT_RADAR_LOG=1 prints '[radar] static grid filled: N'.

Verified live (glass, DEV.EGG): fill reports 326 map entities; structure
outlines now draw on the radar at the correct zoom; blips + sweep wedge
unregressed.  KB: GAUGE_COMPOSITE row 24 + the Phase-4 staticEntities
deferral resolved.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-13 07:26:15 -05:00
..