Added search bar to warp points (#23978)

This commit is contained in:
Crotalus
2024-01-12 21:34:11 +01:00
committed by GitHub
parent f8f5524fd5
commit 668d0eca22
2 changed files with 33 additions and 14 deletions

View File

@@ -12,12 +12,14 @@ namespace Content.Client.UserInterface.Systems.Ghost.Controls
public sealed partial class GhostTargetWindow : DefaultWindow
{
private List<(string, NetEntity)> _warps = new();
private string _searchText = string.Empty;
public event Action<NetEntity>? WarpClicked;
public GhostTargetWindow()
{
RobustXamlLoader.Load(this);
SearchBar.OnTextChanged += OnSearchTextChanged;
}
public void UpdateWarps(IEnumerable<GhostWarp> warps)
@@ -60,9 +62,31 @@ namespace Content.Client.UserInterface.Systems.Ghost.Controls
};
currentButtonRef.OnPressed += _ => WarpClicked?.Invoke(warpTarget);
currentButtonRef.Visible = ButtonIsVisible(currentButtonRef);
ButtonContainer.AddChild(currentButtonRef);
}
}
private bool ButtonIsVisible(Button button)
{
return string.IsNullOrEmpty(_searchText) || button.Text == null || button.Text.Contains(_searchText, StringComparison.OrdinalIgnoreCase);
}
private void UpdateVisibleButtons()
{
foreach (var child in ButtonContainer.Children)
{
if (child is Button button)
button.Visible = ButtonIsVisible(button);
}
}
private void OnSearchTextChanged(LineEdit.LineEditEventArgs args)
{
_searchText = args.Text;
UpdateVisibleButtons();
}
}
}