Explorar el Código

misc: chore: rewrite PlayReports.Analyzer creation to use Lazy and create the value alongside DiscordIntegrationModule init

Evan Husted hace 1 año
padre
commit
f92d09711b

+ 1 - 0
src/Ryujinx/DiscordIntegrationModule.cs

@@ -56,6 +56,7 @@ namespace Ryujinx.Ava
             ConfigurationState.Instance.EnableDiscordIntegration.Event += Update;
             TitleIDs.CurrentApplication.Event += (_, e) => Use(e.NewValue);
             HorizonStatic.PlayReport += HandlePlayReport;
+            PlayReports.Initialize();
         }
 
         private static void Update(object sender, ReactiveEventArgs<bool> evnt)

+ 75 - 61
src/Ryujinx/Utilities/PlayReport/PlayReports.cs

@@ -1,67 +1,81 @@
-namespace Ryujinx.Ava.Utilities.PlayReport
+using System;
+
+namespace Ryujinx.Ava.Utilities.PlayReport
 {
     public static partial class PlayReports
     {
-        public static Analyzer Analyzer { get; } = new Analyzer()
-            .AddSpec(
-                "01007ef00011e000",
-                spec => spec
-                    .AddValueFormatter("IsHardMode", BreathOfTheWild_MasterMode)
-                    // reset to normal status when switching between normal & master mode in title screen
-                    .AddValueFormatter("AoCVer", FormattedValue.SingleAlwaysResets)
-            )
-            .AddSpec(
-                "0100f2c0115b6000",
-                spec => spec
-                    .AddValueFormatter("PlayerPosY", TearsOfTheKingdom_CurrentField))
-            .AddSpec(
-                "0100000000010000",
-                spec =>
-                    spec.AddValueFormatter("is_kids_mode", SuperMarioOdyssey_AssistMode)
-            )
-            .AddSpec(
-                "010075000ecbe000",
-                spec =>
-                    spec.AddValueFormatter("is_kids_mode", SuperMarioOdysseyChina_AssistMode)
-            )
-            .AddSpec(
-                "010028600ebda000",
-                spec => spec.AddValueFormatter("mode", SuperMario3DWorldOrBowsersFury)
-            )
-            .AddSpec( // Global & China IDs
-                ["0100152000022000", "010075100e8ec000"],
-                spec => spec.AddValueFormatter("To", MarioKart8Deluxe_Mode)
-            )
-            .AddSpec(
-                ["0100a3d008c5c000", "01008f6008c5e000"],
-                spec => spec
-                    .AddValueFormatter("area_no", PokemonSVArea)
-                    .AddValueFormatter("team_circle", PokemonSVUnionCircle)
-            )
-            .AddSpec(
-                "01006a800016e000",
-                spec => spec
-                    .AddSparseMultiValueFormatter(
-                        [
-                            // Metadata to figure out what PlayReport we have.
-                            "match_mode", "match_submode", "anniversary", "fighter", "reason", "challenge_count",
-                            "adv_slot",
-                            // List of Fighters
-                            "player_1_fighter", "player_2_fighter", "player_3_fighter", "player_4_fighter",
-                            "player_5_fighter", "player_6_fighter", "player_7_fighter", "player_8_fighter",
-                            // List of rankings/placements
-                            "player_1_rank", "player_2_rank", "player_3_rank", "player_4_rank", "player_5_rank",
-                            "player_6_rank", "player_7_rank", "player_8_rank"
-                        ],
-                        SuperSmashBrosUltimate_Mode
-                    )
-            )
-            .AddSpec(
-                [
-                    "0100c9a00ece6000", "01008d300c50c000", "0100d870045b6000", 
-                    "010012f017576000", "0100c62011050000", "0100b3c014bda000"],
-                spec => spec.AddValueFormatter("launch_title_id", NsoEmulator_LaunchedGame)
-            );
+        public static void Initialize()
+        {
+            // init lazy value
+            _ = Analyzer;
+        }
+        
+        public static Analyzer Analyzer => _analyzerLazy.Value;
+
+        private static readonly Lazy<Analyzer> _analyzerLazy = new(() =>
+            new Analyzer()
+                .AddSpec(
+                    "01007ef00011e000",
+                    spec => spec
+                        .AddValueFormatter("IsHardMode", BreathOfTheWild_MasterMode)
+                        // reset to normal status when switching between normal & master mode in title screen
+                        .AddValueFormatter("AoCVer", FormattedValue.SingleAlwaysResets)
+                )
+                .AddSpec(
+                    "0100f2c0115b6000",
+                    spec => spec
+                        .AddValueFormatter("PlayerPosY", TearsOfTheKingdom_CurrentField))
+                .AddSpec(
+                    "0100000000010000",
+                    spec =>
+                        spec.AddValueFormatter("is_kids_mode", SuperMarioOdyssey_AssistMode)
+                )
+                .AddSpec(
+                    "010075000ecbe000",
+                    spec =>
+                        spec.AddValueFormatter("is_kids_mode", SuperMarioOdysseyChina_AssistMode)
+                )
+                .AddSpec(
+                    "010028600ebda000",
+                    spec => spec.AddValueFormatter("mode", SuperMario3DWorldOrBowsersFury)
+                )
+                .AddSpec( // Global & China IDs
+                    ["0100152000022000", "010075100e8ec000"],
+                    spec => spec.AddValueFormatter("To", MarioKart8Deluxe_Mode)
+                )
+                .AddSpec(
+                    ["0100a3d008c5c000", "01008f6008c5e000"],
+                    spec => spec
+                        .AddValueFormatter("area_no", PokemonSVArea)
+                        .AddValueFormatter("team_circle", PokemonSVUnionCircle)
+                )
+                .AddSpec(
+                    "01006a800016e000",
+                    spec => spec
+                        .AddSparseMultiValueFormatter(
+                            [
+                                // Metadata to figure out what PlayReport we have.
+                                "match_mode", "match_submode", "anniversary", "fighter", "reason", "challenge_count",
+                                "adv_slot",
+                                // List of Fighters
+                                "player_1_fighter", "player_2_fighter", "player_3_fighter", "player_4_fighter",
+                                "player_5_fighter", "player_6_fighter", "player_7_fighter", "player_8_fighter",
+                                // List of rankings/placements
+                                "player_1_rank", "player_2_rank", "player_3_rank", "player_4_rank", "player_5_rank",
+                                "player_6_rank", "player_7_rank", "player_8_rank"
+                            ],
+                            SuperSmashBrosUltimate_Mode
+                        )
+                )
+                .AddSpec(
+                    [
+                        "0100c9a00ece6000", "01008d300c50c000", "0100d870045b6000",
+                        "010012f017576000", "0100c62011050000", "0100b3c014bda000"
+                    ],
+                    spec => spec.AddValueFormatter("launch_title_id", NsoEmulator_LaunchedGame)
+                )
+                .AddSpec("01002da013484000", spec => spec.AddValueFormatter("rupees", SkywardSwordHD_Rupees))
+        );
 
         private static string Playing(string game) => $"Playing {game}";
     }