Fix collections not correctly building on first launch.

This commit is contained in:
Ottermandias 2021-12-13 13:15:53 +01:00
parent 2c22e37666
commit 12d483e010
3 changed files with 34 additions and 5 deletions

View file

@ -54,6 +54,24 @@ namespace Penumbra.Mods
public bool ResetActiveCollection()
=> SetActiveCollection( DefaultCollection, string.Empty );
public void CreateNecessaryCaches()
{
if( !_manager.TempWritable )
{
PluginLog.Error( "No temporary directory available." );
return;
}
if( DefaultCollection.Cache == null )
DefaultCollection.CreateCache( _manager.TempPath, _manager.StructuredMods.AllMods( _manager.Config.SortFoldersFirst ));
if( ForcedCollection.Cache == null )
ForcedCollection.CreateCache( _manager.TempPath, _manager.StructuredMods.AllMods( _manager.Config.SortFoldersFirst ) );
foreach (var (_, collection) in CharacterCollection.Where( kvp => kvp.Value.Cache == null ))
collection.CreateCache( _manager.TempPath, _manager.StructuredMods.AllMods( _manager.Config.SortFoldersFirst ) );
}
public void RecreateCaches()
{
if( !_manager.TempWritable )
@ -66,6 +84,8 @@ namespace Penumbra.Mods
{
collection.CreateCache( _manager.TempPath, _manager.StructuredMods.AllMods( _manager.Config.SortFoldersFirst ) );
}
CreateNecessaryCaches();
}
public void RemoveModFromCaches( DirectoryInfo modDir )

View file

@ -129,6 +129,8 @@ namespace Penumbra.Mods
TempWritable = false;
}
}
Collections?.RecreateCaches();
}
}

View file

@ -145,15 +145,22 @@ namespace Penumbra.UI
var manager = Service< ModManager >.Get();
PrintValue( "Active Collection", manager.Collections.ActiveCollection.Name );
PrintValue( "Mod Manager BasePath", manager.BasePath.Name );
PrintValue( "Mod Manager BasePath-Full", manager.BasePath.FullName );
PrintValue( " has Cache", (manager.Collections.ActiveCollection.Cache != null).ToString() );
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( "Mod Manager BasePath IsRooted", Path.IsPathRooted( Penumbra.Config.ModDirectory ).ToString() );
PrintValue( "Mod Manager BasePath Exists", Directory.Exists( manager.BasePath.FullName ).ToString() );
PrintValue( "Mod Manager BasePath Exists", manager.BasePath != null ? Directory.Exists( manager.BasePath.FullName ).ToString() : false.ToString() );
PrintValue( "Mod Manager Valid", manager.Valid.ToString() );
PrintValue( "Mod Manager Temp Path", manager.TempPath.FullName );
PrintValue( "Mod Manager Temp Path", manager.TempPath?.FullName ?? "NULL" );
PrintValue( "Mod Manager Temp Path IsRooted",
( !Penumbra.Config.TempDirectory.Any() || Path.IsPathRooted( Penumbra.Config.TempDirectory ) ).ToString() );
PrintValue( "Mod Manager Temp Path Exists", Directory.Exists( manager.TempPath.FullName ).ToString() );
PrintValue( "Mod Manager Temp Path Exists", manager.TempPath != null ? Directory.Exists( manager.TempPath.FullName ).ToString() : false.ToString() );
PrintValue( "Mod Manager Temp Path IsWritable", manager.TempWritable.ToString() );
}