0
0
Fork 0
mirror of https://github.com/GreemDev/Ryujinx.git synced 2024-12-22 16:55:49 +00:00

UI: Add more Discord presence games.

This commit is contained in:
Evan Husted 2024-10-11 17:57:33 -05:00
parent 169126e511
commit e1dda4cef1

View file

@ -62,12 +62,6 @@ namespace Ryujinx.UI.Common
} }
} }
private static readonly string[] _discordGameAssets = [
"0100f2c0115b6000", // Tears of the Kingdom
"0100744001588000", // Cars 3: Driven to Win
];
public static void SwitchToPlayingState(string titleId, ApplicationMetadata appMeta) public static void SwitchToPlayingState(string titleId, ApplicationMetadata appMeta)
{ {
_discordClient?.SetPresence(new RichPresence _discordClient?.SetPresence(new RichPresence
@ -75,25 +69,25 @@ namespace Ryujinx.UI.Common
Assets = new Assets Assets = new Assets
{ {
LargeImageKey = _discordGameAssets.Contains(titleId.ToLower()) ? titleId : "game", LargeImageKey = _discordGameAssets.Contains(titleId.ToLower()) ? titleId : "game",
LargeImageText = TruncateToByteLength(appMeta.Title, ApplicationByteLimit), LargeImageText = TruncateToByteLength(appMeta.Title),
SmallImageKey = "ryujinx", SmallImageKey = "ryujinx",
SmallImageText = Description SmallImageText = Description
}, },
Details = TruncateToByteLength($"Playing {appMeta.Title}", ApplicationByteLimit), Details = TruncateToByteLength($"Playing {appMeta.Title}"),
State = $"Total play time: {appMeta.TimePlayed.Humanize(2, false)}", State = $"Total play time: {appMeta.TimePlayed.Humanize(2, false)}",
Timestamps = Timestamps.Now Timestamps = Timestamps.Now
}); });
} }
private static string TruncateToByteLength(string input, int byteLimit) private static string TruncateToByteLength(string input)
{ {
if (Encoding.UTF8.GetByteCount(input) <= byteLimit) if (Encoding.UTF8.GetByteCount(input) <= ApplicationByteLimit)
{ {
return input; return input;
} }
// Find the length to trim the string to guarantee we have space for the trailing ellipsis. // Find the length to trim the string to guarantee we have space for the trailing ellipsis.
int trimLimit = byteLimit - Encoding.UTF8.GetByteCount(Ellipsis); int trimLimit = ApplicationByteLimit - Encoding.UTF8.GetByteCount(Ellipsis);
// Make sure the string is long enough to perform the basic trim. // Make sure the string is long enough to perform the basic trim.
// Amount of bytes != Length of the string // Amount of bytes != Length of the string
@ -116,5 +110,49 @@ namespace Ryujinx.UI.Common
{ {
_discordClient?.Dispose(); _discordClient?.Dispose();
} }
private static readonly string[] _discordGameAssets = [
"01002da013484000", // The Legend of Zelda: Skyward Sword HD
"01007ef00011e000", // The Legend of Zelda: Breath of the Wild
"0100f2c0115b6000", // The Legend of Zelda: Tears of the Kingdom
"01008cf01baac000", // The Legend of Zelda: Echoes of Wisdom
"0100000000010000", // SUPER MARIO ODYSSEY
"010015100b514000", // Super Mario Bros. Wonder
"0100152000022000", // Mario Kart 8 Deluxe
"010049900f546000", // Super Mario 3D All-Stars
"010028600ebda000", // Super Mario 3D World + Bowser's Fury
"0100ecd018ebe000", // Paper Mario: The Thousand-Year Door
"01008f6008c5e000", // Pokémon Violet
"0100abf008968000", // Pokémon Sword
"01008db008c2c000", // Pokémon Shield
"0100000011d90000", // Pokémon Brilliant Diamond
"01001f5010dfa000", // Pokémon Legends: Arceus
"0100aa80194b0000", // Pikmin 1
"0100d680194b2000", // Pikmin 2
"0100f4c009322000", // Pikmin 3 Deluxe
"0100b7c00933a000", // Pikmin
"0100c2500fc20000", // Splatoon 3
"0100ba0018500000", // Splatoon 3: Splatfest World Premiere
"0100744001588000", // Cars 3: Driven to Win
"01006f8002326000", // Animal Crossing: New Horizons
"0100853015e86000", // No Man's Sky
"01008d100d43e000", // Saints Row IV
"0100de600beee000", // Saints Row: The Third - The Full Package
"0100d7a01b7a2000", // Star Wars: Bounty Hunter
"0100dbf01000a000", // Burnout Paradise Remastered
"0100e46006708000", // Terraria
"010056e00853a000", // A Hat in Time
"01006a800016e000", // Super Smash Bros. Ultimate
"01007bb017812000", // Portal
"0100abd01785c000", // Portal 2
"01008e200c5c2000", // Muse Dash
"01001180021fa000", // Shovel Knight: Specter of Torment
"010012101468c000", // Metroid Prime Remastered
"0100c9a00ece6000", // Nintendo 64 - Nintendo Switch Online
];
} }
} }