Move hit animation logic into virtual method

This commit is contained in:
David Zhao
2019-03-12 19:41:33 +09:00
parent 9850122245
commit 3b3b1e51ee
2 changed files with 19 additions and 23 deletions

View File

@ -32,14 +32,12 @@ namespace osu.Game.Rulesets.Judgements
protected Container JudgementBody;
protected SpriteText JudgementText;
/// <summary>
/// The amount of time for this judgement to initially fade in.
/// </summary>
/// <remarks> Override this to change fade in times of mode-specific judgements </remarks>
protected virtual double FadeInDuration => 100;
protected virtual float InitialHitScale => 0.9f;
protected virtual float HitScaleDuration => 500;
protected virtual double HitFadeOutDuration => 400;
/// <summary>
/// Creates a drawable which visualises a <see cref="Judgements.Judgement"/>.
/// </summary>
@ -73,7 +71,13 @@ namespace osu.Game.Rulesets.Judgements
};
}
private const double MISS_ANIMATION_DURATION = 800;
protected virtual void ApplyHitAnimations()
{
JudgementBody.ScaleTo(0.9f);
JudgementBody.ScaleTo(1, 500, Easing.OutElastic);
this.Delay(FadeInDuration).FadeOut(400);
}
protected override void LoadComplete()
{
@ -89,16 +93,13 @@ namespace osu.Game.Rulesets.Judgements
JudgementBody.ScaleTo(1.6f);
JudgementBody.ScaleTo(1, FadeInDuration, Easing.In);
JudgementBody.MoveToOffset(new Vector2(0, 100), MISS_ANIMATION_DURATION, Easing.InQuint);
JudgementBody.RotateTo(40, MISS_ANIMATION_DURATION, Easing.InQuint);
JudgementBody.MoveToOffset(new Vector2(0, 100), 800, Easing.InQuint);
JudgementBody.RotateTo(40, 800, Easing.InQuint);
this.Delay(600).FadeOut(200);
break;
default:
JudgementBody.ScaleTo(InitialHitScale);
JudgementBody.ScaleTo(1, HitScaleDuration, Easing.OutElastic);
this.Delay(FadeInDuration).FadeOut(HitFadeOutDuration);
ApplyHitAnimations();
break;
}