PlayerSelectApplet.cs 1.5 KB

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