mirror of
https://github.com/Caraxi/mare.client.git
synced 2025-12-12 17:07:22 +01:00
more unnecessary perf improvements
This commit is contained in:
parent
fba83f0602
commit
3fcd843a2d
2 changed files with 12 additions and 9 deletions
|
|
@ -47,7 +47,7 @@ public class OnlinePlayerManager : DisposableMediatorSubscriberBase
|
|||
|
||||
var playerCharacters = _dalamudUtil.GetPlayerCharacters();
|
||||
var chars = _pairManager.FindAllPairs(playerCharacters);
|
||||
var newVisiblePlayers = (from pChar in chars.Where(p => p.Pair != null && p.Pair.InitializePair(p.Character.Name.ToString()))
|
||||
var newVisiblePlayers = (from pChar in chars.Where(p => p.Pair.InitializePair(p.Character.Name.ToString()))
|
||||
select pChar.Pair.UserData).ToList();
|
||||
|
||||
if (newVisiblePlayers.Any())
|
||||
|
|
|
|||
|
|
@ -21,9 +21,9 @@ public sealed class PairManager : DisposableMediatorSubscriberBase
|
|||
private readonly ConcurrentDictionary<GroupData, GroupFullInfoDto> _allGroups = new(GroupDataComparer.Instance);
|
||||
private readonly MareConfigService _configurationService;
|
||||
private readonly DalamudContextMenu _dalamudContextMenu;
|
||||
private readonly Dictionary<string, Pair> _indexedPairs = new(StringComparer.Ordinal);
|
||||
private readonly Func<Pair> _pairFactory;
|
||||
private Lazy<List<Pair>> _directPairsInternal;
|
||||
|
||||
private Lazy<Dictionary<GroupFullInfoDto, List<Pair>>> _groupPairsInternal;
|
||||
|
||||
public PairManager(ILogger<PairManager> logger, Func<Pair> pairFactory,
|
||||
|
|
@ -91,14 +91,9 @@ public sealed class PairManager : DisposableMediatorSubscriberBase
|
|||
RecreateLazy();
|
||||
}
|
||||
|
||||
public List<(PlayerCharacter Character, Pair? Pair)> FindAllPairs(List<PlayerCharacter> playerCharacters)
|
||||
public List<(PlayerCharacter Character, Pair Pair)> FindAllPairs(List<PlayerCharacter> playerCharacters)
|
||||
{
|
||||
var indexedPairs = new Dictionary<string, Pair>(StringComparer.Ordinal);
|
||||
foreach (var pair in _allClientPairs.Values)
|
||||
{
|
||||
indexedPairs[pair.GetPlayerNameHash()] = pair;
|
||||
}
|
||||
return playerCharacters.Select(p => (p, indexedPairs.TryGetValue(p.GetHash256(), out var pair) ? pair : null)).ToList();
|
||||
return playerCharacters.Select(p => (p, _indexedPairs.TryGetValue(p.GetHash256(), out var pair) ? pair : null)).Where(p => p.Item2 != null).ToList()!;
|
||||
}
|
||||
|
||||
public Pair? FindPair(PlayerCharacter? pChar)
|
||||
|
|
@ -353,6 +348,14 @@ public sealed class PairManager : DisposableMediatorSubscriberBase
|
|||
|
||||
private void DalamudUtilOnDelayedFrameworkUpdate()
|
||||
{
|
||||
_indexedPairs.Clear();
|
||||
foreach (var pair in _allClientPairs.Values.Where(p => string.IsNullOrEmpty(p.PlayerName)))
|
||||
{
|
||||
var hash = pair.GetPlayerNameHash();
|
||||
if (string.IsNullOrEmpty(hash)) continue;
|
||||
_indexedPairs[hash] = pair;
|
||||
}
|
||||
|
||||
foreach (Pair pair in _allClientPairs.Select(p => p.Value).Where(p => p.HasCachedPlayer).ToList())
|
||||
{
|
||||
if (!pair.CachedPlayerExists)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue