PlayerSelectApplet.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using Ryujinx.HLE.HOS.Services.Account.Acc;
  2. using Ryujinx.HLE.HOS.Services.Am.AppletAE;
  3. using System;
  4. using System.IO;
  5. namespace Ryujinx.HLE.HOS.Applets
  6. {
  7. internal class PlayerSelectApplet : IApplet
  8. {
  9. private Horizon _system;
  10. private AppletSession _normalSession;
  11. private AppletSession _interactiveSession;
  12. public event EventHandler AppletStateChanged;
  13. public PlayerSelectApplet(Horizon system)
  14. {
  15. _system = system;
  16. }
  17. public ResultCode Start(AppletSession normalSession, AppletSession interactiveSession)
  18. {
  19. _normalSession = normalSession;
  20. _interactiveSession = interactiveSession;
  21. // TODO(jduncanator): Parse PlayerSelectConfig from input data
  22. _normalSession.Push(BuildResponse());
  23. AppletStateChanged?.Invoke(this, null);
  24. _system.ReturnFocus();
  25. return ResultCode.Success;
  26. }
  27. public ResultCode GetResult()
  28. {
  29. return ResultCode.Success;
  30. }
  31. private byte[] BuildResponse()
  32. {
  33. UserProfile currentUser = _system.AccountManager.LastOpenedUser;
  34. using (MemoryStream stream = new MemoryStream())
  35. using (BinaryWriter writer = new BinaryWriter(stream))
  36. {
  37. writer.Write((ulong)PlayerSelectResult.Success);
  38. currentUser.UserId.Write(writer);
  39. return stream.ToArray();
  40. }
  41. }
  42. }
  43. }