BepInEx does not pick up external edits to a plugin's .cfg, so tuning values
while the game ran silently did nothing - the plugin kept the values loaded at
startup. Now watches the config file's mtime and calls Config.Reload() when it
changes, so edits apply within ~2s with no restart. Reload is wrapped in
try/catch so a malformed .cfg warns instead of spamming exceptions.
HUD adjustments now always log (not just under Verbose) with the resulting
scale, so it is obvious whether a value took effect.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Config-driven so values are tunable without recompiling or pasting console
scripts. Camera is deliberately untouched - it is orthographic with constant
orthographicSize, which is already correct Hor+ at 32:9.
Fixes the two UI families separately, each via the lever that actually works:
- HUD (ScreenSpaceOverlay/ScaleWithScreenSize): match=1 + referenceResolution.y
raised by HudScale, shrinking the HUD while giving the layout more room.
- World labels (WorldSpace): canvas transform localScale, because
CanvasScaler.scaleFactor is overwritten by HandleWorldCanvas every frame.
Baselines are cached per canvas so periodic re-apply never compounds.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Recon: Unity 6000.0.62f1, Mono backend (readable C# assemblies), URP +
Cinemachine, no DRM. No FOV logic in game code, so the horizontal-FOV lock is
a serialized camera setting - needs runtime inspection via BepInEx/UnityExplorer.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>