diff --git a/PCK-Studio/Classes/Misc/RichPresenceClient.cs b/PCK-Studio/Classes/Misc/RichPresenceClient.cs index e674dbfd..e7bef380 100644 --- a/PCK-Studio/Classes/Misc/RichPresenceClient.cs +++ b/PCK-Studio/Classes/Misc/RichPresenceClient.cs @@ -1,14 +1,18 @@ using System; +using System.Diagnostics; using DiscordRPC; +using PckStudio.Internal; using PckStudio.Properties; +using DiscordRPC.Logging; namespace PckStudio.Classes.Misc { - // https://github.com/BullyWiiPlaza/Minecraft-Wii-U-Mod-Injector/blob/main/Minecraft%20Wii%20U%20Mod%20Injector/Helpers/DiscordRp.cs + // https://github.com/BullyWiiPlaza/Minecraft-Wii-U-Mod-Injector/blob/main/Minecraft%20Wii%20U%20Mod%20Injector/Helpers/DiscordRpc.cs static class RPC { - public static DiscordRpcClient Client; - public static readonly DateTime StartUpTime = DateTime.UtcNow; + private static DiscordRpcClient Client; + private static readonly DateTime StartUpTime = DateTime.UtcNow; + private static RichPresence _richPresence; private static readonly Assets _assets = new Assets() { @@ -16,6 +20,8 @@ namespace PckStudio.Classes.Misc LargeImageText = System.Windows.Forms.Application.ProductName, }; + private static readonly Timestamps _startTimestamp = new Timestamps(StartUpTime); + private static readonly Button[] _buttons = new Button[] { new Button() @@ -25,13 +31,34 @@ namespace PckStudio.Classes.Misc } }; + public static void Initialize() { - if (Settings.Default.ShowRichPresence) + Client ??= new DiscordRpcClient(Settings.Default.RichPresenceId); +#if DEBUG + Client.Logger = new ConsoleLogger(LogLevel.Info, true); +#endif + if (!Client.IsInitialized) { - Client ??= new DiscordRpcClient(Settings.Default.RichPresenceId); Client.Initialize(); } + SettingsManager.RegisterPropertyChangedCallback(nameof(Settings.Default.ShowRichPresence), state => + { + if (state) + { + Client.SetPresence(_richPresence); + return; + } + Client.ClearPresence(); + }); + } + + public static void Deinitialize() + { + if (Client.IsInitialized) + Client?.ClearPresence(); + Client?.Dispose(); + Client = null; } public static void SetPresence(string details) @@ -41,21 +68,16 @@ namespace PckStudio.Classes.Misc public static void SetPresence(string details, string state) { - Client?.SetPresence(new RichPresence() + _richPresence = new RichPresence() { Details = details, State = state, - Timestamps = new Timestamps() { Start = StartUpTime }, + Timestamps = _startTimestamp, Assets = _assets, Buttons = _buttons - }); - } - - public static void Deinitialize() - { - Client?.ClearPresence(); - Client?.Dispose(); - Client = null; + }; + if (Settings.Default.ShowRichPresence) + Client?.SetPresence(_richPresence); } } } \ No newline at end of file