Add manual radar ping, blip refresh/fade, and resolution statue barrier

- Manual hider ping on "E": server-authoritative RequestManualPing gated to
  Seek + living hider; shared EmitRadarPings path so interval and manual pings
  produce identical blips. Ping key read client-side in GameModeManager, role-
  gated and excluded in FreeCam (E is fly-up there).
- Radar refreshes an existing blip for the same transform target instead of
  duplicating it (lifetime resets to the configured value) via RadarTarget.Refresh.
- Blips fade in/out independently of the disc fade: per-blip MoveTowards factor
  multiplied on top of the radar fade, refresh-safe, with separate in/out speeds.
- Resolution countdown waits for conversion statues to load: generalized the
  match-start loading barrier (RunReadinessBarrier over _barrierTargets, hold
  phase carried in MsgBeginLoad) and run it a second time over statue IDs before
  starting the real resolveDuration. Only holds for Conversion with real statues.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 4.8 committed 2026-07-06 13:59:28 +02:00
1 parent 8f31c07bef
commit bfcd84afe4
4 files changed
+199 -64

No files matched your search

+12
View File
@@ -117,6 +117,18 @@ public sealed class Radar : MonoBehaviour
return null;
}
// Already tracking this exact transform? Refresh its countdown instead of stacking a duplicate blip,
// so a fresh ping (interval or manual) just resets the existing target's lifetime.
for (int i = 0; i < _blips.Count; i++)
{
var existing = _blips[i];
if (existing && existing.Target == target)
{
existing.Refresh(lifetime);
return existing;
}
}
Transform clone = Instantiate(targetTemplate, targetTemplate.parent);
clone.name = "Target";
clone.localPosition = targetTemplate.localPosition;