diff --git a/Resources/Locale/en-US/discordRPC.ftl b/Resources/Locale/en-US/discordRPC.ftl index f25ff3251..5a7def2f3 100644 --- a/Resources/Locale/en-US/discordRPC.ftl +++ b/Resources/Locale/en-US/discordRPC.ftl @@ -1,4 +1,5 @@ discord-rpc-in-main-menu = In Main Menu +discord-rpc-in-main-menu-logo-text = I think coolsville SUCKS discord-rpc-character = Username: {$username} discord-rpc-on-server = On Server: {$servername} -discord-rpc-players = Players: {$players}/{$maxplayers} \ No newline at end of file +discord-rpc-players = Players: {$players}/{$maxplayers} diff --git a/Robust.Client/Utility/DiscordRichPresence.cs b/Robust.Client/Utility/DiscordRichPresence.cs index 41e1ec312..971479ce5 100644 --- a/Robust.Client/Utility/DiscordRichPresence.cs +++ b/Robust.Client/Utility/DiscordRichPresence.cs @@ -27,13 +27,17 @@ namespace Robust.Client.Utility public void Initialize() { + var state = _loc.GetString("discord-rpc-in-main-menu"); + var largeImageKey = _configurationManager.GetCVar(CVars.DiscordRichPresenceSecondIconId); + var largeImageText = _loc.GetString("discord-rpc-in-main-menu-logo-text"); + _defaultPresence = new() { - State = _loc.GetString("discord-rpc-in-main-menu"), + State = Truncate(state, 128), Assets = new Assets { - LargeImageKey = "logo", - LargeImageText = "I think coolsville SUCKS" + LargeImageKey = Truncate(largeImageKey, 32), + LargeImageText = Truncate(largeImageText, 128), } }; _configurationManager.OnValueChanged(CVars.DiscordEnabled, newValue => @@ -104,7 +108,9 @@ namespace Robust.Client.Utility { var details = _loc.GetString("discord-rpc-on-server", ("servername", serverName)); var state = _loc.GetString("discord-rpc-players", ("players", users), ("maxplayers", maxUsers)); - var imageText = _loc.GetString("discord-rpc-character", ("username", username)); + var largeImageText = _loc.GetString("discord-rpc-character", ("username", username)); + var largeImageKey = _configurationManager.GetCVar(CVars.DiscordRichPresenceMainIconId); + var smallImageKey = _configurationManager.GetCVar(CVars.DiscordRichPresenceSecondIconId); // Strings are limited by byte count. See the setters in RichPresence. Hence the truncate calls. _activePresence = new RichPresence @@ -113,9 +119,9 @@ namespace Robust.Client.Utility State = Truncate(state, 128), Assets = new Assets { - LargeImageKey = Truncate("devstation", 32), - LargeImageText = Truncate(imageText, 128), - SmallImageKey = Truncate("logo", 32) + LargeImageKey = Truncate(largeImageKey, 32), + LargeImageText = Truncate(largeImageText, 128), + SmallImageKey = Truncate(smallImageKey, 32) } }; _client.SetPresence(_activePresence); diff --git a/Robust.Shared/CVars.cs b/Robust.Shared/CVars.cs index adc5b5ae3..2c3a4c53f 100644 --- a/Robust.Shared/CVars.cs +++ b/Robust.Shared/CVars.cs @@ -1188,6 +1188,12 @@ namespace Robust.Shared public static readonly CVarDef DiscordEnabled = CVarDef.Create("discord.enabled", true, CVar.CLIENTONLY); + public static readonly CVarDef DiscordRichPresenceMainIconId = + CVarDef.Create("discord.rich_main_icon_id", "devstation", CVar.CLIENTONLY); + + public static readonly CVarDef DiscordRichPresenceSecondIconId = + CVarDef.Create("discord.rich_second_icon_id", "logo", CVar.CLIENTONLY); + /* * RES */