From d90cbee7f21e115b3b364bcb86c0085208c5b0d9 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Fri, 31 May 2024 11:55:01 +1000 Subject: [PATCH] Fix verb categories shuffling (#28368) If it's an extra category we leave it in its default spot. --- .../Verbs/UI/VerbMenuUIController.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Content.Client/Verbs/UI/VerbMenuUIController.cs b/Content.Client/Verbs/UI/VerbMenuUIController.cs index c3fc8c8356..e9c3f90641 100644 --- a/Content.Client/Verbs/UI/VerbMenuUIController.cs +++ b/Content.Client/Verbs/UI/VerbMenuUIController.cs @@ -8,6 +8,7 @@ using Content.Shared.Verbs; using Robust.Client.Player; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controllers; +using Robust.Shared.Collections; using Robust.Shared.Input; using Robust.Shared.Utility; @@ -115,6 +116,13 @@ namespace Content.Client.Verbs.UI private void FillVerbPopup(ContextMenuPopup popup) { HashSet listedCategories = new(); + var extras = new ValueList(ExtraCategories.Count); + + foreach (var cat in ExtraCategories) + { + extras.Add(cat.Text); + } + foreach (var verb in CurrentVerbs) { if (verb.Category == null) @@ -122,17 +130,15 @@ namespace Content.Client.Verbs.UI var element = new VerbMenuElement(verb); _context.AddElement(popup, element); } - else if (listedCategories.Add(verb.Category.Text)) + // Add the category if it's not an extra (this is to avoid shuffling if we're filling from server verbs response). + else if (!extras.Contains(verb.Category.Text) && listedCategories.Add(verb.Category.Text)) AddVerbCategory(verb.Category, popup); } - if (ExtraCategories != null) + foreach (var category in ExtraCategories) { - foreach (var category in ExtraCategories) - { - if (listedCategories.Add(category.Text)) - AddVerbCategory(category, popup); - } + if (listedCategories.Add(category.Text)) + AddVerbCategory(category, popup); } popup.InvalidateMeasure();