| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using DiscordRPC;
- using Ryujinx.Common;
- using Ryujinx.Ui.Common.Configuration;
- namespace Ryujinx.Ui.Common
- {
- public static class DiscordIntegrationModule
- {
- private const string Description = "A simple, experimental Nintendo Switch emulator.";
- private const string CliendId = "568815339807309834";
- private static DiscordRpcClient _discordClient;
- private static RichPresence _discordPresenceMain;
- public static void Initialize()
- {
- _discordPresenceMain = new RichPresence
- {
- Assets = new Assets
- {
- LargeImageKey = "ryujinx",
- LargeImageText = Description
- },
- Details = "Main Menu",
- State = "Idling",
- Timestamps = Timestamps.Now,
- Buttons = new Button[]
- {
- new Button()
- {
- Label = "Website",
- Url = "https://ryujinx.org/"
- }
- }
- };
- ConfigurationState.Instance.EnableDiscordIntegration.Event += Update;
- }
- private static void Update(object sender, ReactiveEventArgs<bool> evnt)
- {
- if (evnt.OldValue != evnt.NewValue)
- {
- // If the integration was active, disable it and unload everything
- if (evnt.OldValue)
- {
- _discordClient?.Dispose();
- _discordClient = null;
- }
- // If we need to activate it and the client isn't active, initialize it
- if (evnt.NewValue && _discordClient == null)
- {
- _discordClient = new DiscordRpcClient(CliendId);
- _discordClient.Initialize();
- _discordClient.SetPresence(_discordPresenceMain);
- }
- }
- }
- public static void SwitchToPlayingState(string titleId, string titleName)
- {
- _discordClient?.SetPresence(new RichPresence
- {
- Assets = new Assets
- {
- LargeImageKey = "game",
- LargeImageText = titleName,
- SmallImageKey = "ryujinx",
- SmallImageText = Description,
- },
- Details = $"Playing {titleName}",
- State = (titleId == "0000000000000000") ? "Homebrew" : titleId.ToUpper(),
- Timestamps = Timestamps.Now,
- Buttons = new Button[]
- {
- new Button()
- {
- Label = "Website",
- Url = "https://ryujinx.org/"
- }
- }
- });
- }
- public static void SwitchToMainMenu()
- {
- _discordClient?.SetPresence(_discordPresenceMain);
- }
- public static void Exit()
- {
- _discordClient?.Dispose();
- }
- }
- }
|