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 (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);
}
/// <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>
/// Remove an entity from the entity context menu.
/// </summary>