GhostRoleRulesWindow.xaml.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using Content.Shared.CCVar;
  2. using Robust.Client.AutoGenerated;
  3. using Robust.Client.UserInterface.Controls;
  4. using Robust.Client.UserInterface.CustomControls;
  5. using Robust.Client.UserInterface.XAML;
  6. using Robust.Shared.Configuration;
  7. using Robust.Shared.Timing;
  8. using Robust.Shared.Utility;
  9. namespace Content.Client.UserInterface.Systems.Ghost.Controls.Roles
  10. {
  11. [GenerateTypedNameReferences]
  12. public sealed partial class GhostRoleRulesWindow : DefaultWindow
  13. {
  14. [Dependency] private readonly IConfigurationManager _cfg = IoCManager.Resolve<IConfigurationManager>();
  15. private float _timer;
  16. public GhostRoleRulesWindow(string rules, Action<BaseButton.ButtonEventArgs> requestAction)
  17. {
  18. RobustXamlLoader.Load(this);
  19. var ghostRoleTime = _cfg.GetCVar(CCVars.GhostRoleTime);
  20. _timer = ghostRoleTime;
  21. if (ghostRoleTime > 0f)
  22. {
  23. RequestButton.Text = Loc.GetString("ghost-roles-window-request-role-button-timer", ("time", $"{_timer:0.0}"));
  24. TopBanner.SetMessage(FormattedMessage.FromMarkupPermissive(rules + "\n" + Loc.GetString("ghost-roles-window-rules-footer", ("time", ghostRoleTime))));
  25. RequestButton.Disabled = true;
  26. }
  27. RequestButton.OnPressed += requestAction;
  28. }
  29. protected override void FrameUpdate(FrameEventArgs args)
  30. {
  31. base.FrameUpdate(args);
  32. if (!RequestButton.Disabled) return;
  33. if (_timer > 0.0)
  34. {
  35. _timer -= args.DeltaSeconds;
  36. RequestButton.Text = Loc.GetString("ghost-roles-window-request-role-button-timer", ("time", $"{_timer:0.0}"));
  37. }
  38. else
  39. {
  40. RequestButton.Disabled = false;
  41. RequestButton.Text = Loc.GetString("ghost-roles-window-request-role-button");
  42. }
  43. }
  44. }
  45. }