From fd05b76554fba6332c83400353b991c25929feed Mon Sep 17 00:00:00 2001
From: Emmanuel Hansen <emmausssss@gmail.com>
Date: Mon, 26 Jun 2023 20:23:40 +0000
Subject: [PATCH] make applet manager reflection free

---
 src/Ryujinx.HLE/HOS/Applets/AppletManager.cs | 33 +++++++++-----------
 1 file changed, 15 insertions(+), 18 deletions(-)

diff --git a/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs b/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs
index 30300f1b6..3c34d5c78 100644
--- a/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs
+++ b/src/Ryujinx.HLE/HOS/Applets/AppletManager.cs
@@ -8,27 +8,24 @@ namespace Ryujinx.HLE.HOS.Applets
 {
     static class AppletManager
     {
-        private static readonly Dictionary<AppletId, Type> _appletMapping;
-
-        static AppletManager()
-        {
-            _appletMapping = new Dictionary<AppletId, Type>
-            {
-                { AppletId.Error,            typeof(ErrorApplet)            },
-                { AppletId.PlayerSelect,     typeof(PlayerSelectApplet)     },
-                { AppletId.Controller,       typeof(ControllerApplet)       },
-                { AppletId.SoftwareKeyboard, typeof(SoftwareKeyboardApplet) },
-                { AppletId.LibAppletWeb,     typeof(BrowserApplet)          },
-                { AppletId.LibAppletShop,    typeof(BrowserApplet)          },
-                { AppletId.LibAppletOff,     typeof(BrowserApplet)          },
-            };
-        }
-
         public static IApplet Create(AppletId applet, Horizon system)
         {
-            if (_appletMapping.TryGetValue(applet, out Type appletClass))
+            switch (applet)
             {
-                return (IApplet)Activator.CreateInstance(appletClass, system);
+                case AppletId.Controller:
+                    return new ControllerApplet(system);
+                case AppletId.Error:
+                    return new ErrorApplet(system);
+                case AppletId.PlayerSelect:
+                    return new PlayerSelectApplet(system);
+                case AppletId.SoftwareKeyboard:
+                    return new SoftwareKeyboardApplet(system);
+                case AppletId.LibAppletWeb:
+                    return new BrowserApplet(system);
+                case AppletId.LibAppletShop:
+                    return new BrowserApplet(system);
+                case AppletId.LibAppletOff:
+                    return new BrowserApplet(system);
             }
 
             throw new NotImplementedException($"{applet} applet is not implemented.");