diff --git a/osu.Game.Rulesets.Mania/UI/DrawableManiaJudgement.cs b/osu.Game.Rulesets.Mania/UI/DrawableManiaJudgement.cs
index 34d972e60f..8581f016b1 100644
--- a/osu.Game.Rulesets.Mania/UI/DrawableManiaJudgement.cs
+++ b/osu.Game.Rulesets.Mania/UI/DrawableManiaJudgement.cs
@@ -37,12 +37,11 @@ namespace osu.Game.Rulesets.Mania.UI
public override void PlayAnimation()
{
- base.PlayAnimation();
-
switch (Result)
{
case HitResult.None:
case HitResult.Miss:
+ base.PlayAnimation();
break;
default:
@@ -52,6 +51,8 @@ namespace osu.Game.Rulesets.Mania.UI
this.Delay(50)
.ScaleTo(0.75f, 250)
.FadeOut(200);
+
+ // osu!mania uses a custom fade length, so the base call is intentionally omitted.
break;
}
}
diff --git a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs
index b23087a1f3..e4df41a4fe 100644
--- a/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs
+++ b/osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuJudgement.cs
@@ -74,10 +74,14 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
public override void PlayAnimation()
{
- base.PlayAnimation();
-
if (Result != HitResult.Miss)
- JudgementText.ScaleTo(new Vector2(0.8f, 1)).Then().ScaleTo(new Vector2(1.2f, 1), 1800, Easing.OutQuint);
+ {
+ JudgementText
+ .ScaleTo(new Vector2(0.8f, 1))
+ .ScaleTo(new Vector2(1.2f, 1), 1800, Easing.OutQuint);
+ }
+
+ base.PlayAnimation();
}
}
}
diff --git a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs
index 1ad1e4495c..876fa207bf 100644
--- a/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs
+++ b/osu.Game.Rulesets.Taiko/UI/DrawableTaikoJudgement.cs
@@ -3,6 +3,7 @@
using osu.Framework.Graphics;
using osu.Game.Rulesets.Judgements;
+using osu.Game.Rulesets.Scoring;
namespace osu.Game.Rulesets.Taiko.UI
{
@@ -16,5 +17,26 @@ namespace osu.Game.Rulesets.Taiko.UI
this.MoveToY(-100, 500);
base.ApplyHitAnimations();
}
+
+ protected override Drawable CreateDefaultJudgement(HitResult result) => new TaikoJudgementPiece(result);
+
+ private class TaikoJudgementPiece : DefaultJudgementPiece
+ {
+ public TaikoJudgementPiece(HitResult result)
+ : base(result)
+ {
+ }
+
+ public override void PlayAnimation()
+ {
+ if (Result != HitResult.Miss)
+ {
+ JudgementText.ScaleTo(0.9f);
+ JudgementText.ScaleTo(1, 500, Easing.OutElastic);
+ }
+
+ base.PlayAnimation();
+ }
+ }
}
}
diff --git a/osu.Game/Rulesets/Judgements/DefaultJudgementPiece.cs b/osu.Game/Rulesets/Judgements/DefaultJudgementPiece.cs
index 21ac017685..29b771a81d 100644
--- a/osu.Game/Rulesets/Judgements/DefaultJudgementPiece.cs
+++ b/osu.Game/Rulesets/Judgements/DefaultJudgementPiece.cs
@@ -47,6 +47,13 @@ namespace osu.Game.Rulesets.Judgements
};
}
+ ///
+ /// Plays the default animation for this judgement piece.
+ ///
+ ///
+ /// The base implementation only handles fade (for all result types) and misses.
+ /// Individual rulesets are recommended to implement their appropriate hit animations.
+ ///
public virtual void PlayAnimation()
{
switch (Result)
@@ -60,12 +67,6 @@ namespace osu.Game.Rulesets.Judgements
this.RotateTo(0);
this.RotateTo(40, 800, Easing.InQuint);
-
- break;
-
- default:
- this.ScaleTo(0.9f);
- this.ScaleTo(1, 500, Easing.OutElastic);
break;
}