From 36f6c48f7ace8fb9d0ca14c0ffbf2e65906a2feb Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Fri, 10 Nov 2023 18:30:01 +0100 Subject: [PATCH] Allow filtering designs for contained items. --- Glamourer/Designs/DesignData.cs | 15 +++++++++++++++ .../Tabs/DesignTab/DesignFileSystemSelector.cs | 7 ++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Glamourer/Designs/DesignData.cs b/Glamourer/Designs/DesignData.cs index 1364720..0bf66ee 100644 --- a/Glamourer/Designs/DesignData.cs +++ b/Glamourer/Designs/DesignData.cs @@ -3,6 +3,7 @@ using System.Buffers.Text; using System.Runtime.CompilerServices; using Glamourer.Customization; using Glamourer.Services; +using OtterGui.Classes; using Penumbra.GameData.Enums; using Penumbra.GameData.Structs; using Penumbra.String.Functions; @@ -39,6 +40,20 @@ public unsafe struct DesignData public DesignData() { } + public bool ContainsName(LowerString name) + => name.IsContained(_nameHead) + || name.IsContained(_nameBody) + || name.IsContained(_nameHands) + || name.IsContained(_nameLegs) + || name.IsContained(_nameFeet) + || name.IsContained(_nameEars) + || name.IsContained(_nameNeck) + || name.IsContained(_nameWrists) + || name.IsContained(_nameRFinger) + || name.IsContained(_nameLFinger) + || name.IsContained(_nameMainhand) + || name.IsContained(_nameOffhand); + public readonly StainId Stain(EquipSlot slot) { var index = slot.ToIndex(); diff --git a/Glamourer/Gui/Tabs/DesignTab/DesignFileSystemSelector.cs b/Glamourer/Gui/Tabs/DesignTab/DesignFileSystemSelector.cs index 114a527..71a74a5 100644 --- a/Glamourer/Gui/Tabs/DesignTab/DesignFileSystemSelector.cs +++ b/Glamourer/Gui/Tabs/DesignTab/DesignFileSystemSelector.cs @@ -173,7 +173,8 @@ public sealed class DesignFileSystemSelector : FileSystemSelector filterValue.Length == 2 ? (LowerString.Empty, -1) : (new LowerString(filterValue[2..]), 2), 't' => filterValue.Length == 2 ? (LowerString.Empty, -1) : (new LowerString(filterValue[2..]), 3), 'T' => filterValue.Length == 2 ? (LowerString.Empty, -1) : (new LowerString(filterValue[2..]), 3), + 'i' => filterValue.Length == 2 ? (LowerString.Empty, -1) : (new LowerString(filterValue[2..]), 4), + 'I' => filterValue.Length == 2 ? (LowerString.Empty, -1) : (new LowerString(filterValue[2..]), 4), _ => (new LowerString(filterValue), 0), }, _ => (new LowerString(filterValue), 0), @@ -259,6 +263,7 @@ public sealed class DesignFileSystemSelector : FileSystemSelector !design.Name.Contains(_designFilter), 2 => !design.AssociatedMods.Any(kvp => _designFilter.IsContained(kvp.Key.Name)), 3 => !design.Tags.Any(_designFilter.IsContained), + 4 => !design.DesignData.ContainsName(_designFilter), _ => false, // Should never happen }; }