AppletManager.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using Ryujinx.HLE.HOS.Applets.Browser;
  2. using Ryujinx.HLE.HOS.Applets.Error;
  3. using Ryujinx.HLE.HOS.Services.Am.AppletAE;
  4. using System;
  5. using System.Collections.Generic;
  6. namespace Ryujinx.HLE.HOS.Applets
  7. {
  8. static class AppletManager
  9. {
  10. private static Dictionary<AppletId, Type> _appletMapping;
  11. static AppletManager()
  12. {
  13. _appletMapping = new Dictionary<AppletId, Type>
  14. {
  15. { AppletId.Error, typeof(ErrorApplet) },
  16. { AppletId.PlayerSelect, typeof(PlayerSelectApplet) },
  17. { AppletId.Controller, typeof(ControllerApplet) },
  18. { AppletId.SoftwareKeyboard, typeof(SoftwareKeyboardApplet) },
  19. { AppletId.LibAppletWeb, typeof(BrowserApplet) },
  20. { AppletId.LibAppletShop, typeof(BrowserApplet) },
  21. { AppletId.LibAppletOff, typeof(BrowserApplet) }
  22. };
  23. }
  24. public static IApplet Create(AppletId applet, Horizon system)
  25. {
  26. if (_appletMapping.TryGetValue(applet, out Type appletClass))
  27. {
  28. return (IApplet)Activator.CreateInstance(appletClass, system);
  29. }
  30. throw new NotImplementedException($"{applet} applet is not implemented.");
  31. }
  32. }
  33. }