From 9c0fc8a8c7577e29dc3bd9be7a28ef7bcd5a1b61 Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Wed, 23 Mar 2022 11:45:38 +0100 Subject: [PATCH] Move CollectionManager out of ModManager --- Penumbra/Api/ModsController.cs | 4 +- Penumbra/Api/PenumbraApi.cs | 10 ++-- .../Interop/Resolver/PathResolver.Data.cs | 10 ++-- .../Interop/Resolver/PathResolver.Meta.cs | 16 +++--- .../Interop/Resolver/PathResolver.Resolve.cs | 6 +- Penumbra/Interop/Resolver/PathResolver.cs | 6 +- Penumbra/Meta/Manager/MetaManager.Imc.cs | 2 +- Penumbra/Mod/ModCleanup.cs | 2 +- Penumbra/Mods/ModManager.cs | 4 +- Penumbra/Mods/ModManagerEditExtensions.cs | 8 +-- Penumbra/Penumbra.cs | 10 ++-- Penumbra/UI/MenuTabs/TabChangedItems.cs | 4 +- Penumbra/UI/MenuTabs/TabCollections.cs | 57 +++++++++---------- Penumbra/UI/MenuTabs/TabDebug.cs | 21 ++++--- Penumbra/UI/MenuTabs/TabEffective.cs | 4 +- .../UI/MenuTabs/TabInstalled/ModListCache.cs | 8 +-- .../TabInstalled/TabInstalledDetails.cs | 7 +-- .../TabInstalled/TabInstalledSelector.cs | 10 ++-- Penumbra/UI/SettingsInterface.cs | 7 +-- 19 files changed, 94 insertions(+), 102 deletions(-) diff --git a/Penumbra/Api/ModsController.cs b/Penumbra/Api/ModsController.cs index 511ff0ea..3232931a 100644 --- a/Penumbra/Api/ModsController.cs +++ b/Penumbra/Api/ModsController.cs @@ -16,7 +16,7 @@ public class ModsController : WebApiController [Route( HttpVerbs.Get, "/mods" )] public object? GetMods() { - return Penumbra.ModManager.Collections.CurrentCollection.Cache?.AvailableMods.Values.Select( x => new + return Penumbra.CollectionManager.CurrentCollection.Cache?.AvailableMods.Values.Select( x => new { x.Settings.Enabled, x.Settings.Priority, @@ -34,7 +34,7 @@ public class ModsController : WebApiController [Route( HttpVerbs.Get, "/files" )] public object GetFiles() { - return Penumbra.ModManager.Collections.CurrentCollection.Cache?.ResolvedFiles.ToDictionary( + return Penumbra.CollectionManager.CurrentCollection.Cache?.ResolvedFiles.ToDictionary( o => o.Key.ToString(), o => o.Value.FullName ) diff --git a/Penumbra/Api/PenumbraApi.cs b/Penumbra/Api/PenumbraApi.cs index ec27c168..ef649144 100644 --- a/Penumbra/Api/PenumbraApi.cs +++ b/Penumbra/Api/PenumbraApi.cs @@ -76,7 +76,7 @@ public class PenumbraApi : IDisposable, IPenumbraApi _penumbra!.ObjectReloader.RedrawAll( setting ); } - private static string ResolvePath( string path, ModManager manager, ModCollection collection ) + private static string ResolvePath( string path, ModManager _, ModCollection collection ) { if( !Penumbra.Config.EnableMods ) { @@ -85,21 +85,21 @@ public class PenumbraApi : IDisposable, IPenumbraApi var gamePath = Utf8GamePath.FromString( path, out var p, true ) ? p : Utf8GamePath.Empty; var ret = collection.Cache?.ResolveSwappedOrReplacementPath( gamePath ); - ret ??= manager.Collections.ForcedCollection.Cache?.ResolveSwappedOrReplacementPath( gamePath ); + ret ??= Penumbra.CollectionManager.ForcedCollection.Cache?.ResolveSwappedOrReplacementPath( gamePath ); return ret?.ToString() ?? path; } public string ResolvePath( string path ) { CheckInitialized(); - return ResolvePath( path, Penumbra.ModManager, Penumbra.ModManager.Collections.DefaultCollection ); + return ResolvePath( path, Penumbra.ModManager, Penumbra.CollectionManager.DefaultCollection ); } public string ResolvePath( string path, string characterName ) { CheckInitialized(); return ResolvePath( path, Penumbra.ModManager, - Penumbra.ModManager.Collections.CharacterCollection.TryGetValue( characterName, out var collection ) + Penumbra.CollectionManager.CharacterCollection.TryGetValue( characterName, out var collection ) ? collection : ModCollection.Empty ); } @@ -134,7 +134,7 @@ public class PenumbraApi : IDisposable, IPenumbraApi CheckInitialized(); try { - if( !Penumbra.ModManager.Collections.Collections.TryGetValue( collectionName, out var collection ) ) + if( !Penumbra.CollectionManager.Collections.TryGetValue( collectionName, out var collection ) ) { collection = ModCollection.Empty; } diff --git a/Penumbra/Interop/Resolver/PathResolver.Data.cs b/Penumbra/Interop/Resolver/PathResolver.Data.cs index 229d6380..d5804d23 100644 --- a/Penumbra/Interop/Resolver/PathResolver.Data.cs +++ b/Penumbra/Interop/Resolver/PathResolver.Data.cs @@ -68,12 +68,12 @@ public unsafe partial class PathResolver CharacterBaseCreateHook?.Enable(); EnableDrawHook?.Enable(); CharacterBaseDestructorHook?.Enable(); - Penumbra.ModManager.Collections.CollectionChanged += CheckCollections; + Penumbra.CollectionManager.CollectionChanged += CheckCollections; } private void DisableDataHooks() { - Penumbra.ModManager.Collections.CollectionChanged -= CheckCollections; + Penumbra.CollectionManager.CollectionChanged -= CheckCollections; CharacterBaseCreateHook?.Disable(); EnableDrawHook?.Disable(); CharacterBaseDestructorHook?.Disable(); @@ -161,7 +161,7 @@ public unsafe partial class PathResolver { if( gameObject == null ) { - return Penumbra.ModManager.Collections.DefaultCollection; + return Penumbra.CollectionManager.DefaultCollection; } var name = gameObject->ObjectIndex switch @@ -174,9 +174,9 @@ public unsafe partial class PathResolver } ?? new Utf8String( gameObject->Name ).ToString(); - return Penumbra.ModManager.Collections.CharacterCollection.TryGetValue( name, out var col ) + return Penumbra.CollectionManager.CharacterCollection.TryGetValue( name, out var col ) ? col - : Penumbra.ModManager.Collections.DefaultCollection; + : Penumbra.CollectionManager.DefaultCollection; } // Update collections linked to Game/DrawObjects due to a change in collection configuration. diff --git a/Penumbra/Interop/Resolver/PathResolver.Meta.cs b/Penumbra/Interop/Resolver/PathResolver.Meta.cs index 243ee3fd..ee556c25 100644 --- a/Penumbra/Interop/Resolver/PathResolver.Meta.cs +++ b/Penumbra/Interop/Resolver/PathResolver.Meta.cs @@ -163,12 +163,12 @@ public unsafe partial class PathResolver private ModCollection? GetCollection( IntPtr drawObject ) { var parent = FindParent( drawObject, out var collection ); - if( parent == null || collection == Penumbra.ModManager.Collections.DefaultCollection ) + if( parent == null || collection == Penumbra.CollectionManager.DefaultCollection ) { return null; } - return collection.Cache == null ? Penumbra.ModManager.Collections.ForcedCollection : collection; + return collection.Cache == null ? Penumbra.CollectionManager.ForcedCollection : collection; } @@ -274,7 +274,7 @@ public unsafe partial class PathResolver { collection = IdentifyCollection( resolver.LastGameObject ); #if USE_CMP - if( collection != Penumbra.ModManager.Collections.DefaultCollection && collection.Cache != null ) + if( collection != Penumbra.CollectionManager.DefaultCollection && collection.Cache != null ) { collection.SetCmpFiles(); return new MetaChanger( MetaManipulation.Type.Rsp ); @@ -309,25 +309,25 @@ public unsafe partial class PathResolver case MetaManipulation.Type.Eqdp: if( --_eqdpCounter == 0 ) { - Penumbra.ModManager.Collections.DefaultCollection.SetEqdpFiles(); + Penumbra.CollectionManager.DefaultCollection.SetEqdpFiles(); } break; case MetaManipulation.Type.Eqp: if( --_eqpCounter == 0 ) { - Penumbra.ModManager.Collections.DefaultCollection.SetEqpFiles(); + Penumbra.CollectionManager.DefaultCollection.SetEqpFiles(); } break; case MetaManipulation.Type.Est: - Penumbra.ModManager.Collections.DefaultCollection.SetEstFiles(); + Penumbra.CollectionManager.DefaultCollection.SetEstFiles(); break; case MetaManipulation.Type.Gmp: - Penumbra.ModManager.Collections.DefaultCollection.SetGmpFiles(); + Penumbra.CollectionManager.DefaultCollection.SetGmpFiles(); break; case MetaManipulation.Type.Rsp: - Penumbra.ModManager.Collections.DefaultCollection.SetCmpFiles(); + Penumbra.CollectionManager.DefaultCollection.SetCmpFiles(); break; } } diff --git a/Penumbra/Interop/Resolver/PathResolver.Resolve.cs b/Penumbra/Interop/Resolver/PathResolver.Resolve.cs index ce3ec0dd..f79f25b6 100644 --- a/Penumbra/Interop/Resolver/PathResolver.Resolve.cs +++ b/Penumbra/Interop/Resolver/PathResolver.Resolve.cs @@ -104,7 +104,7 @@ public unsafe partial class PathResolver [MethodImpl( MethodImplOptions.AggressiveInlining | MethodImplOptions.AggressiveOptimization )] private IntPtr ResolvePathDetour( IntPtr drawObject, IntPtr path ) => ResolvePathDetour( FindParent( drawObject, out var collection ) == null - ? Penumbra.ModManager.Collections.DefaultCollection + ? Penumbra.CollectionManager.DefaultCollection : collection, path ); // Weapons have the characters DrawObject as a parent, @@ -123,7 +123,7 @@ public unsafe partial class PathResolver { var parent = FindParent( ( IntPtr )parentObject, out var collection ); return ResolvePathDetour( parent == null - ? Penumbra.ModManager.Collections.DefaultCollection + ? Penumbra.CollectionManager.DefaultCollection : collection, path ); } } @@ -138,7 +138,7 @@ public unsafe partial class PathResolver } var gamePath = new Utf8String( ( byte* )path ); - if( collection == Penumbra.ModManager.Collections.DefaultCollection ) + if( collection == Penumbra.CollectionManager.DefaultCollection ) { SetCollection( gamePath, null ); return path; diff --git a/Penumbra/Interop/Resolver/PathResolver.cs b/Penumbra/Interop/Resolver/PathResolver.cs index cef6c550..ae58a64e 100644 --- a/Penumbra/Interop/Resolver/PathResolver.cs +++ b/Penumbra/Interop/Resolver/PathResolver.cs @@ -36,7 +36,7 @@ public partial class PathResolver : IDisposable var nonDefault = HandleMaterialSubFiles( gamePath, out var collection ) || PathCollections.TryGetValue( gamePath.Path, out collection ); if( !nonDefault ) { - collection = Penumbra.ModManager.Collections.DefaultCollection; + collection = Penumbra.CollectionManager.DefaultCollection; } else { @@ -49,7 +49,7 @@ public partial class PathResolver : IDisposable var resolved = collection!.ResolveSwappedOrReplacementPath( gamePath ); if( resolved == null ) { - resolved = Penumbra.ModManager.Collections.ForcedCollection.ResolveSwappedOrReplacementPath( gamePath ); + resolved = Penumbra.CollectionManager.ForcedCollection.ResolveSwappedOrReplacementPath( gamePath ); if( resolved == null ) { // We also need to handle defaulted materials against a non-default collection. @@ -61,7 +61,7 @@ public partial class PathResolver : IDisposable return ( null, collection ); } - collection = Penumbra.ModManager.Collections.ForcedCollection; + collection = Penumbra.CollectionManager.ForcedCollection; } // Since mtrl files load their files separately, we need to add the new, resolved path diff --git a/Penumbra/Meta/Manager/MetaManager.Imc.cs b/Penumbra/Meta/Manager/MetaManager.Imc.cs index c8c54a0e..991094f4 100644 --- a/Penumbra/Meta/Manager/MetaManager.Imc.cs +++ b/Penumbra/Meta/Manager/MetaManager.Imc.cs @@ -135,7 +135,7 @@ public partial class MetaManager fileDescriptor->ResourceHandle->FileNameLength = split[ 1 ].Length; var ret = Penumbra.ResourceLoader.ReadSqPackHook.Original( resourceManager, fileDescriptor, priority, isSync ); - if( Penumbra.ModManager.Collections.Collections.TryGetValue( split[ 0 ].ToString(), out var collection ) + if( Penumbra.CollectionManager.Collections.TryGetValue( split[ 0 ].ToString(), out var collection ) && collection.Cache != null && collection.Cache.MetaManipulations.Imc.Files.TryGetValue( Utf8GamePath.FromSpan( split[ 1 ].Span, out var p, false ) ? p : Utf8GamePath.Empty, out var file ) ) diff --git a/Penumbra/Mod/ModCleanup.cs b/Penumbra/Mod/ModCleanup.cs index 03633c33..8e202351 100644 --- a/Penumbra/Mod/ModCleanup.cs +++ b/Penumbra/Mod/ModCleanup.cs @@ -521,7 +521,7 @@ public class ModCleanup } } - foreach( var collection in Penumbra.ModManager.Collections.Collections.Values ) + foreach( var collection in Penumbra.CollectionManager.Collections.Values ) { collection.UpdateSetting( baseDir, meta, true ); } diff --git a/Penumbra/Mods/ModManager.cs b/Penumbra/Mods/ModManager.cs index d3eadd77..ba58e522 100644 --- a/Penumbra/Mods/ModManager.cs +++ b/Penumbra/Mods/ModManager.cs @@ -260,8 +260,8 @@ public class ModManager public FullPath? ResolveSwappedOrReplacementPath( Utf8GamePath gameResourcePath ) { - var ret = Collections.DefaultCollection.ResolveSwappedOrReplacementPath( gameResourcePath ); - ret ??= Collections.ForcedCollection.ResolveSwappedOrReplacementPath( gameResourcePath ); + var ret = Penumbra.CollectionManager.DefaultCollection.ResolveSwappedOrReplacementPath( gameResourcePath ); + ret ??= Penumbra.CollectionManager.ForcedCollection.ResolveSwappedOrReplacementPath( gameResourcePath ); return ret; } } \ No newline at end of file diff --git a/Penumbra/Mods/ModManagerEditExtensions.cs b/Penumbra/Mods/ModManagerEditExtensions.cs index e143b10a..59714c16 100644 --- a/Penumbra/Mods/ModManagerEditExtensions.cs +++ b/Penumbra/Mods/ModManagerEditExtensions.cs @@ -82,7 +82,7 @@ public static class ModManagerEditExtensions manager.Config.Save(); } - foreach( var collection in manager.Collections.Collections.Values ) + foreach( var collection in Penumbra.CollectionManager.Collections.Values ) { if( collection.Settings.TryGetValue( oldBasePath.Name, out var settings ) ) { @@ -140,7 +140,7 @@ public static class ModManagerEditExtensions mod.SaveMeta(); - foreach( var collection in manager.Collections.Collections.Values ) + foreach( var collection in Penumbra.CollectionManager.Collections.Values ) { if( !collection.Settings.TryGetValue( mod.BasePath.Name, out var settings ) ) { @@ -176,7 +176,7 @@ public static class ModManagerEditExtensions return ( oldSetting & bitmaskFront ) | ( ( oldSetting & bitmaskBack ) >> 1 ); } - foreach( var collection in manager.Collections.Collections.Values ) + foreach( var collection in Penumbra.CollectionManager.Collections.Values ) { if( !collection.Settings.TryGetValue( mod.BasePath.Name, out var settings ) ) { @@ -202,7 +202,7 @@ public static class ModManagerEditExtensions if( collection.Cache != null && settings.Enabled ) { collection.CalculateEffectiveFileList( mod.Resources.MetaManipulations.Count > 0, - manager.Collections.IsActive( collection ) ); + Penumbra.CollectionManager.IsActive( collection ) ); } } } diff --git a/Penumbra/Penumbra.cs b/Penumbra/Penumbra.cs index 40c12864..8dc512f8 100644 --- a/Penumbra/Penumbra.cs +++ b/Penumbra/Penumbra.cs @@ -214,7 +214,7 @@ public class Penumbra : IDalamudPlugin var collection = string.Equals( collectionName, ModCollection.Empty.Name, StringComparison.InvariantCultureIgnoreCase ) ? ModCollection.Empty - : ModManager.Collections.Collections.Values.FirstOrDefault( c + : CollectionManager.Collections.Values.FirstOrDefault( c => string.Equals( c.Name, collectionName, StringComparison.InvariantCultureIgnoreCase ) ); if( collection == null ) { @@ -225,24 +225,24 @@ public class Penumbra : IDalamudPlugin switch( type ) { case "default": - if( collection == ModManager.Collections.DefaultCollection ) + if( collection == CollectionManager.DefaultCollection ) { Dalamud.Chat.Print( $"{collection.Name} already is the default collection." ); return false; } - ModManager.Collections.SetCollection( collection, CollectionType.Default ); + CollectionManager.SetCollection( collection, CollectionType.Default ); Dalamud.Chat.Print( $"Set {collection.Name} as default collection." ); SettingsInterface.ResetDefaultCollection(); return true; case "forced": - if( collection == ModManager.Collections.ForcedCollection ) + if( collection == CollectionManager.ForcedCollection ) { Dalamud.Chat.Print( $"{collection.Name} already is the forced collection." ); return false; } - ModManager.Collections.SetCollection( collection, CollectionType.Forced ); + CollectionManager.SetCollection( collection, CollectionType.Forced ); Dalamud.Chat.Print( $"Set {collection.Name} as forced collection." ); SettingsInterface.ResetForcedCollection(); return true; diff --git a/Penumbra/UI/MenuTabs/TabChangedItems.cs b/Penumbra/UI/MenuTabs/TabChangedItems.cs index 87d0b58c..bcd6ff0a 100644 --- a/Penumbra/UI/MenuTabs/TabChangedItems.cs +++ b/Penumbra/UI/MenuTabs/TabChangedItems.cs @@ -26,8 +26,8 @@ public partial class SettingsInterface } var modManager = Penumbra.ModManager; - var items = modManager.Collections.DefaultCollection.Cache?.ChangedItems ?? new Dictionary< string, object? >(); - var forced = modManager.Collections.ForcedCollection.Cache?.ChangedItems ?? new Dictionary< string, object? >(); + var items = Penumbra.CollectionManager.DefaultCollection.Cache?.ChangedItems ?? new Dictionary< string, object? >(); + var forced = Penumbra.CollectionManager.ForcedCollection.Cache?.ChangedItems ?? new Dictionary< string, object? >(); using var raii = ImGuiRaii.DeferredEnd( ImGui.EndTabItem ); diff --git a/Penumbra/UI/MenuTabs/TabCollections.cs b/Penumbra/UI/MenuTabs/TabCollections.cs index 2b4fa4d8..18bf6b82 100644 --- a/Penumbra/UI/MenuTabs/TabCollections.cs +++ b/Penumbra/UI/MenuTabs/TabCollections.cs @@ -31,7 +31,7 @@ public partial class SettingsInterface private void UpdateNames() { - _collections = Penumbra.ModManager.Collections.Collections.Values.Prepend( ModCollection.Empty ).ToArray(); + _collections = Penumbra.CollectionManager.Collections.Values.Prepend( ModCollection.Empty ).ToArray(); _collectionNames = string.Join( "\0", _collections.Skip( 1 ).Select( c => c.Name ) ) + '\0'; _collectionNamesWithNone = "None\0" + _collectionNames; UpdateIndices(); @@ -51,18 +51,18 @@ public partial class SettingsInterface } private void UpdateIndex() - => _currentCollectionIndex = GetIndex( Penumbra.ModManager.Collections.CurrentCollection ) - 1; + => _currentCollectionIndex = GetIndex( Penumbra.CollectionManager.CurrentCollection ) - 1; public void UpdateForcedIndex() - => _currentForcedIndex = GetIndex( Penumbra.ModManager.Collections.ForcedCollection ); + => _currentForcedIndex = GetIndex( Penumbra.CollectionManager.ForcedCollection ); public void UpdateDefaultIndex() - => _currentDefaultIndex = GetIndex( Penumbra.ModManager.Collections.DefaultCollection ); + => _currentDefaultIndex = GetIndex( Penumbra.CollectionManager.DefaultCollection ); private void UpdateCharacterIndices() { _currentCharacterIndices.Clear(); - foreach( var kvp in Penumbra.ModManager.Collections.CharacterCollection ) + foreach( var kvp in Penumbra.CollectionManager.CharacterCollection ) { _currentCharacterIndices[ kvp.Key ] = GetIndex( kvp.Value ); } @@ -84,11 +84,10 @@ public partial class SettingsInterface private void CreateNewCollection( Dictionary< string, ModSettings > settings ) { - var manager = Penumbra.ModManager; - if( manager.Collections.AddCollection( _newCollectionName, settings ) ) + if( Penumbra.CollectionManager.AddCollection( _newCollectionName, settings ) ) { UpdateNames(); - SetCurrentCollection( manager.Collections.Collections[ _newCollectionName ], true ); + SetCurrentCollection( Penumbra.CollectionManager.Collections[ _newCollectionName ], true ); } _newCollectionName = string.Empty; @@ -98,10 +97,9 @@ public partial class SettingsInterface { if( ImGui.Button( "Clean Settings" ) ) { - var manager = Penumbra.ModManager; - var changes = ModFunctions.CleanUpCollection( manager.Collections.CurrentCollection.Settings, - manager.BasePath.EnumerateDirectories() ); - manager.Collections.CurrentCollection.UpdateSettings( changes ); + var changes = ModFunctions.CleanUpCollection( Penumbra.CollectionManager.CurrentCollection.Settings, + Penumbra.ModManager.BasePath.EnumerateDirectories() ); + Penumbra.CollectionManager.CurrentCollection.UpdateSettings( changes ); } ImGuiCustom.HoverTooltip( @@ -126,10 +124,9 @@ public partial class SettingsInterface var hover = ImGui.IsItemHovered(); ImGui.SameLine(); - var manager = Penumbra.ModManager; if( ImGui.Button( "Duplicate Current Collection" ) && _newCollectionName.Length > 0 ) { - CreateNewCollection( manager.Collections.CurrentCollection.Settings ); + CreateNewCollection( Penumbra.CollectionManager.CurrentCollection.Settings ); } hover |= ImGui.IsItemHovered(); @@ -140,13 +137,13 @@ public partial class SettingsInterface ImGui.SetTooltip( "Please enter a name before creating a collection." ); } - var deleteCondition = manager.Collections.Collections.Count > 1 - && manager.Collections.CurrentCollection.Name != ModCollection.DefaultCollection; + var deleteCondition = Penumbra.CollectionManager.Collections.Count > 1 + && Penumbra.CollectionManager.CurrentCollection.Name != ModCollection.DefaultCollection; ImGui.SameLine(); if( ImGuiCustom.DisableButton( "Delete Current Collection", deleteCondition ) ) { - manager.Collections.RemoveCollection( manager.Collections.CurrentCollection.Name ); - SetCurrentCollection( manager.Collections.CurrentCollection, true ); + Penumbra.CollectionManager.RemoveCollection( Penumbra.CollectionManager.CurrentCollection.Name ); + SetCurrentCollection( Penumbra.CollectionManager.CurrentCollection, true ); UpdateNames(); } @@ -169,7 +166,7 @@ public partial class SettingsInterface return; } - Penumbra.ModManager.Collections.SetCollection( _collections[ idx + 1 ], CollectionType.Current ); + Penumbra.CollectionManager.SetCollection( _collections[ idx + 1 ], CollectionType.Current ); _currentCollectionIndex = idx; _selector.Cache.TriggerListReset(); if( _selector.Mod != null ) @@ -208,7 +205,7 @@ public partial class SettingsInterface ImGui.SetNextItemWidth( SettingsMenu.InputTextWidth ); if( ImGui.Combo( "##Default Collection", ref index, _collectionNamesWithNone ) && index != _currentDefaultIndex ) { - Penumbra.ModManager.Collections.SetCollection( _collections[ index ], CollectionType.Default ); + Penumbra.CollectionManager.SetCollection( _collections[ index ], CollectionType.Default ); _currentDefaultIndex = index; } @@ -225,18 +222,17 @@ public partial class SettingsInterface { var index = _currentForcedIndex; ImGui.SetNextItemWidth( SettingsMenu.InputTextWidth ); - var manager = Penumbra.ModManager; - using var style = ImGuiRaii.PushStyle( ImGuiStyleVar.Alpha, 0.5f, manager.Collections.CharacterCollection.Count == 0 ); + using var style = ImGuiRaii.PushStyle( ImGuiStyleVar.Alpha, 0.5f, Penumbra.CollectionManager.CharacterCollection.Count == 0 ); if( ImGui.Combo( "##Forced Collection", ref index, _collectionNamesWithNone ) - && index != _currentForcedIndex - && manager.Collections.CharacterCollection.Count > 0 ) + && index != _currentForcedIndex + && Penumbra.CollectionManager.CharacterCollection.Count > 0 ) { - manager.Collections.SetCollection( _collections[ index ], CollectionType.Forced ); + Penumbra.CollectionManager.SetCollection( _collections[ index ], CollectionType.Forced ); _currentForcedIndex = index; } style.Pop(); - if( manager.Collections.CharacterCollection.Count == 0 && ImGui.IsItemHovered() ) + if( Penumbra.CollectionManager.CharacterCollection.Count == 0 && ImGui.IsItemHovered() ) { ImGui.SetTooltip( "Forced Collections only provide value if you have at least one Character Collection. There is no need to set one until then." ); @@ -262,7 +258,7 @@ public partial class SettingsInterface if( ImGuiCustom.DisableButton( "Create New Character Collection", _newCharacterName.Length > 0 && Penumbra.Config.HasReadCharacterCollectionDesc ) ) { - Penumbra.ModManager.Collections.CreateCharacterCollection( _newCharacterName ); + Penumbra.CollectionManager.CreateCharacterCollection( _newCharacterName ); _currentCharacterIndices[ _newCharacterName ] = 0; _newCharacterName = string.Empty; } @@ -344,15 +340,14 @@ public partial class SettingsInterface DrawDefaultCollectionSelector(); DrawForcedCollectionSelector(); - var manager = Penumbra.ModManager; - foreach( var name in manager.Collections.CharacterCollection.Keys.ToArray() ) + foreach( var name in Penumbra.CollectionManager.CharacterCollection.Keys.ToArray() ) { var idx = _currentCharacterIndices[ name ]; var tmp = idx; ImGui.SetNextItemWidth( SettingsMenu.InputTextWidth ); if( ImGui.Combo( $"##{name}collection", ref tmp, _collectionNamesWithNone ) && idx != tmp ) { - manager.Collections.SetCollection( _collections[ tmp ], CollectionType.Character, name ); + Penumbra.CollectionManager.SetCollection( _collections[ tmp ], CollectionType.Character, name ); _currentCharacterIndices[ name ] = tmp; } @@ -362,7 +357,7 @@ public partial class SettingsInterface if( ImGui.Button( $"{FontAwesomeIcon.Trash.ToIconString()}##{name}", Vector2.One * ImGui.GetFrameHeight() ) ) { - manager.Collections.RemoveCharacterCollection( name ); + Penumbra.CollectionManager.RemoveCharacterCollection( name ); } font.Pop(); diff --git a/Penumbra/UI/MenuTabs/TabDebug.cs b/Penumbra/UI/MenuTabs/TabDebug.cs index 2fe9b996..83ed25ee 100644 --- a/Penumbra/UI/MenuTabs/TabDebug.cs +++ b/Penumbra/UI/MenuTabs/TabDebug.cs @@ -49,17 +49,16 @@ public partial class SettingsInterface using var raii = ImGuiRaii.DeferredEnd( ImGui.EndTable ); var manager = Penumbra.ModManager; - PrintValue( "Current Collection", manager.Collections.CurrentCollection.Name ); - PrintValue( " has Cache", ( manager.Collections.CurrentCollection.Cache != null ).ToString() ); - PrintValue( "Default Collection", manager.Collections.DefaultCollection.Name ); - PrintValue( " has Cache", ( manager.Collections.DefaultCollection.Cache != null ).ToString() ); - PrintValue( "Forced Collection", manager.Collections.ForcedCollection.Name ); - PrintValue( " has Cache", ( manager.Collections.ForcedCollection.Cache != null ).ToString() ); - PrintValue( "Mod Manager BasePath", manager.BasePath?.Name ?? "NULL" ); - PrintValue( "Mod Manager BasePath-Full", manager.BasePath?.FullName ?? "NULL" ); + PrintValue( "Current Collection", Penumbra.CollectionManager.CurrentCollection.Name ); + PrintValue( " has Cache", ( Penumbra.CollectionManager.CurrentCollection.Cache != null ).ToString() ); + PrintValue( "Default Collection", Penumbra.CollectionManager.DefaultCollection.Name ); + PrintValue( " has Cache", ( Penumbra.CollectionManager.DefaultCollection.Cache != null ).ToString() ); + PrintValue( "Forced Collection", Penumbra.CollectionManager.ForcedCollection.Name ); + PrintValue( " has Cache", ( Penumbra.CollectionManager.ForcedCollection.Cache != null ).ToString() ); + PrintValue( "Mod Manager BasePath", manager.BasePath.Name ); + PrintValue( "Mod Manager BasePath-Full", manager.BasePath.FullName ); PrintValue( "Mod Manager BasePath IsRooted", Path.IsPathRooted( Penumbra.Config.ModDirectory ).ToString() ); - PrintValue( "Mod Manager BasePath Exists", - manager.BasePath != null ? Directory.Exists( manager.BasePath.FullName ).ToString() : false.ToString() ); + PrintValue( "Mod Manager BasePath Exists", Directory.Exists( manager.BasePath.FullName ).ToString() ); PrintValue( "Mod Manager Valid", manager.Valid.ToString() ); //PrintValue( "Resource Loader Enabled", _penumbra.ResourceLoader.IsEnabled.ToString() ); } @@ -122,7 +121,7 @@ public partial class SettingsInterface return; } - var cache = Penumbra.ModManager.Collections.CurrentCollection.Cache; + var cache = Penumbra.CollectionManager.CurrentCollection.Cache; if( cache == null || !ImGui.BeginTable( "##MissingFilesDebugList", 1, ImGuiTableFlags.RowBg, -Vector2.UnitX ) ) { return; diff --git a/Penumbra/UI/MenuTabs/TabEffective.cs b/Penumbra/UI/MenuTabs/TabEffective.cs index 101ac00e..672e5a8c 100644 --- a/Penumbra/UI/MenuTabs/TabEffective.cs +++ b/Penumbra/UI/MenuTabs/TabEffective.cs @@ -141,8 +141,8 @@ public partial class SettingsInterface const ImGuiTableFlags flags = ImGuiTableFlags.RowBg | ImGuiTableFlags.ScrollX; var modManager = Penumbra.ModManager; - var defaultCollection = modManager.Collections.DefaultCollection.Cache; - var forcedCollection = modManager.Collections.ForcedCollection.Cache; + var defaultCollection = Penumbra.CollectionManager.DefaultCollection.Cache; + var forcedCollection = Penumbra.CollectionManager.ForcedCollection.Cache; var (defaultResolved, defaultMeta) = defaultCollection != null ? ( defaultCollection.ResolvedFiles.Count, defaultCollection.MetaManipulations.Count ) diff --git a/Penumbra/UI/MenuTabs/TabInstalled/ModListCache.cs b/Penumbra/UI/MenuTabs/TabInstalled/ModListCache.cs index 6d4adbd5..a87a8b22 100644 --- a/Penumbra/UI/MenuTabs/TabInstalled/ModListCache.cs +++ b/Penumbra/UI/MenuTabs/TabInstalled/ModListCache.cs @@ -120,13 +120,13 @@ namespace Penumbra.UI var lower = filter.ToLowerInvariant(); if( lower.StartsWith( "c:" ) ) { - _modFilterChanges = lower.Substring( 2 ); + _modFilterChanges = lower[ 2.. ]; _modFilter = string.Empty; _modFilterAuthor = string.Empty; } else if( lower.StartsWith( "a:" ) ) { - _modFilterAuthor = lower.Substring( 2 ); + _modFilterAuthor = lower[ 2.. ]; _modFilter = string.Empty; _modFilterChanges = string.Empty; } @@ -147,11 +147,11 @@ namespace Penumbra.UI _visibleFolders.Clear(); PluginLog.Debug( "Resetting mod selector list..." ); - if( !_modsInOrder.Any() ) + if( _modsInOrder.Count == 0 ) { foreach( var modData in _manager.StructuredMods.AllMods( _manager.Config.SortFoldersFirst ) ) { - var mod = _manager.Collections.CurrentCollection.GetMod( modData ); + var mod = Penumbra.CollectionManager.CurrentCollection.GetMod( modData ); _modsInOrder.Add( mod ); _visibleMods.Add( CheckFilters( mod ) ); } diff --git a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetails.cs b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetails.cs index 192126b1..1e0a92d1 100644 --- a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetails.cs +++ b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledDetails.cs @@ -127,7 +127,7 @@ public partial class SettingsInterface private void Save() { - Penumbra.ModManager.Collections.CurrentCollection.Save(); + Penumbra.CollectionManager.CurrentCollection.Save(); } private void DrawAboutTab() @@ -422,11 +422,10 @@ public partial class SettingsInterface _fullFilenameList = null; _selector.SaveCurrentMod(); // Since files may have changed, we need to recompute effective files. - var modManager = Penumbra.ModManager; - foreach( var collection in modManager.Collections.Collections.Values + foreach( var collection in Penumbra.CollectionManager.Collections.Values .Where( c => c.Cache != null && c.Settings[ Mod!.Data.BasePath.Name ].Enabled ) ) { - collection.CalculateEffectiveFileList( false, modManager.Collections.IsActive( collection ) ); + collection.CalculateEffectiveFileList( false, Penumbra.CollectionManager.IsActive( collection ) ); } // If the mod is enabled in the current collection, its conflicts may have changed. diff --git a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledSelector.cs b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledSelector.cs index 943bc84a..3374a522 100644 --- a/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledSelector.cs +++ b/Penumbra/UI/MenuTabs/TabInstalled/TabInstalledSelector.cs @@ -526,10 +526,10 @@ public partial class SettingsInterface } Cache.TriggerFilterReset(); - var collection = Penumbra.ModManager.Collections.CurrentCollection; + var collection = Penumbra.CollectionManager.CurrentCollection; if( collection.Cache != null ) { - collection.CalculateEffectiveFileList( metaManips, Penumbra.ModManager.Collections.IsActive( collection ) ); + collection.CalculateEffectiveFileList( metaManips, Penumbra.CollectionManager.IsActive( collection ) ); } collection.Save(); @@ -609,7 +609,7 @@ public partial class SettingsInterface private void DrawCollectionButton( string label, string tooltipLabel, float size, ModCollection collection ) { if( collection == ModCollection.Empty - || collection == Penumbra.ModManager.Collections.CurrentCollection ) + || collection == Penumbra.CollectionManager.CurrentCollection ) { using var _ = ImGuiRaii.PushStyle( ImGuiStyleVar.Alpha, 0.5f ); ImGui.Button( label, Vector2.UnitX * size ); @@ -638,10 +638,10 @@ public partial class SettingsInterface - 4 * ImGui.GetStyle().ItemSpacing.X ) / 2, 5f ); ImGui.SameLine(); - DrawCollectionButton( "Default", "default", buttonSize, Penumbra.ModManager.Collections.DefaultCollection ); + DrawCollectionButton( "Default", "default", buttonSize, Penumbra.CollectionManager.DefaultCollection ); ImGui.SameLine(); - DrawCollectionButton( "Forced", "forced", buttonSize, Penumbra.ModManager.Collections.ForcedCollection ); + DrawCollectionButton( "Forced", "forced", buttonSize, Penumbra.CollectionManager.ForcedCollection ); ImGui.SameLine(); ImGui.SetNextItemWidth( comboSize ); diff --git a/Penumbra/UI/SettingsInterface.cs b/Penumbra/UI/SettingsInterface.cs index 915bf84d..8939be48 100644 --- a/Penumbra/UI/SettingsInterface.cs +++ b/Penumbra/UI/SettingsInterface.cs @@ -57,18 +57,17 @@ public partial class SettingsInterface : IDisposable private void SaveCurrentCollection( bool recalculateMeta ) { - var current = Penumbra.ModManager.Collections.CurrentCollection; + var current = Penumbra.CollectionManager.CurrentCollection; current.Save(); RecalculateCurrent( recalculateMeta ); } private void RecalculateCurrent( bool recalculateMeta ) { - var modManager = Penumbra.ModManager; - var current = modManager.Collections.CurrentCollection; + var current = Penumbra.CollectionManager.CurrentCollection; if( current.Cache != null ) { - current.CalculateEffectiveFileList( recalculateMeta, modManager.Collections.IsActive( current ) ); + current.CalculateEffectiveFileList( recalculateMeta, Penumbra.CollectionManager.IsActive( current ) ); _menu.InstalledTab.Selector.Cache.TriggerFilterReset(); } }