The "sectorDisplay" cockpit primitive (Secondary overlay, the radar SECTOR X/Z coordinate read-out) was PROSE-ONLY in btl4gau3 (placeholder Make, no ctor/ methodDescription/registration) -> the config line was parse-SKIPPED and never built. Reconstructed byte-verified from the disassembly (ctor @4c9e10, Execute @4ca07c, methodDescription PE-parse): SectorDisplay : GraphicGauge, sizeof 0xC4. Its Execute reads the linked mech's world position and shows two 100-unit sector numerics: numericA = Round(-localOrigin.z * 0.01) + 500 numericB = Round( localOrigin.x * 0.01) + 500 (rounding = round-to-nearest == FUN_004dcd94, corrected from the reviewer's wrong "truncate" claim; 0.01 const PE-verified; -Z/+X axis + fchs confirmed from asm). Overridden slots: LinkToEntity(9) caches the subject, BecameActive(3, non-inactivating), Execute(16) -> satisfies the container-Execute rule. Layout overflow-locked (static_assert sizeof<=0xC4). Make/ctor/dtor mirror the registered PilotList sibling; the config image name is copied (nameCopy) since Execute reads it per-frame. Registered in BTL4MethodDescription[]. VERIFIED LIVE (BT_SECTOR_LOG): Make port=1 pos=(125,579) image=helv15.pcc gridCached=1; Execute -Z=960.4 X=361.6 -> sectorA=510 sectorB=504 (Round(9.6)+500=510, Round(3.6)+500=504 -- authentic 100-unit sectors from live mech position). Gauge composite renders full, no crash. The skip list is now exactly the two remaining widgets (prepEngr x12, messageBoard). Also: a permanent BT_GAUGE_SKIP_LOG diagnostic (GAUGREND.cpp, gated) that logs each unregistered gauge primitive the dev-parse skips -- the tool that pinned this down (earlier "not built" runs were killed before the lazy gauge-renderer init). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
24 lines
870 B
Python
24 lines
870 B
Python
lines=open('GAUGE/L4GAUGE.CFG',encoding='latin-1').read().split('\n')
|
|
depth=0; start=None
|
|
for i,l in enumerate(lines[4900:5160],start=4901):
|
|
for ch in l:
|
|
if ch=='{': depth+=1
|
|
elif ch=='}': depth-=1
|
|
if i in (4901,4902,5127,5129,5146,5152) or depth==0 and i>4902 and start is None:
|
|
pass
|
|
# find Secondary1 block extent
|
|
depth=0; opened=False; close=None
|
|
for i,l in enumerate(lines,start=1):
|
|
if i<4901: continue
|
|
for ch in l:
|
|
if ch=='{': depth+=1; opened=True
|
|
elif ch=='}': depth-=1
|
|
if opened and depth==0:
|
|
close=i; break
|
|
print("Secondary1 block: 4901 ..", close, "| sectorDisplay@5146 inside:", 4901<=5146<=close)
|
|
# what ports are in the block
|
|
for i in range(4901,close+1):
|
|
l=lines[i-1].strip()
|
|
if l.startswith('port') or 'sectorDisplay' in l or l.endswith('overlay;'):
|
|
print(f" {i}: {l}")
|