diff --git a/osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneDrawableTaikoMascot.cs b/osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneDrawableTaikoMascot.cs
index e62841b2c4..8d1aafdcc2 100644
--- a/osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneDrawableTaikoMascot.cs
+++ b/osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneDrawableTaikoMascot.cs
@@ -92,7 +92,7 @@ namespace osu.Game.Rulesets.Taiko.Tests.Skinning
createDrawableRuleset();
assertStateAfterResult(new JudgementResult(new Hit(), new TaikoJudgement()) { Type = HitResult.Great }, TaikoMascotAnimationState.Idle);
- assertStateAfterResult(new JudgementResult(new StrongNestedHitObject(), new TaikoStrongJudgement()) { Type = HitResult.IgnoreMiss }, TaikoMascotAnimationState.Idle);
+ assertStateAfterResult(new JudgementResult(new Hit.StrongNestedHit(), new TaikoStrongJudgement()) { Type = HitResult.IgnoreMiss }, TaikoMascotAnimationState.Idle);
}
[Test]
diff --git a/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs b/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs
index 471e1a7b2f..93f95d6446 100644
--- a/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/DrumRoll.cs
@@ -109,6 +109,12 @@ namespace osu.Game.Rulesets.Taiko.Objects
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
+ protected override StrongNestedHitObject CreateStrongNestedHit(double startTime) => new StrongNestedHit { StartTime = startTime };
+
+ public class StrongNestedHit : StrongNestedHitObject
+ {
+ }
+
#region LegacyBeatmapEncoder
double IHasDistance.Distance => Duration * Velocity;
diff --git a/osu.Game.Rulesets.Taiko/Objects/DrumRollTick.cs b/osu.Game.Rulesets.Taiko/Objects/DrumRollTick.cs
index 5c36a3203c..6b6ffa8668 100644
--- a/osu.Game.Rulesets.Taiko/Objects/DrumRollTick.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/DrumRollTick.cs
@@ -28,5 +28,11 @@ namespace osu.Game.Rulesets.Taiko.Objects
public override Judgement CreateJudgement() => new TaikoDrumRollTickJudgement();
protected override HitWindows CreateHitWindows() => HitWindows.Empty;
+
+ protected override StrongNestedHitObject CreateStrongNestedHit(double startTime) => new StrongNestedHit { StartTime = startTime };
+
+ public class StrongNestedHit : StrongNestedHitObject
+ {
+ }
}
}
diff --git a/osu.Game.Rulesets.Taiko/Objects/Hit.cs b/osu.Game.Rulesets.Taiko/Objects/Hit.cs
index d6385c810d..6bdde376f6 100644
--- a/osu.Game.Rulesets.Taiko/Objects/Hit.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/Hit.cs
@@ -17,5 +17,11 @@ namespace osu.Game.Rulesets.Taiko.Objects
get => TypeBindable.Value;
set => TypeBindable.Value = value;
}
+
+ protected override StrongNestedHitObject CreateStrongNestedHit(double startTime) => new StrongNestedHit { StartTime = startTime };
+
+ public class StrongNestedHit : StrongNestedHitObject
+ {
+ }
}
}
diff --git a/osu.Game.Rulesets.Taiko/Objects/StrongNestedHitObject.cs b/osu.Game.Rulesets.Taiko/Objects/StrongNestedHitObject.cs
index b2def4c6e5..a0b1d3ef9b 100644
--- a/osu.Game.Rulesets.Taiko/Objects/StrongNestedHitObject.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/StrongNestedHitObject.cs
@@ -7,7 +7,7 @@ using osu.Game.Rulesets.Taiko.Judgements;
namespace osu.Game.Rulesets.Taiko.Objects
{
- public class StrongNestedHitObject : TaikoHitObject
+ public abstract class StrongNestedHitObject : TaikoHitObject
{
public override Judgement CreateJudgement() => new TaikoStrongJudgement();
diff --git a/osu.Game.Rulesets.Taiko/Objects/TaikoStrongHitObject.cs b/osu.Game.Rulesets.Taiko/Objects/TaikoStrongHitObject.cs
index a8d00b7681..6a8e33e718 100644
--- a/osu.Game.Rulesets.Taiko/Objects/TaikoStrongHitObject.cs
+++ b/osu.Game.Rulesets.Taiko/Objects/TaikoStrongHitObject.cs
@@ -36,7 +36,14 @@ namespace osu.Game.Rulesets.Taiko.Objects
base.CreateNestedHitObjects(cancellationToken);
if (IsStrong)
- AddNested(new StrongNestedHitObject { StartTime = this.GetEndTime() });
+ AddNested(CreateStrongNestedHit(this.GetEndTime()));
}
+
+ ///
+ /// Creates a representing a second hit on this object.
+ /// This is only called if is true.
+ ///
+ /// The start time of the nested hit.
+ protected abstract StrongNestedHitObject CreateStrongNestedHit(double startTime);
}
}