Skip to content

Commit

Permalink
misc: Collapse LdnGameDataArray into the main class as an inner class
Browse files Browse the repository at this point in the history
- privated the constructor; only obtainable by the static helper on the main LdnGameData class.
- constructor logic now in the static helper; constructor just directly sets the data it's given.
  • Loading branch information
GreemDev committed Dec 27, 2024
1 parent 0707427 commit 56e45ae
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 28 deletions.
26 changes: 26 additions & 0 deletions src/Ryujinx.UI.Common/App/LdnGameData.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
using LibHac.Ns;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Ryujinx.UI.App.Common
{
Expand All @@ -12,5 +15,28 @@ public struct LdnGameData
public string Mode { get; set; }
public string Status { get; set; }
public IEnumerable<string> Players { get; set; }

public static Array GetArrayForApp(
IEnumerable<LdnGameData> receivedData, ref ApplicationControlProperty acp)
{
LibHac.Common.FixedArrays.Array8<ulong> communicationId = acp.LocalCommunicationId;

return new Array(receivedData.Where(game =>
communicationId.Items.Contains(Convert.ToUInt64(game.TitleId, 16))
));
}

public class Array
{
private readonly LdnGameData[] _ldnDatas;

internal Array(IEnumerable<LdnGameData> receivedData)
{
_ldnDatas = receivedData.ToArray();
}

public int PlayerCount => _ldnDatas.Sum(it => it.PlayerCount);
public int GameCount => _ldnDatas.Length;
}
}
}
24 changes: 0 additions & 24 deletions src/Ryujinx.UI.Common/App/LdnGameDataList.cs

This file was deleted.

2 changes: 1 addition & 1 deletion src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public class MainWindowViewModel : BaseModel
public ApplicationData GridSelectedApplication;

// Key is Title ID
public SafeDictionary<string, LdnGameDataArray> LdnData = [];
public SafeDictionary<string, LdnGameData.Array> LdnData = [];

// The UI specifically uses a thicker bordered variant of the icon to avoid crunching out the border at lower resolutions.
// For an example of this, download canary 1.2.95, then open the settings menu, and look at the icon in the top-left.
Expand Down
9 changes: 6 additions & 3 deletions src/Ryujinx/UI/Windows/MainWindow.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -171,9 +171,12 @@ private void ApplicationLibrary_LdnGameDataReceived(object sender, LdnGameDataRe
ViewModel.LdnData.Clear();
foreach (var application in ViewModel.Applications)
{
ViewModel.LdnData[application.IdString] = new LdnGameDataArray(
ldnGameDataArray,
ref application.ControlHolder.Value
ref var controlHolder = ref application.ControlHolder.Value;

ViewModel.LdnData[application.IdString] =
LdnGameData.GetArrayForApp(
ldnGameDataArray,
ref controlHolder
);

UpdateApplicationWithLdnData(application);
Expand Down

0 comments on commit 56e45ae

Please sign in to comment.