diff --git a/src/Ryujinx/DiscordIntegrationModule.cs b/src/Ryujinx/DiscordIntegrationModule.cs index 7f48089b9..c9fa1f732 100644 --- a/src/Ryujinx/DiscordIntegrationModule.cs +++ b/src/Ryujinx/DiscordIntegrationModule.cs @@ -82,36 +82,6 @@ namespace Ryujinx.Ava } } - public static string MarioKart8(object obj) - { - return obj switch - { - // Single Player - "Single" => "Single Player", - // Multiplayer - "Multi-2players" => "Multiplayer 2 Players", - "Multi-3players" => "Multiplayer 3 Players", - "Multi-4players" => "Multiplayer 4 Players", - // Wireless/LAN Play - "Local-Single" => "Wireless/LAN Play", - "Local-2players" => "Wireless/LAN Play 2 Players", - // CC Classes - "50cc" => "50cc", - "100cc" => "100cc", - "150cc" => "150cc", - "Mirror" => "Mirror (150cc)", - "200cc" => "200cc", - // Modes - "GrandPrix" => "Grand Prix", - "TimeAttack" => "Time Trials", - "VS" => "VS Races", - "Battle" => "Battle Mode", - "RaceStart" => "Selecting a Course", - "Race" => "Racing", - _ => "Playing Mario Kart 8 Deluxe" - }; - } - public static void Use(Optional titleId) { if (titleId.TryGet(out string tid)) @@ -155,45 +125,13 @@ namespace Ryujinx.Ava _discordClient?.SetPresence(_discordPresenceMain); _discordPresencePlaying = null; } - - private static readonly PlayReportAnalyzer _playReportAnalyzer = new PlayReportAnalyzer() - .AddSpec( // Breath of the Wild - "01007ef00011e000", - gameSpec => - gameSpec.AddValueFormatter("IsHardMode", val => val is 1 ? "Playing Master Mode" : "Playing Normal Mode") - ) - .AddSpec( // Super Mario Odyssey - "0100000000010000", - gameSpec => - gameSpec.AddValueFormatter("is_kids_mode", val => val is 1 ? "Playing in Assist Mode" : "Playing in Regular Mode") - ) - .AddSpec( // Super Mario Odyssey (China) - "010075000ECBE000", - gameSpec => - gameSpec.AddValueFormatter("is_kids_mode", val => val is 1 ? "Playing in 帮助模式" : "Playing in 普通模式") - ) - .AddSpec( // Super Mario 3D World + Bowser's Fury - "010028600EBDA000", - gameSpec => - gameSpec.AddValueFormatter("mode", val => val is 0 ? "Playing Super Mario 3D World" : "Playing Bowser's Fury") - ) - .AddSpec( // Mario Kart 8 Deluxe - "0100152000022000", - gameSpec => - gameSpec.AddValueFormatter("To", MarioKart8) - ) - .AddSpec( // Mario Kart 8 Deluxe (China) - "010075100E8EC000", - gameSpec => - gameSpec.AddValueFormatter("To", MarioKart8) - ); private static void HandlePlayReport(MessagePackObject playReport) { if (!TitleIDs.CurrentApplication.Value.HasValue) return; if (_discordPresencePlaying is null) return; - Optional details = _playReportAnalyzer.Run(TitleIDs.CurrentApplication.Value, playReport); + Optional details = PlayReport.Analyzer.Run(TitleIDs.CurrentApplication.Value, playReport); if (!details.HasValue) return; diff --git a/src/Ryujinx/Utilities/PlayReport.cs b/src/Ryujinx/Utilities/PlayReport.cs new file mode 100644 index 000000000..e913ffa13 --- /dev/null +++ b/src/Ryujinx/Utilities/PlayReport.cs @@ -0,0 +1,76 @@ +using Ryujinx.Common.Helper; + +namespace Ryujinx.Ava.Utilities +{ + public static class PlayReport + { + public static PlayReportAnalyzer Analyzer { get; } = new PlayReportAnalyzer() + .AddSpec( + "01007ef00011e000", + spec => spec.AddValueFormatter("IsHardMode", BreathOfTheWild_MasterMode) + ) + .AddSpec( // Super Mario Odyssey + "0100000000010000", + spec => + spec.AddValueFormatter("is_kids_mode", SuperMarioOdyssey_AssistMode) + ) + .AddSpec( // Super Mario Odyssey (China) + "010075000ECBE000", + spec => + spec.AddValueFormatter("is_kids_mode", SuperMarioOdysseyChina_AssistMode) + ) + .AddSpec( // Super Mario 3D World + Bowser's Fury + "010028600EBDA000", + spec => spec.AddValueFormatter("mode", SuperMario3DWorldOrBowsersFury) + ) + .AddSpec( // Mario Kart 8 Deluxe + "0100152000022000", + spec => spec.AddValueFormatter("To", MarioKart8Deluxe_Mode) + ) + .AddSpec( // Mario Kart 8 Deluxe (China) + "010075100E8EC000", + spec => spec.AddValueFormatter("To", MarioKart8Deluxe_Mode) + ); + + private static string BreathOfTheWild_MasterMode(object val) + => val is 1 ? "Playing Master Mode" : "Playing Normal Mode"; + + private static string SuperMarioOdyssey_AssistMode(object val) + => val is 1 ? "Playing in Assist Mode" : "Playing in Regular Mode"; + + private static string SuperMarioOdysseyChina_AssistMode(object val) + => val is 1 ? "Playing in 帮助模式" : "Playing in 普通模式"; + + private static string SuperMario3DWorldOrBowsersFury(object val) + => val is 0 ? "Playing Super Mario 3D World" : "Playing Bowser's Fury"; + + private static string MarioKart8Deluxe_Mode(object obj) + => obj switch + { + // Single Player + "Single" => "Single Player", + // Multiplayer + "Multi-2players" => "Multiplayer 2 Players", + "Multi-3players" => "Multiplayer 3 Players", + "Multi-4players" => "Multiplayer 4 Players", + // Wireless/LAN Play + "Local-Single" => "Wireless/LAN Play", + "Local-2players" => "Wireless/LAN Play 2 Players", + // CC Classes + "50cc" => "50cc", + "100cc" => "100cc", + "150cc" => "150cc", + "Mirror" => "Mirror (150cc)", + "200cc" => "200cc", + // Modes + "GrandPrix" => "Grand Prix", + "TimeAttack" => "Time Trials", + "VS" => "VS Races", + "Battle" => "Battle Mode", + "RaceStart" => "Selecting a Course", + "Race" => "Racing", + //TODO: refactor value formatting system to pass in the name from the content archive so this can be localized properly + _ => "Playing Mario Kart 8 Deluxe" + }; + } +}