PlayerSelectApplet.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 AppletFifo<byte[]> _inputData;
  11. private AppletFifo<byte[]> _outputData;
  12. public event EventHandler AppletStateChanged;
  13. public PlayerSelectApplet(Horizon system)
  14. {
  15. _system = system;
  16. }
  17. public ResultCode Start(AppletFifo<byte[]> inData, AppletFifo<byte[]> outData)
  18. {
  19. _inputData = inData;
  20. _outputData = outData;
  21. // TODO(jduncanator): Parse PlayerSelectConfig from input data
  22. _outputData.Push(BuildResponse());
  23. AppletStateChanged?.Invoke(this, null);
  24. return ResultCode.Success;
  25. }
  26. public ResultCode GetResult()
  27. {
  28. return ResultCode.Success;
  29. }
  30. private byte[] BuildResponse()
  31. {
  32. UserProfile currentUser = _system.State.Account.LastOpenedUser;
  33. using (MemoryStream stream = new MemoryStream())
  34. using (BinaryWriter writer = new BinaryWriter(stream))
  35. {
  36. writer.Write((ulong)PlayerSelectResult.Success);
  37. currentUser.UserId.Write(writer);
  38. return stream.ToArray();
  39. }
  40. }
  41. }
  42. }