From 42e8bfb1271f35c24e32f33034e4730e033b99ac Mon Sep 17 00:00:00 2001 From: Alexis Ehret Date: Tue, 21 Feb 2023 15:08:42 +0100 Subject: [PATCH] Refactor EntityMenuUIController.AddToUI --- .../ContextMenu/UI/EntityMenuUIController.cs | 59 ++++++++++--------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/Content.Client/ContextMenu/UI/EntityMenuUIController.cs b/Content.Client/ContextMenu/UI/EntityMenuUIController.cs index b33366ee63..24ff87fc3e 100644 --- a/Content.Client/ContextMenu/UI/EntityMenuUIController.cs +++ b/Content.Client/ContextMenu/UI/EntityMenuUIController.cs @@ -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,20 +243,36 @@ namespace Content.Client.ContextMenu.UI EntityMenuElement element = new(); ContextMenuPopup subMenu = new(_context, element); - 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); - } + AddGroupToMenu(group, subMenu); UpdateElement(element); _context.AddElement(_context.RootMenu, element); } + /// + /// Add the group of entities to the menu + /// + private void AddGroupToMenu(List group, ContextMenuPopup menu) + { + foreach (var entity in group) + { + AddEntityToMenu(entity, menu); + } + } + + /// + /// Add the entity to the menu + /// + 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); + } + /// /// Remove an entity from the entity context menu. ///