fixes some issues with persistent transient resources
This commit is contained in:
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user