1
0

ThiefBackpackMenu.xaml.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Content.Client.UserInterface.Controls;
  2. using Content.Shared.Thief;
  3. using Robust.Client.AutoGenerated;
  4. using Robust.Client.GameObjects;
  5. using Robust.Client.UserInterface.XAML;
  6. namespace Content.Client.Thief;
  7. [GenerateTypedNameReferences]
  8. public sealed partial class ThiefBackpackMenu : FancyWindow
  9. {
  10. [Dependency] private readonly IEntitySystemManager _sysMan = default!;
  11. private readonly SpriteSystem _spriteSystem;
  12. public event Action? OnApprove;
  13. public event Action<int>? OnSetChange;
  14. public ThiefBackpackMenu()
  15. {
  16. RobustXamlLoader.Load(this);
  17. IoCManager.InjectDependencies(this);
  18. _spriteSystem = _sysMan.GetEntitySystem<SpriteSystem>();
  19. ApproveButton.OnPressed += args =>
  20. {
  21. OnApprove?.Invoke();
  22. };
  23. }
  24. public void UpdateState(ThiefBackpackBoundUserInterfaceState state)
  25. {
  26. SetsGrid.DisposeAllChildren();
  27. var selectedNumber = 0;
  28. foreach (var (set, info) in state.Sets)
  29. {
  30. var child = new ThiefBackpackSet(info, _spriteSystem);
  31. child.SetButton.OnButtonDown += (args) =>
  32. {
  33. OnSetChange?.Invoke(set);
  34. };
  35. SetsGrid.AddChild(child);
  36. if (info.Selected)
  37. selectedNumber++;
  38. }
  39. Description.Text = Loc.GetString("thief-backpack-window-description", ("maxCount", state.MaxSelectedSets));
  40. SelectedSets.Text = Loc.GetString("thief-backpack-window-selected", ("selectedCount", selectedNumber), ("maxCount", state.MaxSelectedSets));
  41. ApproveButton.Disabled = selectedNumber != state.MaxSelectedSets;
  42. }
  43. }