From c14faef877e2b6ab988c719053b34c05a782d380 Mon Sep 17 00:00:00 2001 From: Derrick Timmermans Date: Sun, 6 Aug 2023 16:12:51 +0200 Subject: [PATCH 1/3] Don't consider touch hits before early Greats --- .../Objects/Drawables/DrawableTouch.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs index 1fa25a0c3..747cf3778 100644 --- a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs +++ b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs @@ -108,11 +108,13 @@ protected override void CheckForResult(bool userTriggered, double timeOffset) var result = HitObject.HitWindows.ResultFor(timeOffset); + // This is hit before any hit window if (result == HitResult.None) return; - if (timeOffset < 0) - result = Result.Judgement.MaxResult; + // Hit before the early Great window + if (timeOffset < 0 && result is not HitResult.Great) + return; ApplyResult(result); } From 6ce2a748e0ecc1babdd192bf5ebd363a62cb5e2c Mon Sep 17 00:00:00 2001 From: Derrick Timmermans Date: Sun, 6 Aug 2023 17:24:16 +0200 Subject: [PATCH 2/3] Lightly adjust Touch entry transforms --- .../Objects/Drawables/DrawableTouch.cs | 4 ++-- .../UI/SentakkiHitObjectLifetimeEntry.cs | 19 ++++++------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs index 747cf3778..7ee31d8aa 100644 --- a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs +++ b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs @@ -80,11 +80,11 @@ protected override void UpdateInitialTransforms() { base.UpdateInitialTransforms(); double fadeIn = AdjustedAnimationDuration / 2; - double moveTo = HitObject.HitWindows.WindowFor(HitResult.Ok); + double moveTo = HitObject.HitWindows.WindowFor(HitResult.Great); TouchBody.FadeIn(fadeIn); - using (BeginDelayedSequence(AdjustedAnimationDuration)) + using (BeginAbsoluteSequence(HitObject.StartTime - moveTo)) { TouchBody.ResizeTo(90, moveTo, Easing.InCirc); TouchBody.BorderContainer.Delay(moveTo).FadeIn(); diff --git a/osu.Game.Rulesets.Sentakki/UI/SentakkiHitObjectLifetimeEntry.cs b/osu.Game.Rulesets.Sentakki/UI/SentakkiHitObjectLifetimeEntry.cs index 64faa4b4f..75e4a57ba 100644 --- a/osu.Game.Rulesets.Sentakki/UI/SentakkiHitObjectLifetimeEntry.cs +++ b/osu.Game.Rulesets.Sentakki/UI/SentakkiHitObjectLifetimeEntry.cs @@ -8,7 +8,12 @@ namespace osu.Game.Rulesets.Sentakki.UI { public class SentakkiHitObjectLifetimeEntry : HitObjectLifetimeEntry { - protected override double InitialLifetimeOffset => initialLifetimeOffsetFor(HitObject); + protected override double InitialLifetimeOffset + => HitObject switch + { + Touch => AdjustedAnimationDuration + HitObject.HitWindows.WindowFor(HitResult.Great), + _ => AdjustedAnimationDuration + }; private readonly DrawableSentakkiRuleset drawableRuleset; @@ -43,17 +48,5 @@ private void bindAnimationDuration() break; } } - - private double initialLifetimeOffsetFor(HitObject hitObject) - { - switch (hitObject) - { - case Touch: - return AdjustedAnimationDuration + HitObject.HitWindows.WindowFor(HitResult.Ok); - - default: - return AdjustedAnimationDuration; - } - } } } From c9e757f282b1fe3d376dac43ca901cb3f2f22168 Mon Sep 17 00:00:00 2001 From: Derrick Timmermans Date: Sun, 6 Aug 2023 21:00:52 +0200 Subject: [PATCH 3/3] Fix fade transforms not starting correctly --- osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs index 7ee31d8aa..0268fa3d8 100644 --- a/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs +++ b/osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs @@ -19,7 +19,7 @@ public partial class DrawableTouch : DrawableSentakkiHitObject public override bool HandlePositionalInput => true; // This HitObject uses a completely different offset - protected override double InitialLifetimeOffset => base.InitialLifetimeOffset + HitObject.HitWindows.WindowFor(HitResult.Ok); + protected override double InitialLifetimeOffset => base.InitialLifetimeOffset + HitObject.HitWindows.WindowFor(HitResult.Great); // Similar to IsHovered for mouse, this tracks whether a pointer (touch or mouse) is interacting with this drawable // Interaction == (IsHovered && ActionPressed) || (OnTouch && TouchPointerInBounds)