]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Refactor EntityMenuUIController.AddToUI
authorAlexis Ehret <git@08a.re>
Tue, 21 Feb 2023 14:08:42 +0000 (15:08 +0100)
committerAlexis Ehret <git@08a.re>
Tue, 21 Feb 2023 14:08:42 +0000 (15:08 +0100)
Content.Client/ContextMenu/UI/EntityMenuUIController.cs

index b33366ee63dd14e345236617f884515cf4da6220..24ff87fc3ec442004d8ebeaacaf9f39742213e7f 100644 (file)
@@ -216,16 +216,7 @@ namespace Content.Client.ContextMenu.UI
             // If there is only a single group. We will just directly list individual entities
             if (entityGroups.Count == 1)
             {
-                foreach (var entity in entityGroups[0])
-                {
-                    var element = new EntityMenuElement(entity);
-                    element.SubMenu = new ContextMenuPopup(_context, element);
-                    element.SubMenu.OnPopupOpen += () => _verb.OpenVerbMenu(entity, popup: element.SubMenu);
-                    element.SubMenu.OnPopupHide += element.SubMenu.MenuBody.DisposeAllChildren;
-
-                    _context.AddElement(_context.RootMenu, element);
-                    Elements.TryAdd(entity, element);
-                }
+                AddGroupToMenu(entityGroups[0], _context.RootMenu);
                 return;
             }
 
@@ -234,16 +225,12 @@ namespace Content.Client.ContextMenu.UI
                 if (group.Count > 1)
                 {
                     AddGroupToUI(group);
-                    continue;
                 }
-
-                // this group only has a single entity, add a simple menu element
-                var element = new EntityMenuElement(group[0]);
-                element.SubMenu = new ContextMenuPopup(_context, element);
-                element.SubMenu.OnPopupOpen += () => _verb.OpenVerbMenu(group[0], popup: element.SubMenu);
-                element.SubMenu.OnPopupHide += element.SubMenu.MenuBody.DisposeAllChildren;
-                _context.AddElement(_context.RootMenu, element);
-                Elements.TryAdd(group[0], element);
+                else
+                {
+                    // this group only has a single entity, add a simple menu element
+                    AddEntityToMenu(group[0], _context.RootMenu);
+                }
             }
 
         }
@@ -256,18 +243,34 @@ namespace Content.Client.ContextMenu.UI
             EntityMenuElement element = new();
             ContextMenuPopup subMenu = new(_context, element);
 
+            AddGroupToMenu(group, subMenu);
+
+            UpdateElement(element);
+            _context.AddElement(_context.RootMenu, element);
+        }
+
+        /// <summary>
+        ///     Add the group of entities to the menu
+        /// </summary>
+        private void AddGroupToMenu(List<EntityUid> group, ContextMenuPopup menu)
+        {
             foreach (var entity in group)
             {
-                var subElement = new EntityMenuElement(entity);
-                subElement.SubMenu = new ContextMenuPopup(_context, subElement);
-                subElement.SubMenu.OnPopupOpen += () => _verb.OpenVerbMenu(entity, popup: subElement.SubMenu);
-                subElement.SubMenu.OnPopupHide += subElement.SubMenu.MenuBody.DisposeAllChildren;
-                _context.AddElement(subMenu, subElement);
-                Elements.TryAdd(entity, subElement);
+                AddEntityToMenu(entity, menu);
             }
+        }
 
-            UpdateElement(element);
-            _context.AddElement(_context.RootMenu, element);
+        /// <summary>
+        ///     Add the entity to the menu
+        /// </summary>
+        private void AddEntityToMenu(EntityUid entity, ContextMenuPopup menu)
+        {
+            var element = new EntityMenuElement(entity);
+            element.SubMenu = new ContextMenuPopup(_context, element);
+            element.SubMenu.OnPopupOpen += () => _verb.OpenVerbMenu(entity, popup: element.SubMenu);
+            element.SubMenu.OnPopupHide += element.SubMenu.MenuBody.DisposeAllChildren;
+            _context.AddElement(menu, element);
+            Elements.TryAdd(entity, element);
         }
 
         /// <summary>