Refactor EntityMenuUIController.AddToUI
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
// 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);
|
||||
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>
|
||||
|
||||
Reference in New Issue
Block a user