Fix issue with file substitutions.

This commit is contained in:
Ottermandias 2024-07-09 18:36:45 +02:00
parent baa439d246
commit 37ffe52869

View file

@ -1,3 +1,4 @@
using Dalamud.Interface;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using OtterGui.Services; using OtterGui.Services;
using Penumbra.Collections; using Penumbra.Collections;
@ -13,6 +14,7 @@ namespace Penumbra.Api;
public class DalamudSubstitutionProvider : IDisposable, IApiService public class DalamudSubstitutionProvider : IDisposable, IApiService
{ {
private readonly ITextureSubstitutionProvider _substitution; private readonly ITextureSubstitutionProvider _substitution;
private readonly IUiBuilder _uiBuilder;
private readonly ActiveCollectionData _activeCollectionData; private readonly ActiveCollectionData _activeCollectionData;
private readonly Configuration _config; private readonly Configuration _config;
private readonly CommunicatorService _communicator; private readonly CommunicatorService _communicator;
@ -21,9 +23,10 @@ public class DalamudSubstitutionProvider : IDisposable, IApiService
=> _config.UseDalamudUiTextureRedirection; => _config.UseDalamudUiTextureRedirection;
public DalamudSubstitutionProvider(ITextureSubstitutionProvider substitution, ActiveCollectionData activeCollectionData, public DalamudSubstitutionProvider(ITextureSubstitutionProvider substitution, ActiveCollectionData activeCollectionData,
Configuration config, CommunicatorService communicator) Configuration config, CommunicatorService communicator, IUiBuilder ui)
{ {
_substitution = substitution; _substitution = substitution;
_uiBuilder = ui;
_activeCollectionData = activeCollectionData; _activeCollectionData = activeCollectionData;
_config = config; _config = config;
_communicator = communicator; _communicator = communicator;
@ -41,6 +44,9 @@ public class DalamudSubstitutionProvider : IDisposable, IApiService
public void ResetSubstitutions(IEnumerable<Utf8GamePath> paths) public void ResetSubstitutions(IEnumerable<Utf8GamePath> paths)
{ {
if (!_uiBuilder.UiPrepared)
return;
var transformed = paths var transformed = paths
.Where(p => (p.Path.StartsWith("ui/"u8) || p.Path.StartsWith("common/font/"u8)) && p.Path.EndsWith(".tex"u8)) .Where(p => (p.Path.StartsWith("ui/"u8) || p.Path.StartsWith("common/font/"u8)) && p.Path.EndsWith(".tex"u8))
.Select(p => p.ToString()); .Select(p => p.ToString());
@ -91,10 +97,7 @@ public class DalamudSubstitutionProvider : IDisposable, IApiService
case ResolvedFileChanged.Type.Added: case ResolvedFileChanged.Type.Added:
case ResolvedFileChanged.Type.Removed: case ResolvedFileChanged.Type.Removed:
case ResolvedFileChanged.Type.Replaced: case ResolvedFileChanged.Type.Replaced:
ResetSubstitutions(new[] ResetSubstitutions([key]);
{
key,
});
break; break;
case ResolvedFileChanged.Type.FullRecomputeStart: case ResolvedFileChanged.Type.FullRecomputeStart:
case ResolvedFileChanged.Type.FullRecomputeFinished: case ResolvedFileChanged.Type.FullRecomputeFinished: