1
0

FancyWindow.xaml.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System.Numerics;
  2. using Content.Client.Guidebook;
  3. using Content.Client.Guidebook.Components;
  4. using Content.Shared.Guidebook;
  5. using Robust.Client.AutoGenerated;
  6. using Robust.Client.UserInterface.CustomControls;
  7. using Robust.Client.UserInterface.XAML;
  8. using Robust.Shared.Prototypes;
  9. namespace Content.Client.UserInterface.Controls
  10. {
  11. [GenerateTypedNameReferences]
  12. [Virtual]
  13. public partial class FancyWindow : BaseWindow
  14. {
  15. [Dependency] private readonly IEntitySystemManager _sysMan = default!;
  16. private GuidebookSystem? _guidebookSystem;
  17. private const int DRAG_MARGIN_SIZE = 7;
  18. public const string StyleClassWindowHelpButton = "windowHelpButton";
  19. public FancyWindow()
  20. {
  21. RobustXamlLoader.Load(this);
  22. CloseButton.OnPressed += _ => Close();
  23. HelpButton.OnPressed += _ => Help();
  24. XamlChildren = ContentsContainer.Children;
  25. }
  26. public string? Title
  27. {
  28. get => WindowTitle.Text;
  29. set => WindowTitle.Text = value;
  30. }
  31. private List<ProtoId<GuideEntryPrototype>>? _helpGuidebookIds;
  32. public List<ProtoId<GuideEntryPrototype>>? HelpGuidebookIds
  33. {
  34. get => _helpGuidebookIds;
  35. set
  36. {
  37. _helpGuidebookIds = value;
  38. HelpButton.Disabled = _helpGuidebookIds == null;
  39. HelpButton.Visible = !HelpButton.Disabled;
  40. }
  41. }
  42. public void Help()
  43. {
  44. if (HelpGuidebookIds is null)
  45. return;
  46. _guidebookSystem ??= _sysMan.GetEntitySystem<GuidebookSystem>();
  47. _guidebookSystem.OpenHelp(HelpGuidebookIds);
  48. }
  49. protected override DragMode GetDragModeFor(Vector2 relativeMousePos)
  50. {
  51. var mode = DragMode.Move;
  52. if (Resizable)
  53. {
  54. if (relativeMousePos.Y < DRAG_MARGIN_SIZE)
  55. {
  56. mode = DragMode.Top;
  57. }
  58. else if (relativeMousePos.Y > Size.Y - DRAG_MARGIN_SIZE)
  59. {
  60. mode = DragMode.Bottom;
  61. }
  62. if (relativeMousePos.X < DRAG_MARGIN_SIZE)
  63. {
  64. mode |= DragMode.Left;
  65. }
  66. else if (relativeMousePos.X > Size.X - DRAG_MARGIN_SIZE)
  67. {
  68. mode |= DragMode.Right;
  69. }
  70. }
  71. return mode;
  72. }
  73. }
  74. }