using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using FancyWindow = Content.Client.UserInterface.Controls.FancyWindow; using Robust.Client.UserInterface.XAML; using Robust.Shared.Timing; namespace Content.Client.Kitchen.UI { [GenerateTypedNameReferences] public sealed partial class MicrowaveMenu : FancyWindow { public sealed class MicrowaveCookTimeButton : Button { public uint CookTime; } public event Action? OnCookTimeSelected; public ButtonGroup CookTimeButtonGroup { get; } private readonly MicrowaveBoundUserInterface _owner; public MicrowaveMenu(MicrowaveBoundUserInterface owner) { RobustXamlLoader.Load(this); CookTimeButtonGroup = new ButtonGroup(); InstantCookButton.Group = CookTimeButtonGroup; _owner = owner; InstantCookButton.OnPressed += args => { OnCookTimeSelected?.Invoke(args, 0); }; for (var i = 1; i <= 6; i++) { var newButton = new MicrowaveCookTimeButton { Text = (i * 5).ToString(), TextAlign = Label.AlignMode.Center, ToggleMode = true, CookTime = (uint) (i * 5), Group = CookTimeButtonGroup, HorizontalExpand = true, }; if (i == 4) { newButton.StyleClasses.Add("OpenRight"); } else { newButton.StyleClasses.Add("OpenBoth"); } CookTimeButtonVbox.AddChild(newButton); newButton.OnPressed += args => { OnCookTimeSelected?.Invoke(args, i); }; } } public void ToggleBusyDisableOverlayPanel(bool shouldDisable) { DisableCookingPanelOverlay.Visible = shouldDisable; } protected override void FrameUpdate(FrameEventArgs args) { base.FrameUpdate(args); if(!_owner.currentState.IsMicrowaveBusy) return; if(_owner.currentState.CurrentCookTimeEnd > _owner.GetCurrentTime()) { CookTimeInfoLabel.Text = Loc.GetString("microwave-bound-user-interface-cook-time-label", ("time",_owner.currentState.CurrentCookTimeEnd.Subtract(_owner.GetCurrentTime()).Seconds)); } } } }