fixes some issues with persistent transient resources

This commit is contained in:
rootdarkarchon
2023-02-05 17:17:15 +01:00
parent 3634c06ee5
commit f2f5e0f222
3 changed files with 21 additions and 22 deletions

View File

@@ -59,9 +59,7 @@ public class CharacterDataFactory
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Warn("Could not create data for " + playerRelatedObject.ObjectKind); Logger.Warn("Could not create data for " + playerRelatedObject.ObjectKind, ex);
Logger.Warn(ex.Message);
Logger.Warn(ex.StackTrace ?? string.Empty);
} }
if (pointerIsZero) if (pointerIsZero)
@@ -88,9 +86,7 @@ public class CharacterDataFactory
} }
catch (Exception e) catch (Exception e)
{ {
Logger.Debug("Failed to create " + playerRelatedObject.ObjectKind + " data"); Logger.Warn("Failed to create " + playerRelatedObject.ObjectKind + " data", e);
Logger.Debug(e.Message);
Logger.Debug(e.StackTrace ?? string.Empty);
} }
previousData.FileReplacements = previousFileReplacements; previousData.FileReplacements = previousFileReplacements;
@@ -410,6 +406,7 @@ public class CharacterDataFactory
private void AddResolvePath(string path, bool doNotReverseResolve = false) private void AddResolvePath(string path, bool doNotReverseResolve = false)
{ {
if (string.IsNullOrEmpty(path)) return;
if (doNotReverseResolve) _pathsToForwardResolve.Add(path.ToLowerInvariant()); if (doNotReverseResolve) _pathsToForwardResolve.Add(path.ToLowerInvariant());
else _pathsToReverseResolve.Add(path.ToLowerInvariant()); else _pathsToReverseResolve.Add(path.ToLowerInvariant());
} }

View File

@@ -24,32 +24,34 @@ public class TransientResourceManager : MediatorSubscriberBase, IDisposable
_configurationService = configurationService; _configurationService = configurationService;
_dalamudUtil = dalamudUtil; _dalamudUtil = dalamudUtil;
mediator.Subscribe<PenumbraResourceLoadMessage>(this, (msg) => Manager_PenumbraResourceLoadEvent((PenumbraResourceLoadMessage)msg));
Mediator.Subscribe<PenumbraModSettingChangedMessage>(this, (_) => Manager_PenumbraModSettingChanged());
Mediator.Subscribe<FrameworkUpdateMessage>(this, (_) => DalamudUtil_FrameworkUpdate());
Mediator.Subscribe<ClassJobChangedMessage>(this, (_) => DalamudUtil_ClassJobChanged());
Mediator.Subscribe<PlayerRelatedObjectPointerUpdateMessage>(this, (msg) => PlayerRelatedPointers = ((PlayerRelatedObjectPointerUpdateMessage)msg).RelatedObjects);
SemiTransientResources.TryAdd(ObjectKind.Player, new HashSet<string>(StringComparer.Ordinal)); SemiTransientResources.TryAdd(ObjectKind.Player, new HashSet<string>(StringComparer.Ordinal));
if (_configurationService.Current.PlayerPersistentTransientCache.TryGetValue(PlayerPersistentDataKey, out var linesInConfig)) if (_configurationService.Current.PlayerPersistentTransientCache.TryGetValue(PlayerPersistentDataKey, out var gamePaths))
{ {
int restored = 0; int restored = 0;
foreach (var file in linesInConfig) foreach (var gamePath in gamePaths)
{ {
if (string.IsNullOrEmpty(gamePath)) continue;
try try
{ {
Logger.Debug("Loaded persistent transient resource " + file); Logger.Debug("Loaded persistent transient resource " + gamePath);
SemiTransientResources[ObjectKind.Player].Add(file); SemiTransientResources[ObjectKind.Player].Add(gamePath);
restored++; restored++;
} }
catch (Exception ex) 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<PenumbraResourceLoadMessage>(this, (msg) => Manager_PenumbraResourceLoadEvent((PenumbraResourceLoadMessage)msg));
Mediator.Subscribe<PenumbraModSettingChangedMessage>(this, (_) => Manager_PenumbraModSettingChanged());
Mediator.Subscribe<FrameworkUpdateMessage>(this, (_) => DalamudUtil_FrameworkUpdate());
Mediator.Subscribe<ClassJobChangedMessage>(this, (_) => DalamudUtil_ClassJobChanged());
Mediator.Subscribe<PlayerRelatedObjectPointerUpdateMessage>(this, (msg) => PlayerRelatedPointers = ((PlayerRelatedObjectPointerUpdateMessage)msg).RelatedObjects);
} }
private void Manager_PenumbraModSettingChanged() private void Manager_PenumbraModSettingChanged()
@@ -116,10 +118,10 @@ public class TransientResourceManager : MediatorSubscriberBase, IDisposable
{ {
if (SemiTransientResources.TryGetValue(objectKind, out var result)) if (SemiTransientResources.TryGetValue(objectKind, out var result))
{ {
return result; return result ?? new HashSet<string>(StringComparer.Ordinal);
} }
return new HashSet<string>(); return new HashSet<string>(StringComparer.Ordinal);
} }
private void Manager_PenumbraResourceLoadEvent(PenumbraResourceLoadMessage msg) 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)) 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(); _configurationService.Save();
} }
TransientResources[gameObject].Clear(); TransientResources[gameObject].Clear();

View File

@@ -3,7 +3,7 @@
<PropertyGroup> <PropertyGroup>
<Authors></Authors> <Authors></Authors>
<Company></Company> <Company></Company>
<Version>0.7.20</Version> <Version>0.7.21</Version>
<Description></Description> <Description></Description>
<Copyright></Copyright> <Copyright></Copyright>
<PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl> <PackageProjectUrl>https://github.com/Penumbra-Sync/client</PackageProjectUrl>