namespace Sandbox { /// /// We might have multiple rich presence systems running (Steam, Discord, ...) /// internal interface IRichPresenceSystem { public void Poll(); } /// /// Rich Presence System - polls rich presence state periodically. /// All in one place so we don't update rich presence in 100 places /// internal static class RichPresenceSystem { /// /// The current rich presence system /// static IRichPresenceSystem Current { get; set; } = new SteamRichPresenceSystem(); static RealTimeUntil TimeUntilNextPoll = 0; /// /// Called by ClientDll Tick to poll active rich presence systems /// internal static void Tick() { if ( TimeUntilNextPoll ) { Current.Poll(); // Poll every 5 seconds TimeUntilNextPoll = 5; } } } }