diff --git a/MareSynchronos/Factories/CharacterDataFactory.cs b/MareSynchronos/Factories/CharacterDataFactory.cs index 29a714b..a851720 100644 --- a/MareSynchronos/Factories/CharacterDataFactory.cs +++ b/MareSynchronos/Factories/CharacterDataFactory.cs @@ -59,9 +59,7 @@ public class CharacterDataFactory } catch (Exception ex) { - Logger.Warn("Could not create data for " + playerRelatedObject.ObjectKind); - Logger.Warn(ex.Message); - Logger.Warn(ex.StackTrace ?? string.Empty); + Logger.Warn("Could not create data for " + playerRelatedObject.ObjectKind, ex); } if (pointerIsZero) @@ -88,9 +86,7 @@ public class CharacterDataFactory } catch (Exception e) { - Logger.Debug("Failed to create " + playerRelatedObject.ObjectKind + " data"); - Logger.Debug(e.Message); - Logger.Debug(e.StackTrace ?? string.Empty); + Logger.Warn("Failed to create " + playerRelatedObject.ObjectKind + " data", e); } previousData.FileReplacements = previousFileReplacements; @@ -410,6 +406,7 @@ public class CharacterDataFactory private void AddResolvePath(string path, bool doNotReverseResolve = false) { + if (string.IsNullOrEmpty(path)) return; if (doNotReverseResolve) _pathsToForwardResolve.Add(path.ToLowerInvariant()); else _pathsToReverseResolve.Add(path.ToLowerInvariant()); } diff --git a/MareSynchronos/Managers/TransientResourceManager.cs b/MareSynchronos/Managers/TransientResourceManager.cs index 4c183f2..55288b0 100644 --- a/MareSynchronos/Managers/TransientResourceManager.cs +++ b/MareSynchronos/Managers/TransientResourceManager.cs @@ -24,32 +24,34 @@ public class TransientResourceManager : MediatorSubscriberBase, IDisposable _configurationService = configurationService; _dalamudUtil = dalamudUtil; - mediator.Subscribe(this, (msg) => Manager_PenumbraResourceLoadEvent((PenumbraResourceLoadMessage)msg)); - Mediator.Subscribe(this, (_) => Manager_PenumbraModSettingChanged()); - Mediator.Subscribe(this, (_) => DalamudUtil_FrameworkUpdate()); - Mediator.Subscribe(this, (_) => DalamudUtil_ClassJobChanged()); - Mediator.Subscribe(this, (msg) => PlayerRelatedPointers = ((PlayerRelatedObjectPointerUpdateMessage)msg).RelatedObjects); - SemiTransientResources.TryAdd(ObjectKind.Player, new HashSet(StringComparer.Ordinal)); - if (_configurationService.Current.PlayerPersistentTransientCache.TryGetValue(PlayerPersistentDataKey, out var linesInConfig)) + if (_configurationService.Current.PlayerPersistentTransientCache.TryGetValue(PlayerPersistentDataKey, out var gamePaths)) { int restored = 0; - foreach (var file in linesInConfig) + foreach (var gamePath in gamePaths) { + if (string.IsNullOrEmpty(gamePath)) continue; + try { - Logger.Debug("Loaded persistent transient resource " + file); - SemiTransientResources[ObjectKind.Player].Add(file); + Logger.Debug("Loaded persistent transient resource " + gamePath); + SemiTransientResources[ObjectKind.Player].Add(gamePath); restored++; } catch (Exception ex) { - Logger.Warn("Error during loading persistent transient resource " + file, ex); + Logger.Warn("Error during loading persistent transient resource " + gamePath, ex); } } - Logger.Debug($"Restored {restored}/{linesInConfig.Count()} semi persistent resources"); + Logger.Debug($"Restored {restored}/{gamePaths.Count()} semi persistent resources"); } + + Mediator.Subscribe(this, (msg) => Manager_PenumbraResourceLoadEvent((PenumbraResourceLoadMessage)msg)); + Mediator.Subscribe(this, (_) => Manager_PenumbraModSettingChanged()); + Mediator.Subscribe(this, (_) => DalamudUtil_FrameworkUpdate()); + Mediator.Subscribe(this, (_) => DalamudUtil_ClassJobChanged()); + Mediator.Subscribe(this, (msg) => PlayerRelatedPointers = ((PlayerRelatedObjectPointerUpdateMessage)msg).RelatedObjects); } private void Manager_PenumbraModSettingChanged() @@ -116,10 +118,10 @@ public class TransientResourceManager : MediatorSubscriberBase, IDisposable { if (SemiTransientResources.TryGetValue(objectKind, out var result)) { - return result; + return result ?? new HashSet(StringComparer.Ordinal); } - return new HashSet(); + return new HashSet(StringComparer.Ordinal); } private void Manager_PenumbraResourceLoadEvent(PenumbraResourceLoadMessage msg) @@ -186,7 +188,7 @@ public class TransientResourceManager : MediatorSubscriberBase, IDisposable if (objectKind == ObjectKind.Player && SemiTransientResources.TryGetValue(ObjectKind.Player, out var fileReplacements)) { - _configurationService.Current.PlayerPersistentTransientCache[PlayerPersistentDataKey] = fileReplacements; + _configurationService.Current.PlayerPersistentTransientCache[PlayerPersistentDataKey] = fileReplacements.Where(f => !string.IsNullOrEmpty(f)).ToHashSet(StringComparer.Ordinal); _configurationService.Save(); } TransientResources[gameObject].Clear(); diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj index 8f292bb..452b2cb 100644 --- a/MareSynchronos/MareSynchronos.csproj +++ b/MareSynchronos/MareSynchronos.csproj @@ -3,7 +3,7 @@ - 0.7.20 + 0.7.21 https://github.com/Penumbra-Sync/client