/ src / Ryujinx.HLE / HOS / Applets / PlayerSelect / PlayerSelectApplet.cs
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  }