Debug helper on HorizonGame. A broadcast RPC makes every machine log the lengths of the shared catalogs (weapons, props, vehicles, doors, phone calls), settings, payday timer and clock, so desyncs can be spotted in the console.
namespace HorizonRP;
/// <summary>
/// Diagnostic réseau (essais à plusieurs, 29/10/2026) : l'hôte demande à chaque machine d'écrire
/// dans son journal ce qu'elle a reçu des systèmes partagés — longueur des catalogues, des réglages,
/// des appels. Sert à voir ce qui ne traverse pas le réseau.
/// </summary>
public sealed partial class HorizonGame
{
[Rpc.Broadcast]
public void DiagnosticReport()
{
int L( string s ) => s?.Length ?? -1;
var go = GameObject;
var w = go.Components.Get<WeaponSystem>();
var p = go.Components.Get<PropSystem>();
var v = go.Components.Get<VehicleManager>();
var d = go.Components.Get<DoorSystem>();
var ph = go.Components.Get<PhoneSystem>();
Log.Info( $"[Horizon] Diagnostic {(Networking.IsHost ? "hôte" : "client")} : armes {L( w?.CatalogJson )}, accessoires {L( w?.AccessoriesJson )}, props {L( p?.CatalogJson )}, véhicules {L( v?.ModelsJson )}, portes {L( d?.StatesJson )}, appels {L( ph?.CallsJson )}, réglages {L( SettingsJson )}, paie {SecondsToPayday}, réglages reçus {ServerSettings.Received}, heure {GameClock.Text}" );
}
}