Add filter for temporary mods

This commit is contained in:
Caraxi 2025-04-20 00:35:36 +09:30 committed by Ottermandias
parent 7595827d29
commit 363d115be8
2 changed files with 19 additions and 2 deletions

View file

@ -647,6 +647,20 @@ public sealed class ModFileSystemSelector : FileSystemSelector<Mod, ModFileSyste
|| !_stateFilter.HasFlag(ModFilter.NotFavorite) && !mod.Favorite) || !_stateFilter.HasFlag(ModFilter.NotFavorite) && !mod.Favorite)
return true; return true;
// Handle Temporary
if (!_stateFilter.HasFlag(ModFilter.Temporary) || !_stateFilter.HasFlag(ModFilter.NotTemporary))
{
if (settings == null && _stateFilter.HasFlag(ModFilter.Temporary))
{
return true;
}
if (settings != null && settings.IsTemporary() != _stateFilter.HasFlag(ModFilter.Temporary))
{
return true;
}
}
// Handle Inheritance // Handle Inheritance
if (collection == _collectionManager.Active.Current) if (collection == _collectionManager.Active.Current)
{ {

View file

@ -22,12 +22,14 @@ public enum ModFilter
NotNew = 1 << 16, NotNew = 1 << 16,
Inherited = 1 << 17, Inherited = 1 << 17,
Uninherited = 1 << 18, Uninherited = 1 << 18,
Undefined = 1 << 19, Temporary = 1 << 19,
NotTemporary = 1 << 20,
Undefined = 1 << 21,
}; };
public static class ModFilterExtensions public static class ModFilterExtensions
{ {
public const ModFilter UnfilteredStateMods = (ModFilter)((1 << 20) - 1); public const ModFilter UnfilteredStateMods = (ModFilter)((1 << 22) - 1);
public static IReadOnlyList<(ModFilter On, ModFilter Off, string Name)> TriStatePairs = public static IReadOnlyList<(ModFilter On, ModFilter Off, string Name)> TriStatePairs =
[ [
@ -38,6 +40,7 @@ public static class ModFilterExtensions
(ModFilter.HasFiles, ModFilter.HasNoFiles, "Has Redirections"), (ModFilter.HasFiles, ModFilter.HasNoFiles, "Has Redirections"),
(ModFilter.HasMetaManipulations, ModFilter.HasNoMetaManipulations, "Has Meta Manipulations"), (ModFilter.HasMetaManipulations, ModFilter.HasNoMetaManipulations, "Has Meta Manipulations"),
(ModFilter.HasFileSwaps, ModFilter.HasNoFileSwaps, "Has File Swaps"), (ModFilter.HasFileSwaps, ModFilter.HasNoFileSwaps, "Has File Swaps"),
(ModFilter.Temporary, ModFilter.NotTemporary, "Temporary"),
]; ];
public static IReadOnlyList<IReadOnlyList<(ModFilter Filter, string Name)>> Groups = public static IReadOnlyList<IReadOnlyList<(ModFilter Filter, string Name)>> Groups =