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 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>
|
||||||
|
|||||||
Reference in New Issue
Block a user