mirror of
https://github.com/ppy/osu.git
synced 2025-02-21 22:53:22 +08:00
further adjust swell behavior
The outstanding visual issues of the clear animation is fixed. The HandleUserInput state management is removed as it no longer seems necessary.
This commit is contained in:
parent
a62a84a30f
commit
e794389fe8
@ -158,21 +158,19 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
|
||||
|
||||
protected override void UpdateHitStateTransforms(ArmedState state)
|
||||
{
|
||||
base.UpdateHitStateTransforms(state);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case ArmedState.Idle:
|
||||
// Only for rewind support. Reallows user inputs if swell is rewound from being hit/missed to being idle.
|
||||
HandleUserInput = true;
|
||||
break;
|
||||
|
||||
case ArmedState.Miss:
|
||||
this.Delay(300).FadeOut();
|
||||
break;
|
||||
|
||||
case ArmedState.Hit:
|
||||
const int clear_animation_duration = 1200;
|
||||
|
||||
// Postpone drawable hitobject expiration until it has animated/faded out. Inputs on the object are disallowed during this delay.
|
||||
LifetimeEnd = Time.Current + clear_animation_duration;
|
||||
HandleUserInput = false;
|
||||
|
||||
this.Delay(660).FadeOut();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -41,64 +41,63 @@ namespace osu.Game.Rulesets.Taiko.Skinning.Legacy
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(DrawableHitObject hitObject, ISkinSource skin, SkinManager skinManager)
|
||||
{
|
||||
var spinnerCircleProvider = skin.FindProvider(s => s.GetTexture("spinner-circle") != null);
|
||||
|
||||
Child = new Container
|
||||
Children = new Drawable[]
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
|
||||
Children = new Drawable[]
|
||||
warning = new Sprite
|
||||
{
|
||||
warning = new Sprite
|
||||
{
|
||||
Texture = skin.GetTexture("spinner-warning"),
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Scale = skin.GetTexture("spinner-warning") != null ? Vector2.One : new Vector2(0.18f),
|
||||
},
|
||||
bodyContainer = new Container
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Position = new Vector2(200f, 100f),
|
||||
Alpha = 0,
|
||||
Texture = skin.GetTexture("spinner-warning"),
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Scale = skin.GetTexture("spinner-warning") != null ? Vector2.One : new Vector2(0.18f),
|
||||
},
|
||||
new Container
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Position = new Vector2(200f, 100f),
|
||||
|
||||
Children = new Drawable[]
|
||||
Children = new Drawable[]
|
||||
{
|
||||
bodyContainer = new Container
|
||||
{
|
||||
spinnerCircle = new Sprite
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Alpha = 0,
|
||||
|
||||
Children = new Drawable[]
|
||||
{
|
||||
Texture = skin.GetTexture("spinner-circle"),
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Scale = new Vector2(0.8f),
|
||||
},
|
||||
approachCircle = new Sprite
|
||||
{
|
||||
Texture = skin.GetTexture("spinner-approachcircle"),
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Scale = new Vector2(1.86f * 0.8f),
|
||||
},
|
||||
remainingHitsText = new LegacySpriteText(LegacyFont.Combo)
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Position = new Vector2(0f, 165f),
|
||||
Scale = Vector2.One,
|
||||
},
|
||||
clearAnimation = new Sprite
|
||||
{
|
||||
Texture = skin.GetTexture("spinner-osu"),
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Position = new Vector2(0f, -165f),
|
||||
Scale = new Vector2(0.3f),
|
||||
Alpha = 0,
|
||||
},
|
||||
}
|
||||
spinnerCircle = new Sprite
|
||||
{
|
||||
Texture = skin.GetTexture("spinner-circle"),
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Scale = new Vector2(0.8f),
|
||||
},
|
||||
approachCircle = new Sprite
|
||||
{
|
||||
Texture = skin.GetTexture("spinner-approachcircle"),
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Scale = new Vector2(1.86f * 0.8f),
|
||||
},
|
||||
remainingHitsText = new LegacySpriteText(LegacyFont.Combo)
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Position = new Vector2(0f, 165f),
|
||||
Scale = Vector2.One,
|
||||
},
|
||||
}
|
||||
},
|
||||
clearAnimation = new Sprite
|
||||
{
|
||||
Texture = skin.GetTexture("spinner-osu"),
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.Centre,
|
||||
Alpha = 0,
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
drawableSwell = (DrawableSwell)hitObject;
|
||||
@ -110,7 +109,7 @@ namespace osu.Game.Rulesets.Taiko.Skinning.Legacy
|
||||
private void animateSwellProgress(int numHits, int requiredHits)
|
||||
{
|
||||
remainingHitsText.Text = $"{requiredHits - numHits}";
|
||||
remainingHitsText.ScaleTo(1.6f - 0.6f * ((float)numHits / requiredHits), 60, Easing.OutQuad);
|
||||
remainingHitsText.ScaleTo(1.6f - (0.6f * ((float)numHits / requiredHits)), 60, Easing.OutQuad);
|
||||
|
||||
spinnerCircle.ClearTransforms();
|
||||
spinnerCircle
|
||||
@ -160,9 +159,9 @@ namespace osu.Game.Rulesets.Taiko.Skinning.Legacy
|
||||
|
||||
clearAnimation
|
||||
.FadeIn(clear_fade_in)
|
||||
.MoveTo(new Vector2(320, 240))
|
||||
.MoveTo(new Vector2(0, 0))
|
||||
.ScaleTo(0.4f)
|
||||
.MoveTo(new Vector2(320, 150), clear_fade_in * 2, Easing.OutQuad)
|
||||
.MoveTo(new Vector2(0, -90), clear_fade_in * 2, Easing.OutQuad)
|
||||
.ScaleTo(1f, clear_fade_in * 2, Easing.Out)
|
||||
.Delay(clear_fade_in * 3)
|
||||
.FadeOut(clear_fade_in * 2.5);
|
||||
|
Loading…
Reference in New Issue
Block a user