Skip to content

Commit 836ba31

Browse files
authored
Merge pull request #472 from LumpBloom7/Touch-Early-windows
Ignore Touch hit attempts before the early Perfect window
2 parents da65944 + c9e757f commit 836ba31

File tree

2 files changed

+13
-18
lines changed

2 files changed

+13
-18
lines changed

osu.Game.Rulesets.Sentakki/Objects/Drawables/DrawableTouch.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public partial class DrawableTouch : DrawableSentakkiHitObject
1919
public override bool HandlePositionalInput => true;
2020

2121
// This HitObject uses a completely different offset
22-
protected override double InitialLifetimeOffset => base.InitialLifetimeOffset + HitObject.HitWindows.WindowFor(HitResult.Ok);
22+
protected override double InitialLifetimeOffset => base.InitialLifetimeOffset + HitObject.HitWindows.WindowFor(HitResult.Great);
2323

2424
// Similar to IsHovered for mouse, this tracks whether a pointer (touch or mouse) is interacting with this drawable
2525
// Interaction == (IsHovered && ActionPressed) || (OnTouch && TouchPointerInBounds)
@@ -80,11 +80,11 @@ protected override void UpdateInitialTransforms()
8080
{
8181
base.UpdateInitialTransforms();
8282
double fadeIn = AdjustedAnimationDuration / 2;
83-
double moveTo = HitObject.HitWindows.WindowFor(HitResult.Ok);
83+
double moveTo = HitObject.HitWindows.WindowFor(HitResult.Great);
8484

8585
TouchBody.FadeIn(fadeIn);
8686

87-
using (BeginDelayedSequence(AdjustedAnimationDuration))
87+
using (BeginAbsoluteSequence(HitObject.StartTime - moveTo))
8888
{
8989
TouchBody.ResizeTo(90, moveTo, Easing.InCirc);
9090
TouchBody.BorderContainer.Delay(moveTo).FadeIn();
@@ -108,11 +108,13 @@ protected override void CheckForResult(bool userTriggered, double timeOffset)
108108

109109
var result = HitObject.HitWindows.ResultFor(timeOffset);
110110

111+
// This is hit before any hit window
111112
if (result == HitResult.None)
112113
return;
113114

114-
if (timeOffset < 0)
115-
result = Result.Judgement.MaxResult;
115+
// Hit before the early Great window
116+
if (timeOffset < 0 && result is not HitResult.Great)
117+
return;
116118

117119
ApplyResult(result);
118120
}

osu.Game.Rulesets.Sentakki/UI/SentakkiHitObjectLifetimeEntry.cs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ namespace osu.Game.Rulesets.Sentakki.UI
88
{
99
public class SentakkiHitObjectLifetimeEntry : HitObjectLifetimeEntry
1010
{
11-
protected override double InitialLifetimeOffset => initialLifetimeOffsetFor(HitObject);
11+
protected override double InitialLifetimeOffset
12+
=> HitObject switch
13+
{
14+
Touch => AdjustedAnimationDuration + HitObject.HitWindows.WindowFor(HitResult.Great),
15+
_ => AdjustedAnimationDuration
16+
};
1217

1318
private readonly DrawableSentakkiRuleset drawableRuleset;
1419

@@ -43,17 +48,5 @@ private void bindAnimationDuration()
4348
break;
4449
}
4550
}
46-
47-
private double initialLifetimeOffsetFor(HitObject hitObject)
48-
{
49-
switch (hitObject)
50-
{
51-
case Touch:
52-
return AdjustedAnimationDuration + HitObject.HitWindows.WindowFor(HitResult.Ok);
53-
54-
default:
55-
return AdjustedAnimationDuration;
56-
}
57-
}
5851
}
5952
}

0 commit comments

Comments
 (0)