1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-27 11:03:22 +08:00

Fix judgement animations not resetting on use

This commit is contained in:
smoogipoo 2020-07-13 20:12:50 +09:00
parent dfcb73131d
commit 8a3cadc111
3 changed files with 15 additions and 3 deletions

View File

@ -62,6 +62,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
if (lighting != null) if (lighting != null)
{ {
lighting.ResetAnimation();
if (JudgedObject != null) if (JudgedObject != null)
{ {
lightingColour = JudgedObject.AccentColour.GetBoundCopy(); lightingColour = JudgedObject.AccentColour.GetBoundCopy();

View File

@ -31,8 +31,10 @@ namespace osu.Game.Rulesets.Judgements
public JudgementResult Result { get; private set; } public JudgementResult Result { get; private set; }
public DrawableHitObject JudgedObject { get; private set; } public DrawableHitObject JudgedObject { get; private set; }
protected Container JudgementBody; protected Container JudgementBody { get; private set; }
protected SpriteText JudgementText; protected SpriteText JudgementText { get; private set; }
private SkinnableDrawable bodyDrawable;
/// <summary> /// <summary>
/// Duration of initial fade in. /// Duration of initial fade in.
@ -89,6 +91,8 @@ namespace osu.Game.Rulesets.Judgements
prepareDrawables(); prepareDrawables();
bodyDrawable.ResetAnimation();
this.FadeInFromZero(FadeInDuration, Easing.OutQuint); this.FadeInFromZero(FadeInDuration, Easing.OutQuint);
JudgementBody.ScaleTo(1); JudgementBody.ScaleTo(1);
JudgementBody.RotateTo(0); JudgementBody.RotateTo(0);
@ -131,7 +135,7 @@ namespace osu.Game.Rulesets.Judgements
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
Child = new SkinnableDrawable(new GameplaySkinComponent<HitResult>(type), _ => JudgementText = new OsuSpriteText Child = bodyDrawable = new SkinnableDrawable(new GameplaySkinComponent<HitResult>(type), _ => JudgementText = new OsuSpriteText
{ {
Text = type.GetDescription().ToUpperInvariant(), Text = type.GetDescription().ToUpperInvariant(),
Font = OsuFont.Numeric.With(size: 20), Font = OsuFont.Numeric.With(size: 20),

View File

@ -4,6 +4,7 @@
using System; using System;
using osu.Framework.Caching; using osu.Framework.Caching;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Animations;
using osuTK; using osuTK;
namespace osu.Game.Skinning namespace osu.Game.Skinning
@ -50,6 +51,11 @@ namespace osu.Game.Skinning
RelativeSizeAxes = Axes.Both; RelativeSizeAxes = Axes.Both;
} }
/// <summary>
/// Seeks to the 0-th frame if the content of this <see cref="SkinnableDrawable"/> is an <see cref="IFramedAnimation"/>.
/// </summary>
public void ResetAnimation() => (Drawable as IFramedAnimation)?.GotoFrame(0);
private readonly Func<ISkinComponent, Drawable> createDefault; private readonly Func<ISkinComponent, Drawable> createDefault;
private readonly Cached scaling = new Cached(); private readonly Cached scaling = new Cached();