VoteCallMenuButton.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Robust.Client.UserInterface.Controls;
  2. using Robust.Shared.IoC;
  3. using Robust.Shared.Localization;
  4. namespace Content.Client.Voting.UI
  5. {
  6. /// <summary>
  7. /// LITERALLY just a button that opens the vote call menu.
  8. /// Automatically disables itself if the client cannot call votes.
  9. /// </summary>
  10. public sealed class VoteCallMenuButton : Button
  11. {
  12. [Dependency] private readonly IVoteManager _voteManager = default!;
  13. public VoteCallMenuButton()
  14. {
  15. IoCManager.InjectDependencies(this);
  16. Text = Loc.GetString("ui-vote-menu-button");
  17. OnPressed += OnOnPressed;
  18. }
  19. private void OnOnPressed(ButtonEventArgs obj)
  20. {
  21. var menu = new VoteCallMenu();
  22. menu.OpenCentered();
  23. }
  24. protected override void EnteredTree()
  25. {
  26. base.EnteredTree();
  27. UpdateCanCall(_voteManager.CanCallVote);
  28. _voteManager.CanCallVoteChanged += UpdateCanCall;
  29. }
  30. protected override void ExitedTree()
  31. {
  32. base.ExitedTree();
  33. _voteManager.CanCallVoteChanged += UpdateCanCall;
  34. }
  35. private void UpdateCanCall(bool canCall)
  36. {
  37. Disabled = !canCall;
  38. }
  39. }
  40. }