Production fixes surfaced by honest test triage: - hud_groups.gd: _set_group_z crashed on freed HUD nodes — the typed loop variable errors before the is_instance_valid guard runs; prune first - fog_state.gd: _resize cleared _prev_visible (world-space keys survive resizes), so pre-resize tiles never decayed VISIBLE→EXPLORED (D-059) Test debt (T-928/929/934/935/936/937/938/939, T-864, T-973): lambda local-capture bugs rewritten with array captures (now assert exact emission counts), e2e suites updated to the current handshake + StartupMessage protocol and stream-aware reads against the live binary, fog perf test measures steady state, chime test pins the shipped 800ms catalog asset (D-067 amended separately), monologue gdUnit4 API typo, battery-warning tests follow the MetaScreen on_open lifecycle. 3 sprint2 proof tests revived (corner_reveal had passed from the wrong tile — NPC3 blocks (18,14); route corrected). Soft-skips converted to real do_skip reporting. T-1068: 7 orphan .gd.uid deleted, _format_pop/_format_radius deduped into atlas_format.gd (preload, no class_name — headless cache). Suite: 1264 cases/20 failures → 1268/0, independently re-verified (2536/2536, exit 0). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
29 lines
933 B
GDScript
29 lines
933 B
GDScript
extends RefCounted
|
|
## Shared formatting helpers for Atlas screens (T-1068).
|
|
## Deduplicated from planet_screen.gd / system_screen.gd.
|
|
## Consumed via explicit preload (no class_name — avoids the global class
|
|
## cache dependency that breaks headless test runs on fresh checkouts):
|
|
## const AtlasFormat := preload("res://ui/implant/apps/atlas/atlas_format.gd")
|
|
|
|
|
|
## Thousands-separated integer, e.g. 1234567 -> "1,234,567".
|
|
static func format_pop(pop: int) -> String:
|
|
if pop <= 0:
|
|
return "0"
|
|
var s: String = str(pop)
|
|
var result: String = ""
|
|
var count: int = 0
|
|
for i: int in range(s.length() - 1, -1, -1):
|
|
if count > 0 and count % 3 == 0:
|
|
result = "," + result
|
|
result = s[i] + result
|
|
count += 1
|
|
return result
|
|
|
|
|
|
## Body radius in km — thousands-separated above 10,000 km, plain below.
|
|
static func format_radius(km: float) -> String:
|
|
if km >= 10000.0:
|
|
return "%s km" % format_pop(int(km))
|
|
return "%.0f km" % km
|