using Content.Shared.CCVar; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; using Robust.Shared.Configuration; using Robust.Shared.Timing; using Robust.Shared.Utility; namespace Content.Client.UserInterface.Systems.Ghost.Controls.Roles { [GenerateTypedNameReferences] public sealed partial class GhostRoleRulesWindow : DefaultWindow { [Dependency] private readonly IConfigurationManager _cfg = IoCManager.Resolve(); private float _timer; public GhostRoleRulesWindow(string rules, Action requestAction) { RobustXamlLoader.Load(this); var ghostRoleTime = _cfg.GetCVar(CCVars.GhostRoleTime); _timer = ghostRoleTime; if (ghostRoleTime > 0f) { RequestButton.Text = Loc.GetString("ghost-roles-window-request-role-button-timer", ("time", $"{_timer:0.0}")); TopBanner.SetMessage(FormattedMessage.FromMarkupPermissive(rules + "\n" + Loc.GetString("ghost-roles-window-rules-footer", ("time", ghostRoleTime)))); RequestButton.Disabled = true; } RequestButton.OnPressed += requestAction; } protected override void FrameUpdate(FrameEventArgs args) { base.FrameUpdate(args); if (!RequestButton.Disabled) return; if (_timer > 0.0) { _timer -= args.DeltaSeconds; RequestButton.Text = Loc.GetString("ghost-roles-window-request-role-button-timer", ("time", $"{_timer:0.0}")); } else { RequestButton.Disabled = false; RequestButton.Text = Loc.GetString("ghost-roles-window-request-role-button"); } } } }