Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / debugger / DebuggerPanel.cs
@小李xl 小李xl on 11 Oct 2023 2 KB 拖动日志悬浮窗
  1. using Godot;
  2.  
  3. namespace UI.Debugger;
  4.  
  5. public partial class DebuggerPanel : Debugger
  6. {
  7. private bool _showPanel = false;
  8. private int _len = 0;
  9. private bool _isDown = false;
  10. private Vector2 _offset;
  11. private Vector2 _prevPos;
  12. private bool _moveFlag;
  13. public override void OnCreateUi()
  14. {
  15. S_Bg.Instance.Visible = false;
  16. S_HoverButton.Instance.Pressed += OnClickHoverButton;
  17. S_HoverButton.Instance.ButtonDown += OnMouseDown;
  18. S_HoverButton.Instance.ButtonUp += OnMouseUp;
  19. S_Clear.Instance.Pressed += OnClear;
  20. S_Close.Instance.Pressed += OnClose;
  21. }
  22.  
  23. public override void OnDestroyUi()
  24. {
  25. }
  26.  
  27. public override void Process(float delta)
  28. {
  29. if (_showPanel)
  30. {
  31. if (Debug.AllLogMessage.Length != _len)
  32. {
  33. S_Label.Instance.Text = Debug.AllLogMessage;
  34. _len = Debug.AllLogMessage.Length;
  35. }
  36. }
  37. else
  38. {
  39. if (_isDown)
  40. {
  41. var temp = GetGlobalMousePosition() - _offset;
  42. if (temp != _prevPos)
  43. {
  44. _moveFlag = true;
  45. _prevPos = temp;
  46. S_HoverButton.Instance.GlobalPosition = temp;
  47. }
  48. }
  49. }
  50. }
  51.  
  52. private void OnMouseDown()
  53. {
  54. _isDown = true;
  55. _moveFlag = false;
  56. _prevPos = S_HoverButton.Instance.GlobalPosition;
  57. _offset = GetGlobalMousePosition() - _prevPos;
  58. }
  59. private void OnMouseUp()
  60. {
  61. _isDown = false;
  62. }
  63. private void OnClickHoverButton()
  64. {
  65. if (_moveFlag)
  66. {
  67. return;
  68. }
  69. _showPanel = true;
  70. S_Bg.Instance.Visible = _showPanel;
  71. S_HoverButton.Instance.Visible = false;
  72. }
  73.  
  74. private void OnClear()
  75. {
  76. Debug.Clear();
  77. S_Label.Instance.Text = "";
  78. _len = 0;
  79. }
  80.  
  81. private void OnClose()
  82. {
  83. _showPanel = false;
  84. S_Bg.Instance.Visible = _showPanel;
  85. S_HoverButton.Instance.Visible = true;
  86. }
  87. }