diff --git a/MareSynchronos/Factories/CharacterDataFactory.cs b/MareSynchronos/Factories/CharacterDataFactory.cs index 185b4bb..5106325 100644 --- a/MareSynchronos/Factories/CharacterDataFactory.cs +++ b/MareSynchronos/Factories/CharacterDataFactory.cs @@ -320,10 +320,13 @@ public class CharacterDataFactory previousData.FileReplacements.Add(objectKind, new()); } - if (!previousData.FileReplacements[objectKind].Any(k => k.ResolvedPath.ToLowerInvariant() == item.ResolvedPath.ToLowerInvariant())) + if (!previousData.FileReplacements[objectKind].Any(k => k.GamePaths.Any(p => item.GamePaths.Select(p => p.ToLowerInvariant()).Contains(p.ToLowerInvariant())))) { - if (_ipcManager.PenumbraResolvePath(item.GamePaths.First()).ToLowerInvariant() == item.GamePaths.First().ToLowerInvariant()) + var penumResolve = _ipcManager.PenumbraResolvePath(item.GamePaths.First()).ToLowerInvariant(); + var gamePath = item.GamePaths.First().ToLowerInvariant(); + if (penumResolve == gamePath) { + Logger.Debug("PenumResolve was same as GamePath, not adding " + item); transientResourceManager.RemoveTransientResource(charaPointer, item); } else diff --git a/MareSynchronos/Managers/PlayerManager.cs b/MareSynchronos/Managers/PlayerManager.cs index 84125a3..e5aef43 100644 --- a/MareSynchronos/Managers/PlayerManager.cs +++ b/MareSynchronos/Managers/PlayerManager.cs @@ -9,6 +9,9 @@ using FFXIVClientStructs.FFXIV.Client.Game.Character; using System.Collections.Generic; using System.Linq; using MareSynchronos.Models; +#if DEBUG +using Newtonsoft.Json; +#endif namespace MareSynchronos.Managers { @@ -236,6 +239,11 @@ namespace MareSynchronos.Managers CharacterCacheDto? cacheDto = (await CreateFullCharacterCacheDto(token)); if (cacheDto == null || token.IsCancellationRequested) return; +#if DEBUG + var json = JsonConvert.SerializeObject(cacheDto, Formatting.Indented); + Logger.Verbose(json); +#endif + if ((LastCreatedCharacterData?.GetHashCode() ?? 0) == cacheDto.GetHashCode()) { Logger.Debug("Not sending data, already sent"); diff --git a/MareSynchronos/Managers/TransientResourceManager.cs b/MareSynchronos/Managers/TransientResourceManager.cs index e729837..63de47c 100644 --- a/MareSynchronos/Managers/TransientResourceManager.cs +++ b/MareSynchronos/Managers/TransientResourceManager.cs @@ -143,27 +143,30 @@ namespace MareSynchronos.Managers var transientResources = resources.ToList(); Logger.Debug("Persisting " + transientResources.Count + " transient resources"); - foreach (var item in transientResources) + foreach (var gamePath in transientResources) { - var existingResource = SemiTransientResources[objectKind].Any(f => f.GamePaths.First().ToLowerInvariant() == item.ToLowerInvariant()); + var existingResource = SemiTransientResources[objectKind].Any(f => f.GamePaths.First().ToLowerInvariant() == gamePath.ToLowerInvariant()); if (existingResource) { - Logger.Debug("Semi Transient resource replaced: " + item); - SemiTransientResources[objectKind].RemoveWhere(f => f.GamePaths.First().ToLowerInvariant() == item.ToLowerInvariant()); + Logger.Debug("Semi Transient resource replaced: " + gamePath); + SemiTransientResources[objectKind].RemoveWhere(f => f.GamePaths.First().ToLowerInvariant() == gamePath.ToLowerInvariant()); } try { - if (!SemiTransientResources[objectKind].Any(f => f.GamePaths.First().ToLowerInvariant() == item.ToLowerInvariant())) + var fileReplacement = createFileReplacement(gamePath.ToLowerInvariant(), true); + if (!fileReplacement.HasFileReplacement) + fileReplacement = createFileReplacement(gamePath.ToLowerInvariant(), false); + if (fileReplacement.HasFileReplacement) { - - var fileReplacement = createFileReplacement(item.ToLowerInvariant(), true); - if (!fileReplacement.HasFileReplacement) - fileReplacement = createFileReplacement(item.ToLowerInvariant(), false); - if (fileReplacement.HasFileReplacement) + Logger.Debug("Persisting " + gamePath.ToLowerInvariant()); + if (SemiTransientResources[objectKind].Add(fileReplacement)) { - Logger.Debug("Persisting " + item.ToLowerInvariant()); - SemiTransientResources[objectKind].Add(fileReplacement); + Logger.Debug("Added " + fileReplacement); + } + else + { + Logger.Debug("Not added " + fileReplacement); } } } diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index abebf98..db07cf2 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -3,7 +3,7 @@ - 0.4.5 + 0.4.6 https://github.com/Penumbra-Sync/client diff --git a/MareSynchronos/Models/CharacterData.cs b/MareSynchronos/Models/CharacterData.cs index 3503997..c0c349f 100644 --- a/MareSynchronos/Models/CharacterData.cs +++ b/MareSynchronos/Models/CharacterData.cs @@ -48,7 +48,7 @@ namespace MareSynchronos.Models { return new FileReplacementDto() { - GamePaths = g.SelectMany(g => g.GamePaths).Distinct().ToArray(), + GamePaths = g.SelectMany(f => f.GamePaths).Distinct().ToArray(), Hash = g.First().Hash, }; }).ToList());