Introducing custom Sort Order for mods and collapsible folders inside the mod selector based on '/' in the sort order.

This commit is contained in:
Ottermandias 2021-06-28 22:33:36 +02:00
parent 702e3b9305
commit d52086b69c
7 changed files with 157 additions and 13 deletions

View file

@ -30,6 +30,36 @@ namespace Penumbra.Mods
return true;
}
public static bool ChangeSortOrder( this ModManager manager, ModData mod, string newSortOrder )
{
newSortOrder = string.Join( "/", newSortOrder.Trim().Split( new[] { "/" }, StringSplitOptions.RemoveEmptyEntries ) );
if( mod.SortOrder == newSortOrder )
{
return false;
}
if( newSortOrder == string.Empty || newSortOrder == mod.Meta.Name )
{
mod.SortOrder = mod.Meta.Name;
manager.Config.ModSortOrder.Remove( mod.BasePath.Name );
}
else
{
mod.SortOrder = newSortOrder;
manager.Config.ModSortOrder[ mod.BasePath.Name ] = newSortOrder;
}
manager.Config.Save();
foreach( var collection in manager.Collections.Collections.Values.Where( c => c.Cache != null ) )
{
collection.Cache!.SortMods();
}
return true;
}
public static bool RenameModFolder( this ModManager manager, ModData mod, DirectoryInfo newDir, bool move = true )
{
if( move )
@ -60,6 +90,13 @@ namespace Penumbra.Mods
mod.MetaFile = ModData.MetaFileInfo( newDir );
manager.UpdateMod( mod );
if( manager.Config.ModSortOrder.ContainsKey( oldBasePath.Name ) )
{
manager.Config.ModSortOrder[ newDir.Name ] = manager.Config.ModSortOrder[ oldBasePath.Name ];
manager.Config.ModSortOrder.Remove( oldBasePath.Name );
manager.Config.Save();
}
foreach( var collection in manager.Collections.Collections.Values )
{
if( collection.Settings.TryGetValue( oldBasePath.Name, out var settings ) )