Add DeleteDefaultValues on general dicts.

This commit is contained in:
Ottermandias 2024-08-28 23:10:59 +02:00
parent f043311882
commit f8e3b6777f

View file

@ -1,6 +1,5 @@
using System.Collections.Frozen; using System.Collections.Frozen;
using OtterGui.Services; using OtterGui.Services;
using Penumbra.GameData.Structs;
using Penumbra.Meta; using Penumbra.Meta;
using Penumbra.Meta.Files; using Penumbra.Meta.Files;
using Penumbra.Meta.Manipulations; using Penumbra.Meta.Manipulations;
@ -65,65 +64,101 @@ public class ModMetaEditor(ModManager modManager, MetaFileManager metaFileManage
Changes = false; Changes = false;
} }
public void DeleteDefaultValues() public bool DeleteDefaultValues(MetaDictionary dict)
{ {
var clone = Clone(); var clone = dict.Clone();
Clear(); dict.Clear();
var ret = false;
foreach (var (key, value) in clone.Imc) foreach (var (key, value) in clone.Imc)
{ {
var defaultEntry = imcChecker.GetDefaultEntry(key, false); var defaultEntry = imcChecker.GetDefaultEntry(key, false);
if (!defaultEntry.Entry.Equals(value)) if (!defaultEntry.Entry.Equals(value))
TryAdd(key, value); {
dict.TryAdd(key, value);
}
else else
Changes = true; {
Penumbra.Log.Verbose($"Deleted default-valued meta-entry {key}.");
ret = true;
}
} }
foreach (var (key, value) in clone.Eqp) foreach (var (key, value) in clone.Eqp)
{ {
var defaultEntry = new EqpEntryInternal(ExpandedEqpFile.GetDefault(metaFileManager, key.SetId), key.Slot); var defaultEntry = new EqpEntryInternal(ExpandedEqpFile.GetDefault(metaFileManager, key.SetId), key.Slot);
if (!defaultEntry.Equals(value)) if (!defaultEntry.Equals(value))
TryAdd(key, value); {
dict.TryAdd(key, value);
}
else else
Changes = true; {
Penumbra.Log.Verbose($"Deleted default-valued meta-entry {key}.");
ret = true;
}
} }
foreach (var (key, value) in clone.Eqdp) foreach (var (key, value) in clone.Eqdp)
{ {
var defaultEntry = new EqdpEntryInternal(ExpandedEqdpFile.GetDefault(metaFileManager, key), key.Slot); var defaultEntry = new EqdpEntryInternal(ExpandedEqdpFile.GetDefault(metaFileManager, key), key.Slot);
if (!defaultEntry.Equals(value)) if (!defaultEntry.Equals(value))
TryAdd(key, value); {
dict.TryAdd(key, value);
}
else else
Changes = true; {
Penumbra.Log.Verbose($"Deleted default-valued meta-entry {key}.");
ret = true;
}
} }
foreach (var (key, value) in clone.Est) foreach (var (key, value) in clone.Est)
{ {
var defaultEntry = EstFile.GetDefault(metaFileManager, key); var defaultEntry = EstFile.GetDefault(metaFileManager, key);
if (!defaultEntry.Equals(value)) if (!defaultEntry.Equals(value))
TryAdd(key, value); {
dict.TryAdd(key, value);
}
else else
Changes = true; {
Penumbra.Log.Verbose($"Deleted default-valued meta-entry {key}.");
ret = true;
}
} }
foreach (var (key, value) in clone.Gmp) foreach (var (key, value) in clone.Gmp)
{ {
var defaultEntry = ExpandedGmpFile.GetDefault(metaFileManager, key); var defaultEntry = ExpandedGmpFile.GetDefault(metaFileManager, key);
if (!defaultEntry.Equals(value)) if (!defaultEntry.Equals(value))
TryAdd(key, value); {
dict.TryAdd(key, value);
}
else else
Changes = true; {
Penumbra.Log.Verbose($"Deleted default-valued meta-entry {key}.");
ret = true;
}
} }
foreach (var (key, value) in clone.Rsp) foreach (var (key, value) in clone.Rsp)
{ {
var defaultEntry = CmpFile.GetDefault(metaFileManager, key.SubRace, key.Attribute); var defaultEntry = CmpFile.GetDefault(metaFileManager, key.SubRace, key.Attribute);
if (!defaultEntry.Equals(value)) if (!defaultEntry.Equals(value))
TryAdd(key, value); {
dict.TryAdd(key, value);
}
else else
Changes = true; {
Penumbra.Log.Verbose($"Deleted default-valued meta-entry {key}.");
ret = true;
}
} }
return ret;
} }
public void DeleteDefaultValues()
=> Changes = DeleteDefaultValues(this);
public void Apply(IModDataContainer container) public void Apply(IModDataContainer container)
{ {
if (!Changes) if (!Changes)