mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-02-08 00:44:41 +01:00
57 lines
1.9 KiB
C#
57 lines
1.9 KiB
C#
using OtterGui.Classes;
|
|
using Penumbra.Mods;
|
|
using Penumbra.Meta.Files;
|
|
using Penumbra.String.Classes;
|
|
using Penumbra.Collections.Cache;
|
|
using Penumbra.Mods.Editor;
|
|
|
|
namespace Penumbra.Collections;
|
|
|
|
public partial class ModCollection
|
|
{
|
|
// Only active collections need to have a cache.
|
|
internal CollectionCache? _cache;
|
|
|
|
public bool HasCache
|
|
=> _cache != null;
|
|
|
|
|
|
// Handle temporary mods for this collection.
|
|
public void Apply(TemporaryMod tempMod, bool created)
|
|
{
|
|
if (created)
|
|
_cache?.AddMod(tempMod, tempMod.TotalManipulations > 0);
|
|
else
|
|
_cache?.ReloadMod(tempMod, tempMod.TotalManipulations > 0);
|
|
}
|
|
|
|
public void Remove(TemporaryMod tempMod)
|
|
{
|
|
_cache?.RemoveMod(tempMod, tempMod.TotalManipulations > 0);
|
|
}
|
|
|
|
public IEnumerable<Utf8GamePath> ReverseResolvePath(FullPath path)
|
|
=> _cache?.ReverseResolvePath(path) ?? Array.Empty<Utf8GamePath>();
|
|
|
|
public HashSet<Utf8GamePath>[] ReverseResolvePaths(IReadOnlyCollection<string> paths)
|
|
=> _cache?.ReverseResolvePaths(paths) ?? paths.Select(_ => new HashSet<Utf8GamePath>()).ToArray();
|
|
|
|
public FullPath? ResolvePath(Utf8GamePath path)
|
|
=> _cache?.ResolvePath(path);
|
|
|
|
// Obtain data from the cache.
|
|
internal MetaCache? MetaCache
|
|
=> _cache?.Meta;
|
|
|
|
internal IReadOnlyDictionary<Utf8GamePath, ModPath> ResolvedFiles
|
|
=> _cache?.ResolvedFiles ?? new ConcurrentDictionary<Utf8GamePath, ModPath>();
|
|
|
|
internal IReadOnlyDictionary<string, (SingleArray<IMod>, object?)> ChangedItems
|
|
=> _cache?.ChangedItems ?? new Dictionary<string, (SingleArray<IMod>, object?)>();
|
|
|
|
internal IEnumerable<SingleArray<ModConflicts>> AllConflicts
|
|
=> _cache?.AllConflicts ?? Array.Empty<SingleArray<ModConflicts>>();
|
|
|
|
internal SingleArray<ModConflicts> Conflicts(Mod mod)
|
|
=> _cache?.Conflicts(mod) ?? new SingleArray<ModConflicts>();
|
|
}
|