using Content.Client._RMC14.UserInterface; using Content.Client.UserInterface.ControlExtensions; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.XAML; using Robust.Shared.Input; namespace Content.Client._RMC14.Mortar; [GenerateTypedNameReferences] public sealed partial class MortarWindow : DefaultWindow { public readonly FloatSpinBox TargetX; public readonly FloatSpinBox TargetY; public readonly FloatSpinBox DialX; public readonly FloatSpinBox DialY; public MortarWindow() { RobustXamlLoader.Load(this); static LineEdit? SpinBoxGetLineEdit(FloatSpinBox box) { foreach (var edit in box.GetControlOfType()) { return edit; } return null; } void SpinBoxTab(FloatSpinBox from, FloatSpinBox to) { if (SpinBoxGetLineEdit(from) is not { } fromEdit || SpinBoxGetLineEdit(to) is not { } toEdit) { return; } fromEdit.OnKeyBindDown += args => { if (args.Function == EngineKeyFunctions.GuiTabNavigateNext) toEdit.GrabKeyboardFocus(); }; toEdit.OnKeyBindDown += args => { if (args.Function == EngineKeyFunctions.GuiTabNavigatePrev) fromEdit.GrabKeyboardFocus(); }; } TargetX = UIExtensions.CreateDialSpinBox(); TargetXContainer.AddChild(TargetX); TargetY = UIExtensions.CreateDialSpinBox(); TargetYContainer.AddChild(TargetY); DialX = UIExtensions.CreateDialSpinBox(); DialXContainer.AddChild(DialX); DialY = UIExtensions.CreateDialSpinBox(); DialYContainer.AddChild(DialY); SpinBoxTab(TargetX, TargetY); SpinBoxTab(TargetY, DialX); SpinBoxTab(DialX, DialY); SpinBoxTab(DialY, TargetX); } }