using Content.Shared.RCD.Components;
using JetBrains.Annotations;
using Robust.Client.UserInterface;
+using Robust.Shared.Collections;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
[UsedImplicitly]
public sealed class RCDMenuBoundUserInterface : BoundUserInterface
{
+ private const string TopLevelActionCategory = "Main";
+
private static readonly Dictionary<string, (string Tooltip, SpriteSpecifier Sprite)> PrototypesGroupingInfo
= new Dictionary<string, (string Tooltip, SpriteSpecifier Sprite)>
{
_menu.OpenOverMouseScreenPosition();
}
- private IEnumerable<RadialMenuNestedLayerOption> ConvertToButtons(HashSet<ProtoId<RCDPrototype>> prototypes)
+ private IEnumerable<RadialMenuOption> ConvertToButtons(HashSet<ProtoId<RCDPrototype>> prototypes)
{
Dictionary<string, List<RadialMenuActionOption>> buttonsByCategory = new();
+ ValueList<RadialMenuActionOption> topLevelActions = new();
foreach (var protoId in prototypes)
{
var prototype = _prototypeManager.Index(protoId);
+ if (prototype.Category == TopLevelActionCategory)
+ {
+ var topLevelActionOption = new RadialMenuActionOption<RCDPrototype>(HandleMenuOptionClick, prototype)
+ {
+ Sprite = prototype.Sprite,
+ ToolTip = GetTooltip(prototype)
+ };
+ topLevelActions.Add(topLevelActionOption);
+ continue;
+ }
+
if (!PrototypesGroupingInfo.TryGetValue(prototype.Category, out var groupInfo))
continue;
list.Add(actionOption);
}
- var models = new RadialMenuNestedLayerOption[buttonsByCategory.Count];
+ var models = new RadialMenuOption[buttonsByCategory.Count + topLevelActions.Count];
var i = 0;
foreach (var (key, list) in buttonsByCategory)
{
i++;
}
+ foreach (var action in topLevelActions)
+ {
+ models[i] = action;
+ i++;
+ }
+
return models;
}