LdnGameData.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using Gommon;
  2. using LibHac.Ns;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. namespace Ryujinx.Ava.Utilities.AppLibrary
  7. {
  8. public struct LdnGameData
  9. {
  10. public string Id { get; set; }
  11. public int PlayerCount { get; set; }
  12. public int MaxPlayerCount { get; set; }
  13. public string GameName { get; set; }
  14. public string TitleId { get; set; }
  15. public string Mode { get; set; }
  16. public string Status { get; set; }
  17. public IEnumerable<string> Players { get; set; }
  18. public static Array GetArrayForApp(
  19. IEnumerable<LdnGameData> receivedData, ref ApplicationControlProperty acp)
  20. {
  21. LibHac.Common.FixedArrays.Array8<ulong> communicationId = acp.LocalCommunicationId;
  22. return new Array(receivedData.Where(game =>
  23. communicationId.Items.Contains(game.TitleId.ToULong())
  24. ));
  25. }
  26. public class Array
  27. {
  28. private readonly LdnGameData[] _ldnDatas;
  29. internal Array(IEnumerable<LdnGameData> receivedData)
  30. {
  31. _ldnDatas = receivedData.ToArray();
  32. }
  33. public int PlayerCount => _ldnDatas.Sum(it => it.PlayerCount);
  34. public int GameCount => _ldnDatas.Length;
  35. }
  36. }
  37. }