Files
tbd-station-14/Content.Client/Thief/ThiefBackpackMenu.xaml.cs
metalgearsloth cbf329a82d Remove some BUI boilerplate (#28399)
* Remove some BUI boilerplate

- The disposals overrides got removed due to the helper method handling it.
- Replace window creation with CreateWindow helper.
- Fixed some stinky code which would cause exceptions.

* More

* moar

* weh

* done

* More BUIs

* More updates

* weh

* moar

* look who it is

* weh

* merge

* weh

* fixes
2024-07-20 15:40:16 +10:00

54 lines
1.6 KiB
C#

using Content.Client.UserInterface.Controls;
using Content.Shared.Thief;
using Robust.Client.AutoGenerated;
using Robust.Client.GameObjects;
using Robust.Client.UserInterface.XAML;
namespace Content.Client.Thief;
[GenerateTypedNameReferences]
public sealed partial class ThiefBackpackMenu : FancyWindow
{
[Dependency] private readonly IEntitySystemManager _sysMan = default!;
private readonly SpriteSystem _spriteSystem;
public event Action? OnApprove;
public event Action<int>? OnSetChange;
public ThiefBackpackMenu()
{
RobustXamlLoader.Load(this);
IoCManager.InjectDependencies(this);
_spriteSystem = _sysMan.GetEntitySystem<SpriteSystem>();
ApproveButton.OnPressed += args =>
{
OnApprove?.Invoke();
};
}
public void UpdateState(ThiefBackpackBoundUserInterfaceState state)
{
SetsGrid.DisposeAllChildren();
var selectedNumber = 0;
foreach (var (set, info) in state.Sets)
{
var child = new ThiefBackpackSet(info, _spriteSystem);
child.SetButton.OnButtonDown += (args) =>
{
OnSetChange?.Invoke(set);
};
SetsGrid.AddChild(child);
if (info.Selected)
selectedNumber++;
}
Description.Text = Loc.GetString("thief-backpack-window-description", ("maxCount", state.MaxSelectedSets));
SelectedSets.Text = Loc.GetString("thief-backpack-window-selected", ("selectedCount", selectedNumber), ("maxCount", state.MaxSelectedSets));
ApproveButton.Disabled = selectedNumber != state.MaxSelectedSets;
}
}