From 2ed20c3dfe8673fa57bafc85e0f04fb8127f4951 Mon Sep 17 00:00:00 2001 From: MTVirux Date: Sat, 22 Nov 2025 13:28:23 +0000 Subject: [PATCH] Fix wildcard sets that are active staying greyed out in the UI --- .../Gui/Tabs/AutomationTab/SetSelector.cs | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/Glamourer/Gui/Tabs/AutomationTab/SetSelector.cs b/Glamourer/Gui/Tabs/AutomationTab/SetSelector.cs index 8a235ae..fb9529a 100644 --- a/Glamourer/Gui/Tabs/AutomationTab/SetSelector.cs +++ b/Glamourer/Gui/Tabs/AutomationTab/SetSelector.cs @@ -202,12 +202,41 @@ public class SetSelector : IDisposable if (IncognitoMode) text = pair.Set.Identifiers[0].Incognito(text); var textSize = ImGui.CalcTextSize(text); - var textColor = pair.Set.Identifiers.Any(_objects.ContainsKey) ? ColorId.AutomationActorAvailable : ColorId.AutomationActorUnavailable; + var textColor = HasMatchingActor(pair.Set) ? ColorId.AutomationActorAvailable : ColorId.AutomationActorUnavailable; ImGui.SetCursorPos(new Vector2(ImGui.GetContentRegionAvail().X - textSize.X, ImGui.GetCursorPosY() - ImGui.GetTextLineHeightWithSpacing())); ImGuiUtil.TextColored(textColor.Value(), text); } + private bool HasMatchingActor(AutoDesignSet set) + { + foreach (var id in set.Identifiers) + { + // Check for exact match + if (_objects.ContainsKey(id)) + return true; + + // Check for wildcard match + var nameStr = id.PlayerName.ToString(); + if (nameStr.Contains('*')) + { + var pattern = "^" + System.Text.RegularExpressions.Regex.Escape(nameStr).Replace("\\*", ".*") + "$"; + var regex = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase); + + foreach (var (actorId, _) in _objects) + { + if (actorId.Type == id.Type && actorId.DataId == id.DataId) + { + var actorNameStr = actorId.PlayerName.ToString(); + if (regex.IsMatch(actorNameStr)) + return true; + } + } + } + } + return false; + } + private void DrawSelectionButtons() { using var style = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing, Vector2.Zero)