PlayerSelectApplet.cs
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 7 namespace Ryujinx.HLE.HOS.Applets 8 { 9 internal class PlayerSelectApplet : IApplet 10 { 11 private readonly Horizon _system; 12 13 private AppletSession _normalSession; 14 #pragma warning disable IDE0052 // Remove unread private member 15 private AppletSession _interactiveSession; 16 #pragma warning restore IDE0052 17 18 public event EventHandler AppletStateChanged; 19 20 public PlayerSelectApplet(Horizon system) 21 { 22 _system = system; 23 } 24 25 public ResultCode Start(AppletSession normalSession, AppletSession interactiveSession) 26 { 27 _normalSession = normalSession; 28 _interactiveSession = interactiveSession; 29 30 // TODO(jduncanator): Parse PlayerSelectConfig from input data 31 _normalSession.Push(BuildResponse()); 32 33 AppletStateChanged?.Invoke(this, null); 34 35 _system.ReturnFocus(); 36 37 return ResultCode.Success; 38 } 39 40 public ResultCode GetResult() 41 { 42 return ResultCode.Success; 43 } 44 45 private byte[] BuildResponse() 46 { 47 UserProfile currentUser = _system.AccountManager.LastOpenedUser; 48 49 using MemoryStream stream = MemoryStreamManager.Shared.GetStream(); 50 using BinaryWriter writer = new(stream); 51 52 writer.Write((ulong)PlayerSelectResult.Success); 53 54 currentUser.UserId.Write(writer); 55 56 return stream.ToArray(); 57 } 58 } 59 }