Refactor EntityMenuUIController.AddToUI

This commit is contained in:
Alexis Ehret
2023-02-21 15:08:42 +01:00
parent d060e1e9af
commit 42e8bfb127

View 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 there is only a single group. We will just directly list individual entities
if (entityGroups.Count == 1) if (entityGroups.Count == 1)
{ {
foreach (var entity in entityGroups[0]) AddGroupToMenu(entityGroups[0], _context.RootMenu);
{
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);
}
return; return;
} }
@@ -234,16 +225,12 @@ namespace Content.Client.ContextMenu.UI
if (group.Count > 1) if (group.Count > 1)
{ {
AddGroupToUI(group); AddGroupToUI(group);
continue;
} }
else
{
// this group only has a single entity, add a simple menu element // this group only has a single entity, add a simple menu element
var element = new EntityMenuElement(group[0]); AddEntityToMenu(group[0], _context.RootMenu);
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);
} }
} }
@@ -256,20 +243,36 @@ namespace Content.Client.ContextMenu.UI
EntityMenuElement element = new(); EntityMenuElement element = new();
ContextMenuPopup subMenu = new(_context, element); ContextMenuPopup subMenu = new(_context, element);
foreach (var entity in group) AddGroupToMenu(group, subMenu);
{
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);
}
UpdateElement(element); UpdateElement(element);
_context.AddElement(_context.RootMenu, 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)
{
AddEntityToMenu(entity, menu);
}
}
/// <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> /// <summary>
/// Remove an entity from the entity context menu. /// Remove an entity from the entity context menu.
/// </summary> /// </summary>