diff --git a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs index 14c7a4add..d2b5edaa2 100644 --- a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs +++ b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs @@ -43,7 +43,7 @@ private void load() if (DrawableSentakkiRuleset is not null) AnimationDuration.BindTo(DrawableSentakkiRuleset?.AdjustedTouchAnimDuration); - Size = new Vector2(100); + Size = new Vector2(130); Origin = Anchor.Centre; Anchor = Anchor.Centre; AddRangeInternal(new Drawable[] diff --git a/osu.Game.Rulesets.Sentakki/Objects/Drawables/Pieces/TouchHolds/TouchHoldBody.cs b/osu.Game.Rulesets.Sentakki/Objects/Drawables/Pieces/TouchHolds/TouchHoldBody.cs index 79d313c87..ec423dd8e 100644 --- a/osu.Game.Rulesets.Sentakki/Objects/Drawables/Pieces/TouchHolds/TouchHoldBody.cs +++ b/osu.Game.Rulesets.Sentakki/Objects/Drawables/Pieces/TouchHolds/TouchHoldBody.cs @@ -13,7 +13,7 @@ public partial class TouchHoldBody : CircularContainer public readonly TouchHoldProgressPiece ProgressPiece; private readonly TouchHoldCentrePiece centrePiece; - public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => centrePiece.ReceivePositionalInputAt(screenSpacePos); + public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => ProgressPiece.ReceivePositionalInputAt(screenSpacePos); public TouchHoldBody() { diff --git a/osu.Game.Rulesets.Sentakki/UI/Lane.cs b/osu.Game.Rulesets.Sentakki/UI/Lane.cs index f935ce996..c24dae8c8 100644 --- a/osu.Game.Rulesets.Sentakki/UI/Lane.cs +++ b/osu.Game.Rulesets.Sentakki/UI/Lane.cs @@ -65,9 +65,12 @@ private void load() #region Input Handling - private const float receptor_angle_range = 45 * 1.4f; + private const float receptor_angle_range = 45; private const float receptor_angle_range_mid = receptor_angle_range / 2; + private const float receptor_angle_range_inner = receptor_angle_range * 1.4f; + private const float receptor_angle_range_inner_mid = receptor_angle_range_inner / 2; + private SentakkiInputManager sentakkiActionInputManager = null!; internal SentakkiInputManager SentakkiActionInputManager => sentakkiActionInputManager ??= (SentakkiInputManager)GetContainingInputManager(); @@ -78,10 +81,12 @@ public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) var localPos = ToLocalSpace(screenSpacePos); float distance = Vector2.DistanceSquared(Vector2.Zero, localPos); - if (distance is < (200 * 200) or > (400 * 400)) return false; + if (distance is < (200 * 200) or > (600 * 600)) return false; + + float targetAngleRangeMid = distance > 400 ? receptor_angle_range_mid : receptor_angle_range_inner_mid; float angleDelta = SentakkiExtensions.GetDeltaAngle(0, Vector2.Zero.GetDegreesFromPosition(localPos)); - if (Math.Abs(angleDelta) > receptor_angle_range_mid) return false; + if (Math.Abs(angleDelta) > targetAngleRangeMid) return false; return true; } diff --git a/osu.Game.Rulesets.Sentakki/UI/TouchPlayfield.cs b/osu.Game.Rulesets.Sentakki/UI/TouchPlayfield.cs index a7976b44b..8349b4b60 100644 --- a/osu.Game.Rulesets.Sentakki/UI/TouchPlayfield.cs +++ b/osu.Game.Rulesets.Sentakki/UI/TouchPlayfield.cs @@ -73,8 +73,6 @@ protected override void Update() private void handlePointInput(int pointID, bool hasAction, Vector2? pointerPosition) { - bool continueEventPropogation = true; - foreach (DrawableTouch touch in aliveTouchNotes) { if (hasAction && touch.ReceivePositionalInputAt(pointerPosition!.Value)) @@ -82,8 +80,7 @@ private void handlePointInput(int pointID, bool hasAction, Vector2? pointerPosit if (!touch.PointInteractionState[pointID]) { touch.PointInteractionState[pointID] = true; - if (continueEventPropogation) - continueEventPropogation = !touch.OnNewPointInteraction(); + touch.OnNewPointInteraction(); } } else