mirror of
https://github.com/ppy/osu.git
synced 2025-02-12 14:02:54 +08:00
Stick the default position of mania judgements directly on the hit target
This commit is contained in:
parent
c18128e974
commit
17e11e9a06
@ -3,67 +3,32 @@
|
|||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Rulesets.Judgements;
|
using osu.Game.Rulesets.Judgements;
|
||||||
using osu.Game.Rulesets.Scoring;
|
using osu.Game.Rulesets.Scoring;
|
||||||
using osuTK;
|
using osu.Game.Rulesets.UI.Scrolling;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Mania.UI
|
namespace osu.Game.Rulesets.Mania.UI
|
||||||
{
|
{
|
||||||
public partial class DrawableManiaJudgement : DrawableJudgement
|
public partial class DrawableManiaJudgement : DrawableJudgement
|
||||||
{
|
{
|
||||||
protected override Drawable CreateDefaultJudgement(HitResult result) => new DefaultManiaJudgementPiece(result);
|
private IBindable<ScrollingDirection> direction;
|
||||||
|
|
||||||
private partial class DefaultManiaJudgementPiece : DefaultJudgementPiece
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(IScrollingInfo scrollingInfo)
|
||||||
{
|
{
|
||||||
private const float judgement_y_position = -180f;
|
direction = scrollingInfo.Direction.GetBoundCopy();
|
||||||
|
direction.BindValueChanged(_ => onDirectionChanged(), true);
|
||||||
public DefaultManiaJudgementPiece(HitResult result)
|
|
||||||
: base(result)
|
|
||||||
{
|
|
||||||
Y = judgement_y_position;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void LoadComplete()
|
|
||||||
{
|
|
||||||
base.LoadComplete();
|
|
||||||
|
|
||||||
JudgementText.Font = JudgementText.Font.With(size: 25);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void PlayAnimation()
|
|
||||||
{
|
|
||||||
switch (Result)
|
|
||||||
{
|
|
||||||
case HitResult.None:
|
|
||||||
this.FadeOutFromOne(800);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HitResult.Miss:
|
|
||||||
this.ScaleTo(1.6f);
|
|
||||||
this.ScaleTo(1, 100, Easing.In);
|
|
||||||
|
|
||||||
this.MoveToY(judgement_y_position);
|
|
||||||
this.MoveToOffset(new Vector2(0, 100), 800, Easing.InQuint);
|
|
||||||
|
|
||||||
this.RotateTo(0);
|
|
||||||
this.RotateTo(40, 800, Easing.InQuint);
|
|
||||||
|
|
||||||
this.FadeOutFromOne(800);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
this.ScaleTo(0.8f);
|
|
||||||
this.ScaleTo(1, 250, Easing.OutElastic);
|
|
||||||
|
|
||||||
this.Delay(50)
|
|
||||||
.ScaleTo(0.75f, 250)
|
|
||||||
.FadeOut(200);
|
|
||||||
|
|
||||||
// osu!mania uses a custom fade length, so the base call is intentionally omitted.
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onDirectionChanged()
|
||||||
|
{
|
||||||
|
Anchor = direction.Value == ScrollingDirection.Up ? Anchor.TopCentre : Anchor.BottomCentre;
|
||||||
|
Origin = Anchor.Centre;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override Drawable CreateDefaultJudgement(HitResult result) => new DefaultManiaJudgementPiece(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -216,13 +216,7 @@ namespace osu.Game.Rulesets.Mania.UI
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
judgements.Clear(false);
|
judgements.Clear(false);
|
||||||
judgements.Add(judgementPooler.Get(result.Type, j =>
|
judgements.Add(judgementPooler.Get(result.Type, j => j.Apply(result, judgedObject))!);
|
||||||
{
|
|
||||||
j.Apply(result, judgedObject);
|
|
||||||
|
|
||||||
j.Anchor = Anchor.BottomCentre;
|
|
||||||
j.Origin = Anchor.Centre;
|
|
||||||
})!);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
|
Loading…
Reference in New Issue
Block a user