mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 10:17:22 +01:00
Change active collection setting.
This commit is contained in:
parent
940f1fbb3d
commit
52108d6198
2 changed files with 27 additions and 6 deletions
|
|
@ -61,13 +61,13 @@ namespace Penumbra.Interop
|
||||||
if( _currentObjectName != null && _mods.Collections.CharacterCollection.TryGetValue( _currentObjectName, out var collection ) )
|
if( _currentObjectName != null && _mods.Collections.CharacterCollection.TryGetValue( _currentObjectName, out var collection ) )
|
||||||
{
|
{
|
||||||
_changedSettings = true;
|
_changedSettings = true;
|
||||||
_mods.Collections.ActiveCollection = collection;
|
_mods.Collections.SetActiveCollection( collection, _currentObjectName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RestoreSettings()
|
private void RestoreSettings()
|
||||||
{
|
{
|
||||||
_mods.Collections.ActiveCollection = _mods.Collections.DefaultCollection;
|
_mods.Collections.ResetActiveCollection();
|
||||||
_changedSettings = false;
|
_changedSettings = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ namespace Penumbra.Mods
|
||||||
{
|
{
|
||||||
private readonly ModManager _manager;
|
private readonly ModManager _manager;
|
||||||
|
|
||||||
|
public string CollectionChangedTo { get; private set; }= string.Empty;
|
||||||
public Dictionary< string, ModCollection > Collections { get; } = new();
|
public Dictionary< string, ModCollection > Collections { get; } = new();
|
||||||
|
|
||||||
public ModCollection CurrentCollection { get; private set; } = null!;
|
public ModCollection CurrentCollection { get; private set; } = null!;
|
||||||
|
|
@ -21,7 +22,7 @@ namespace Penumbra.Mods
|
||||||
public ModCollection ForcedCollection { get; private set; } = ModCollection.Empty;
|
public ModCollection ForcedCollection { get; private set; } = ModCollection.Empty;
|
||||||
public Dictionary< string, ModCollection > CharacterCollection { get; } = new();
|
public Dictionary< string, ModCollection > CharacterCollection { get; } = new();
|
||||||
|
|
||||||
public ModCollection ActiveCollection { get; set; }
|
public ModCollection ActiveCollection { get; private set; }
|
||||||
|
|
||||||
public CollectionManager( ModManager manager )
|
public CollectionManager( ModManager manager )
|
||||||
{
|
{
|
||||||
|
|
@ -32,6 +33,27 @@ namespace Penumbra.Mods
|
||||||
ActiveCollection = DefaultCollection;
|
ActiveCollection = DefaultCollection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool SetActiveCollection( ModCollection newActive, string name )
|
||||||
|
{
|
||||||
|
CollectionChangedTo = name;
|
||||||
|
if( newActive == ActiveCollection )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( ActiveCollection.Cache?.MetaManipulations.Count > 0 || newActive.Cache?.MetaManipulations.Count > 0 )
|
||||||
|
{
|
||||||
|
var resourceManager = Service<ResidentResources>.Get();
|
||||||
|
resourceManager.ReloadPlayerResources();
|
||||||
|
}
|
||||||
|
|
||||||
|
ActiveCollection = newActive;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ResetActiveCollection()
|
||||||
|
=> SetActiveCollection( DefaultCollection, string.Empty );
|
||||||
|
|
||||||
public void RecreateCaches()
|
public void RecreateCaches()
|
||||||
{
|
{
|
||||||
if( !_manager.TempWritable )
|
if( !_manager.TempWritable )
|
||||||
|
|
@ -183,7 +205,7 @@ namespace Penumbra.Mods
|
||||||
public void SetDefaultCollection( ModCollection newCollection )
|
public void SetDefaultCollection( ModCollection newCollection )
|
||||||
=> SetCollection( newCollection, DefaultCollection, c =>
|
=> SetCollection( newCollection, DefaultCollection, c =>
|
||||||
{
|
{
|
||||||
if( ActiveCollection == DefaultCollection )
|
if( !CollectionChangedTo.Any() )
|
||||||
{
|
{
|
||||||
ActiveCollection = c;
|
ActiveCollection = c;
|
||||||
var resourceManager = Service< ResidentResources >.Get();
|
var resourceManager = Service< ResidentResources >.Get();
|
||||||
|
|
@ -204,8 +226,7 @@ namespace Penumbra.Mods
|
||||||
CharacterCollection.TryGetValue( characterName, out var oldCollection ) ? oldCollection : ModCollection.Empty,
|
CharacterCollection.TryGetValue( characterName, out var oldCollection ) ? oldCollection : ModCollection.Empty,
|
||||||
c =>
|
c =>
|
||||||
{
|
{
|
||||||
if( CharacterCollection.TryGetValue( characterName, out var collection )
|
if( CollectionChangedTo == characterName && CharacterCollection.TryGetValue( characterName, out var collection ) )
|
||||||
&& ActiveCollection == collection )
|
|
||||||
{
|
{
|
||||||
ActiveCollection = c;
|
ActiveCollection = c;
|
||||||
var resourceManager = Service< ResidentResources >.Get();
|
var resourceManager = Service< ResidentResources >.Get();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue