Fix DragDropHelper not respecting the control.drag_dead_zone cvar (#24166)

Fix regression with the drag_dead_zone cvar not being used
This commit is contained in:
Kot
2024-01-17 02:35:48 +04:00
committed by GitHub
parent 294c4bb3ce
commit ef70629702

View File

@@ -1,4 +1,6 @@
using Robust.Client.Input; using Content.Shared.CCVar;
using Robust.Client.Input;
using Robust.Shared.Configuration;
using Robust.Shared.Map; using Robust.Shared.Map;
namespace Content.Client.Interaction; namespace Content.Client.Interaction;
@@ -20,12 +22,13 @@ namespace Content.Client.Interaction;
/// <typeparam name="T">thing being dragged and dropped</typeparam> /// <typeparam name="T">thing being dragged and dropped</typeparam>
public sealed class DragDropHelper<T> public sealed class DragDropHelper<T>
{ {
private readonly IInputManager _inputManager; [Dependency] private readonly IInputManager _inputManager = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
private readonly OnBeginDrag _onBeginDrag; private readonly OnBeginDrag _onBeginDrag;
private readonly OnEndDrag _onEndDrag; private readonly OnEndDrag _onEndDrag;
private readonly OnContinueDrag _onContinueDrag; private readonly OnContinueDrag _onContinueDrag;
public float Deadzone = 2f; private float _deadzone;
/// <summary> /// <summary>
/// Convenience method, current mouse screen position as provided by inputmanager. /// Convenience method, current mouse screen position as provided by inputmanager.
@@ -63,10 +66,16 @@ public sealed class DragDropHelper<T>
/// <param name="onEndDrag"><see cref="OnEndDrag"/></param> /// <param name="onEndDrag"><see cref="OnEndDrag"/></param>
public DragDropHelper(OnBeginDrag onBeginDrag, OnContinueDrag onContinueDrag, OnEndDrag onEndDrag) public DragDropHelper(OnBeginDrag onBeginDrag, OnContinueDrag onContinueDrag, OnEndDrag onEndDrag)
{ {
_inputManager = IoCManager.Resolve<IInputManager>(); IoCManager.InjectDependencies(this);
_onBeginDrag = onBeginDrag; _onBeginDrag = onBeginDrag;
_onEndDrag = onEndDrag; _onEndDrag = onEndDrag;
_onContinueDrag = onContinueDrag; _onContinueDrag = onContinueDrag;
_cfg.OnValueChanged(CCVars.DragDropDeadZone, SetDeadZone, true);
}
~DragDropHelper()
{
_cfg.UnsubValueChanged(CCVars.DragDropDeadZone, SetDeadZone);
} }
/// <summary> /// <summary>
@@ -121,7 +130,7 @@ public sealed class DragDropHelper<T>
case DragState.MouseDown: case DragState.MouseDown:
{ {
var screenPos = _inputManager.MouseScreenPosition; var screenPos = _inputManager.MouseScreenPosition;
if ((_mouseDownScreenPos.Position - screenPos.Position).Length() > Deadzone) if ((_mouseDownScreenPos.Position - screenPos.Position).Length() > _deadzone)
{ {
StartDragging(); StartDragging();
} }
@@ -139,6 +148,11 @@ public sealed class DragDropHelper<T>
} }
} }
} }
private void SetDeadZone(float value)
{
_deadzone = value;
}
} }
/// <summary> /// <summary>