mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-02-21 07:17:53 +01:00
Make GMP independent of file, cleanup unused functions.
This commit is contained in:
parent
c53f29c257
commit
943207cae8
14 changed files with 108 additions and 158 deletions
|
|
@ -26,7 +26,7 @@ public sealed class EqdpCache(MetaFileManager manager, ModCollection collection)
|
|||
Manager.SetFile(_eqdpFiles[i], index);
|
||||
}
|
||||
|
||||
public override void ResetFiles()
|
||||
public void ResetFiles()
|
||||
{
|
||||
foreach (var t in CharacterUtilityData.EqdpIndices)
|
||||
Manager.SetFile(null, t);
|
||||
|
|
@ -62,7 +62,7 @@ public sealed class EqdpCache(MetaFileManager manager, ModCollection collection)
|
|||
return Manager.TemporarilySetFile(_eqdpFiles[i], idx);
|
||||
}
|
||||
|
||||
public override void Reset()
|
||||
public void Reset()
|
||||
{
|
||||
foreach (var file in _eqdpFiles.OfType<ExpandedEqdpFile>())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
using Penumbra.GameData.Enums;
|
||||
using Penumbra.GameData.Structs;
|
||||
using Penumbra.Interop.Services;
|
||||
using Penumbra.Interop.Structs;
|
||||
using Penumbra.Meta;
|
||||
using Penumbra.Meta.Files;
|
||||
using Penumbra.Meta.Manipulations;
|
||||
|
|
@ -10,24 +8,11 @@ namespace Penumbra.Collections.Cache;
|
|||
|
||||
public sealed class EqpCache(MetaFileManager manager, ModCollection collection) : MetaCacheBase<EqpIdentifier, EqpEntry>(manager, collection)
|
||||
{
|
||||
private ExpandedEqpFile? _eqpFile;
|
||||
|
||||
public override void SetFiles()
|
||||
=> Manager.SetFile(_eqpFile, MetaIndex.Eqp);
|
||||
|
||||
public override void ResetFiles()
|
||||
=> Manager.SetFile(null, MetaIndex.Eqp);
|
||||
{ }
|
||||
|
||||
protected override void IncorporateChangesInternal()
|
||||
{
|
||||
if (GetFile() is not { } file)
|
||||
return;
|
||||
|
||||
foreach (var (identifier, (_, entry)) in this)
|
||||
Apply(file, identifier, entry);
|
||||
|
||||
Penumbra.Log.Verbose($"{Collection.AnonymizedName}: Loaded {Count} delayed EQP manipulations.");
|
||||
}
|
||||
{ }
|
||||
|
||||
public unsafe EqpEntry GetValues(CharacterArmor* armor)
|
||||
=> GetSingleValue(armor[0].Set, EquipSlot.Head)
|
||||
|
|
@ -40,29 +25,14 @@ public sealed class EqpCache(MetaFileManager manager, ModCollection collection)
|
|||
private EqpEntry GetSingleValue(PrimaryId id, EquipSlot slot)
|
||||
=> TryGetValue(new EqpIdentifier(id, slot), out var pair) ? pair.Entry : ExpandedEqpFile.GetDefault(Manager, id) & Eqp.Mask(slot);
|
||||
|
||||
public MetaList.MetaReverter TemporarilySetFile()
|
||||
=> Manager.TemporarilySetFile(_eqpFile, MetaIndex.Eqp);
|
||||
|
||||
public override void Reset()
|
||||
{
|
||||
if (_eqpFile == null)
|
||||
return;
|
||||
|
||||
_eqpFile.Reset(Keys.Select(identifier => identifier.SetId));
|
||||
Clear();
|
||||
}
|
||||
public void Reset()
|
||||
=> Clear();
|
||||
|
||||
protected override void ApplyModInternal(EqpIdentifier identifier, EqpEntry entry)
|
||||
{
|
||||
if (GetFile() is { } file)
|
||||
Apply(file, identifier, entry);
|
||||
}
|
||||
{ }
|
||||
|
||||
protected override void RevertModInternal(EqpIdentifier identifier)
|
||||
{
|
||||
if (GetFile() is { } file)
|
||||
Apply(file, identifier, ExpandedEqpFile.GetDefault(Manager, identifier.SetId));
|
||||
}
|
||||
{ }
|
||||
|
||||
public static bool Apply(ExpandedEqpFile file, EqpIdentifier identifier, EqpEntry entry)
|
||||
{
|
||||
|
|
@ -76,20 +46,5 @@ public sealed class EqpCache(MetaFileManager manager, ModCollection collection)
|
|||
}
|
||||
|
||||
protected override void Dispose(bool _)
|
||||
{
|
||||
_eqpFile?.Dispose();
|
||||
_eqpFile = null;
|
||||
Clear();
|
||||
}
|
||||
|
||||
private ExpandedEqpFile? GetFile()
|
||||
{
|
||||
if (_eqpFile != null)
|
||||
return _eqpFile;
|
||||
|
||||
if (!Manager.CharacterUtility.Ready)
|
||||
return null;
|
||||
|
||||
return _eqpFile = new ExpandedEqpFile(Manager);
|
||||
}
|
||||
=> Clear();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public sealed class EstCache(MetaFileManager manager, ModCollection collection)
|
|||
return Manager.TemporarilySetFile(file, idx);
|
||||
}
|
||||
|
||||
public override void ResetFiles()
|
||||
public void ResetFiles()
|
||||
{
|
||||
Manager.SetFile(null, MetaIndex.FaceEst);
|
||||
Manager.SetFile(null, MetaIndex.HairEst);
|
||||
|
|
@ -80,7 +80,7 @@ public sealed class EstCache(MetaFileManager manager, ModCollection collection)
|
|||
: EstFile.GetDefault(Manager, identifier);
|
||||
}
|
||||
|
||||
public override void Reset()
|
||||
public void Reset()
|
||||
{
|
||||
_estFaceFile?.Reset();
|
||||
_estHairFile?.Reset();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
using Penumbra.GameData.Structs;
|
||||
using Penumbra.Interop.Services;
|
||||
using Penumbra.Interop.Structs;
|
||||
using Penumbra.Meta;
|
||||
using Penumbra.Meta.Files;
|
||||
using Penumbra.Meta.Manipulations;
|
||||
|
|
@ -9,48 +7,20 @@ namespace Penumbra.Collections.Cache;
|
|||
|
||||
public sealed class GmpCache(MetaFileManager manager, ModCollection collection) : MetaCacheBase<GmpIdentifier, GmpEntry>(manager, collection)
|
||||
{
|
||||
private ExpandedGmpFile? _gmpFile;
|
||||
|
||||
public override void SetFiles()
|
||||
=> Manager.SetFile(_gmpFile, MetaIndex.Gmp);
|
||||
|
||||
public override void ResetFiles()
|
||||
=> Manager.SetFile(null, MetaIndex.Gmp);
|
||||
{ }
|
||||
|
||||
protected override void IncorporateChangesInternal()
|
||||
{
|
||||
if (GetFile() is not { } file)
|
||||
return;
|
||||
{ }
|
||||
|
||||
foreach (var (identifier, (_, entry)) in this)
|
||||
Apply(file, identifier, entry);
|
||||
|
||||
Penumbra.Log.Verbose($"{Collection.AnonymizedName}: Loaded {Count} delayed GMP manipulations.");
|
||||
}
|
||||
|
||||
public MetaList.MetaReverter TemporarilySetFile()
|
||||
=> Manager.TemporarilySetFile(_gmpFile, MetaIndex.Gmp);
|
||||
|
||||
public override void Reset()
|
||||
{
|
||||
if (_gmpFile == null)
|
||||
return;
|
||||
|
||||
_gmpFile.Reset(Keys.Select(identifier => identifier.SetId));
|
||||
Clear();
|
||||
}
|
||||
public void Reset()
|
||||
=> Clear();
|
||||
|
||||
protected override void ApplyModInternal(GmpIdentifier identifier, GmpEntry entry)
|
||||
{
|
||||
if (GetFile() is { } file)
|
||||
Apply(file, identifier, entry);
|
||||
}
|
||||
{ }
|
||||
|
||||
protected override void RevertModInternal(GmpIdentifier identifier)
|
||||
{
|
||||
if (GetFile() is { } file)
|
||||
Apply(file, identifier, ExpandedGmpFile.GetDefault(Manager, identifier.SetId));
|
||||
}
|
||||
{ }
|
||||
|
||||
public static bool Apply(ExpandedGmpFile file, GmpIdentifier identifier, GmpEntry entry)
|
||||
{
|
||||
|
|
@ -63,20 +33,5 @@ public sealed class GmpCache(MetaFileManager manager, ModCollection collection)
|
|||
}
|
||||
|
||||
protected override void Dispose(bool _)
|
||||
{
|
||||
_gmpFile?.Dispose();
|
||||
_gmpFile = null;
|
||||
Clear();
|
||||
}
|
||||
|
||||
private ExpandedGmpFile? GetFile()
|
||||
{
|
||||
if (_gmpFile != null)
|
||||
return _gmpFile;
|
||||
|
||||
if (!Manager.CharacterUtility.Ready)
|
||||
return null;
|
||||
|
||||
return _gmpFile = new ExpandedGmpFile(Manager);
|
||||
}
|
||||
=> Clear();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,8 +27,6 @@ public abstract class MetaCacheBase<TIdentifier, TEntry>
|
|||
}
|
||||
|
||||
public abstract void SetFiles();
|
||||
public abstract void Reset();
|
||||
public abstract void ResetFiles();
|
||||
|
||||
public bool ApplyMod(IMod source, TIdentifier identifier, TEntry entry)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public sealed class ImcCache(MetaFileManager manager, ModCollection collection)
|
|||
Collection._cache!.ForceFile(path, PathDataHandler.CreateImc(path.Path, Collection));
|
||||
}
|
||||
|
||||
public override void ResetFiles()
|
||||
public void ResetFiles()
|
||||
{
|
||||
foreach (var (path, _) in _imcFiles)
|
||||
Collection._cache!.ForceFile(path, FullPath.Empty);
|
||||
|
|
@ -56,7 +56,7 @@ public sealed class ImcCache(MetaFileManager manager, ModCollection collection)
|
|||
}
|
||||
|
||||
|
||||
public override void Reset()
|
||||
public void Reset()
|
||||
{
|
||||
foreach (var (path, (file, set)) in _imcFiles)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -148,9 +148,6 @@ public class MetaCache(MetaFileManager manager, ModCollection collection)
|
|||
public MetaList.MetaReverter? TemporarilySetEqdpFile(GenderRace genderRace, bool accessory)
|
||||
=> Eqdp.TemporarilySetFile(genderRace, accessory);
|
||||
|
||||
public MetaList.MetaReverter TemporarilySetGmpFile()
|
||||
=> Gmp.TemporarilySetFile();
|
||||
|
||||
public MetaList.MetaReverter TemporarilySetCmpFile()
|
||||
=> Rsp.TemporarilySetFile();
|
||||
|
||||
|
|
|
|||
|
|
@ -13,9 +13,6 @@ public sealed class RspCache(MetaFileManager manager, ModCollection collection)
|
|||
public override void SetFiles()
|
||||
=> Manager.SetFile(_cmpFile, MetaIndex.HumanCmp);
|
||||
|
||||
public override void ResetFiles()
|
||||
=> Manager.SetFile(null, MetaIndex.HumanCmp);
|
||||
|
||||
protected override void IncorporateChangesInternal()
|
||||
{
|
||||
if (GetFile() is not { } file)
|
||||
|
|
@ -30,7 +27,7 @@ public sealed class RspCache(MetaFileManager manager, ModCollection collection)
|
|||
public MetaList.MetaReverter TemporarilySetFile()
|
||||
=> Manager.TemporarilySetFile(_cmpFile, MetaIndex.HumanCmp);
|
||||
|
||||
public override void Reset()
|
||||
public void Reset()
|
||||
{
|
||||
if (_cmpFile == null)
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -100,10 +100,6 @@ public partial class ModCollection
|
|||
return idx >= 0 ? utility.TemporarilyResetResource(idx) : null;
|
||||
}
|
||||
|
||||
public MetaList.MetaReverter TemporarilySetGmpFile(CharacterUtility utility)
|
||||
=> _cache?.Meta.TemporarilySetGmpFile()
|
||||
?? utility.TemporarilyResetResource(MetaIndex.Gmp);
|
||||
|
||||
public MetaList.MetaReverter TemporarilySetCmpFile(CharacterUtility utility)
|
||||
=> _cache?.Meta.TemporarilySetCmpFile()
|
||||
?? utility.TemporarilyResetResource(MetaIndex.HumanCmp);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue