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:
@@ -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 };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user