1
0

MortarWindow.xaml.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Content.Client._RMC14.UserInterface;
  2. using Content.Client.UserInterface.ControlExtensions;
  3. using Robust.Client.AutoGenerated;
  4. using Robust.Client.UserInterface.Controls;
  5. using Robust.Client.UserInterface.CustomControls;
  6. using Robust.Client.UserInterface.XAML;
  7. using Robust.Shared.Input;
  8. namespace Content.Client._RMC14.Mortar;
  9. [GenerateTypedNameReferences]
  10. public sealed partial class MortarWindow : DefaultWindow
  11. {
  12. public readonly FloatSpinBox TargetX;
  13. public readonly FloatSpinBox TargetY;
  14. public readonly FloatSpinBox DialX;
  15. public readonly FloatSpinBox DialY;
  16. public MortarWindow()
  17. {
  18. RobustXamlLoader.Load(this);
  19. static LineEdit? SpinBoxGetLineEdit(FloatSpinBox box)
  20. {
  21. foreach (var edit in box.GetControlOfType<LineEdit>())
  22. {
  23. return edit;
  24. }
  25. return null;
  26. }
  27. void SpinBoxTab(FloatSpinBox from, FloatSpinBox to)
  28. {
  29. if (SpinBoxGetLineEdit(from) is not { } fromEdit ||
  30. SpinBoxGetLineEdit(to) is not { } toEdit)
  31. {
  32. return;
  33. }
  34. fromEdit.OnKeyBindDown += args =>
  35. {
  36. if (args.Function == EngineKeyFunctions.GuiTabNavigateNext)
  37. toEdit.GrabKeyboardFocus();
  38. };
  39. toEdit.OnKeyBindDown += args =>
  40. {
  41. if (args.Function == EngineKeyFunctions.GuiTabNavigatePrev)
  42. fromEdit.GrabKeyboardFocus();
  43. };
  44. }
  45. TargetX = UIExtensions.CreateDialSpinBox();
  46. TargetXContainer.AddChild(TargetX);
  47. TargetY = UIExtensions.CreateDialSpinBox();
  48. TargetYContainer.AddChild(TargetY);
  49. DialX = UIExtensions.CreateDialSpinBox();
  50. DialXContainer.AddChild(DialX);
  51. DialY = UIExtensions.CreateDialSpinBox();
  52. DialYContainer.AddChild(DialY);
  53. SpinBoxTab(TargetX, TargetY);
  54. SpinBoxTab(TargetY, DialX);
  55. SpinBoxTab(DialX, DialY);
  56. SpinBoxTab(DialY, TargetX);
  57. }
  58. }