PlayerTabHeader.xaml.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using Robust.Client.AutoGenerated;
  2. using Robust.Client.UserInterface;
  3. using Robust.Client.UserInterface.Controls;
  4. using Robust.Client.UserInterface.XAML;
  5. using Robust.Shared.Input;
  6. namespace Content.Client.Administration.UI.Tabs.PlayerTab;
  7. [GenerateTypedNameReferences]
  8. public sealed partial class PlayerTabHeader : Control
  9. {
  10. public event Action<Header>? OnHeaderClicked;
  11. public PlayerTabHeader()
  12. {
  13. RobustXamlLoader.Load(this);
  14. UsernameLabel.OnKeyBindDown += UsernameClicked;
  15. CharacterLabel.OnKeyBindDown += CharacterClicked;
  16. JobLabel.OnKeyBindDown += JobClicked;
  17. AntagonistLabel.OnKeyBindDown += AntagonistClicked;
  18. RoleTypeLabel.OnKeyBindDown += RoleTypeClicked;
  19. PlaytimeLabel.OnKeyBindDown += PlaytimeClicked;
  20. }
  21. public Label GetHeader(Header header)
  22. {
  23. return header switch
  24. {
  25. Header.Username => UsernameLabel,
  26. Header.Character => CharacterLabel,
  27. Header.Job => JobLabel,
  28. Header.Antagonist => AntagonistLabel,
  29. Header.RoleType => RoleTypeLabel,
  30. Header.Playtime => PlaytimeLabel,
  31. _ => throw new ArgumentOutOfRangeException(nameof(header), header, null)
  32. };
  33. }
  34. public void ResetHeaderText()
  35. {
  36. UsernameLabel.Text = Loc.GetString("player-tab-username");
  37. CharacterLabel.Text = Loc.GetString("player-tab-character");
  38. JobLabel.Text = Loc.GetString("player-tab-job");
  39. AntagonistLabel.Text = Loc.GetString("player-tab-antagonist");
  40. RoleTypeLabel.Text = Loc.GetString("player-tab-roletype");
  41. PlaytimeLabel.Text = Loc.GetString("player-tab-playtime");
  42. }
  43. private void HeaderClicked(GUIBoundKeyEventArgs args, Header header)
  44. {
  45. if (args.Function != EngineKeyFunctions.UIClick)
  46. {
  47. return;
  48. }
  49. OnHeaderClicked?.Invoke(header);
  50. args.Handle();
  51. }
  52. private void UsernameClicked(GUIBoundKeyEventArgs args)
  53. {
  54. HeaderClicked(args, Header.Username);
  55. }
  56. private void CharacterClicked(GUIBoundKeyEventArgs args)
  57. {
  58. HeaderClicked(args, Header.Character);
  59. }
  60. private void JobClicked(GUIBoundKeyEventArgs args)
  61. {
  62. HeaderClicked(args, Header.Job);
  63. }
  64. private void AntagonistClicked(GUIBoundKeyEventArgs args)
  65. {
  66. HeaderClicked(args, Header.Antagonist);
  67. }
  68. private void RoleTypeClicked(GUIBoundKeyEventArgs args)
  69. {
  70. HeaderClicked(args, Header.RoleType);
  71. }
  72. private void PlaytimeClicked(GUIBoundKeyEventArgs args)
  73. {
  74. HeaderClicked(args, Header.Playtime);
  75. }
  76. protected override void Dispose(bool disposing)
  77. {
  78. base.Dispose(disposing);
  79. if (disposing)
  80. {
  81. UsernameLabel.OnKeyBindDown -= UsernameClicked;
  82. CharacterLabel.OnKeyBindDown -= CharacterClicked;
  83. JobLabel.OnKeyBindDown -= JobClicked;
  84. AntagonistLabel.OnKeyBindDown -= AntagonistClicked;
  85. RoleTypeLabel.OnKeyBindDown -= RoleTypeClicked;
  86. PlaytimeLabel.OnKeyBindDown -= PlaytimeClicked;
  87. }
  88. }
  89. public enum Header
  90. {
  91. Username,
  92. Character,
  93. Job,
  94. Antagonist,
  95. RoleType,
  96. Playtime
  97. }
  98. }