Fix construction menu grid view quirky button selection (#38214)

* make hover and info use construction proto name, not entity name

* recipeButtons uses IDs as keys, not names

* return making item green when selected
This commit is contained in:
qwerltaz
2025-06-11 01:04:39 +01:00
committed by GitHub
parent 5a6ad30ec4
commit 640ec3e031

View File

@@ -38,7 +38,7 @@ namespace Content.Client.Construction.UI
private ConstructionSystem? _constructionSystem; private ConstructionSystem? _constructionSystem;
private ConstructionPrototype? _selected; private ConstructionPrototype? _selected;
private List<ConstructionPrototype> _favoritedRecipes = []; private List<ConstructionPrototype> _favoritedRecipes = [];
private Dictionary<string, ContainerButton> _recipeButtons = new(); private readonly Dictionary<string, ContainerButton> _recipeButtons = new();
private string _selectedCategory = string.Empty; private string _selectedCategory = string.Empty;
private const string FavoriteCatName = "construction-category-favorites"; private const string FavoriteCatName = "construction-category-favorites";
@@ -217,8 +217,8 @@ namespace Content.Client.Construction.UI
var itemButton = new ContainerButton() var itemButton = new ContainerButton()
{ {
VerticalAlignment = Control.VAlignment.Center, VerticalAlignment = Control.VAlignment.Center,
Name = recipe.TargetPrototype.Name, Name = recipe.Prototype.Name,
ToolTip = recipe.TargetPrototype.Name, ToolTip = recipe.Prototype.Name,
ToggleMode = true, ToggleMode = true,
Children = { protoView }, Children = { protoView },
}; };
@@ -235,7 +235,7 @@ namespace Content.Client.Construction.UI
if (buttonToggledEventArgs.Pressed && if (buttonToggledEventArgs.Pressed &&
_selected != null && _selected != null &&
_recipeButtons.TryGetValue(_selected.Name!, out var oldButton)) _recipeButtons.TryGetValue(_selected.ID, out var oldButton))
{ {
oldButton.Pressed = false; oldButton.Pressed = false;
SelectGridButton(oldButton, false); SelectGridButton(oldButton, false);
@@ -245,7 +245,7 @@ namespace Content.Client.Construction.UI
}; };
recipesGrid.AddChild(itemButtonPanelContainer); recipesGrid.AddChild(itemButtonPanelContainer);
_recipeButtons[recipe.Prototype.Name!] = itemButton; _recipeButtons[recipe.Prototype.ID] = itemButton;
var isCurrentButtonSelected = _selected == recipe.Prototype; var isCurrentButtonSelected = _selected == recipe.Prototype;
itemButton.Pressed = isCurrentButtonSelected; itemButton.Pressed = isCurrentButtonSelected;
SelectGridButton(itemButton, isCurrentButtonSelected); SelectGridButton(itemButton, isCurrentButtonSelected);
@@ -307,7 +307,7 @@ namespace Content.Client.Construction.UI
if (button.Parent is not PanelContainer buttonPanel) if (button.Parent is not PanelContainer buttonPanel)
return; return;
button.Modulate = select ? Color.Green : Color.Transparent; button.Children.Single().Modulate = select ? Color.Green : Color.White;
var buttonColor = select ? StyleNano.ButtonColorDefault : Color.Transparent; var buttonColor = select ? StyleNano.ButtonColorDefault : Color.Transparent;
buttonPanel.PanelOverride = new StyleBoxFlat { BackgroundColor = buttonColor }; buttonPanel.PanelOverride = new StyleBoxFlat { BackgroundColor = buttonColor };
} }