Fix bug with collections with inheritance saving on every launch.

This commit is contained in:
Ottermandias 2022-12-03 14:37:48 +01:00
parent ca51c3b107
commit 37a56c56af
4 changed files with 9 additions and 4 deletions

View file

@ -339,7 +339,7 @@ public partial class ModCollection
changes = true;
Penumbra.Log.Warning( $"Inherited collection {subCollectionName} for {collection.Name} does not exist, removed." );
}
else if( !collection.AddInheritance( subCollection ) )
else if( !collection.AddInheritance( subCollection, false ) )
{
changes = true;
Penumbra.Log.Warning( $"{collection.Name} can not inherit from {subCollectionName}, removed." );

View file

@ -25,6 +25,7 @@ public partial class ModCollection
{
try
{
Penumbra.Log.Debug( $"Saving collection {AnonymizedName}..." );
var file = FileName;
file.Directory?.Create();
using var s = file.Exists ? file.Open( FileMode.Truncate ) : file.Open( FileMode.CreateNew );

View file

@ -69,7 +69,7 @@ public partial class ModCollection
// Add a new collection to the inheritance list.
// We do not check if this collection would be visited before,
// only that it is unique in the list itself.
public bool AddInheritance( ModCollection collection )
public bool AddInheritance( ModCollection collection, bool invokeEvent )
{
if( CheckValidInheritance( collection ) != ValidInheritance.Valid )
{
@ -80,7 +80,11 @@ public partial class ModCollection
// Changes in inherited collections may need to trigger further changes here.
collection.ModSettingChanged += OnInheritedModSettingChange;
collection.InheritanceChanged += OnInheritedInheritanceChange;
InheritanceChanged.Invoke( false );
if( invokeEvent )
{
InheritanceChanged.Invoke( false );
}
Penumbra.Log.Debug( $"Added {collection.AnonymizedName} to {AnonymizedName} inheritances." );
return true;
}

View file

@ -194,7 +194,7 @@ public partial class ConfigWindow
};
if( ImGuiUtil.DrawDisabledButton( FontAwesomeIcon.Plus.ToIconString(), _window._iconButtonSize, tt,
inheritance != ModCollection.ValidInheritance.Valid, true )
&& Penumbra.CollectionManager.Current.AddInheritance( _newInheritance! ) )
&& Penumbra.CollectionManager.Current.AddInheritance( _newInheritance!, true ) )
{
_newInheritance = null;
}