mirror of
https://github.com/osukey/osukey.git
synced 2025-05-12 17:17:31 +09:00
fix circles and slider sequences
+ minor cleanup
This commit is contained in:
parent
4c2554595e
commit
7d29c076d2
@ -48,7 +48,6 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
if (!(drawable is DrawableOsuHitObject d))
|
if (!(drawable is DrawableOsuHitObject d))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//var duration = (d.HitObject as IHasEndTime)?.Duration ?? 0;
|
|
||||||
var fadeInTime = d.HitObject.StartTime - preEmpt;
|
var fadeInTime = d.HitObject.StartTime - preEmpt;
|
||||||
var fadeIn = d.HitObject.StartTime - preEmpt * fade_in_speed_multiplier - fadeInTime;
|
var fadeIn = d.HitObject.StartTime - preEmpt * fade_in_speed_multiplier - fadeInTime;
|
||||||
var fadeOutTime = fadeInTime + fadeIn;
|
var fadeOutTime = fadeInTime + fadeIn;
|
||||||
@ -56,22 +55,30 @@ namespace osu.Game.Rulesets.Osu.Mods
|
|||||||
|
|
||||||
d.FadeIn = fadeIn;
|
d.FadeIn = fadeIn;
|
||||||
|
|
||||||
using (drawable.BeginAbsoluteSequence(fadeInTime))
|
using (drawable.BeginAbsoluteSequence(fadeInTime, true))
|
||||||
{
|
{
|
||||||
switch (drawable)
|
switch (drawable)
|
||||||
{
|
{
|
||||||
case DrawableHitCircle circle:
|
case DrawableHitCircle circle:
|
||||||
circle.ApproachCircle.FadeOut();
|
circle.ApproachCircle.FadeOut();
|
||||||
|
// prolong the hitcircle long enough so misses are still possible
|
||||||
circle.LifetimeEnd = circle.HitObject.StartTime + Math.Max(fadeOut, circle.HitObject.HitWindowFor(HitResult.Miss));
|
circle.LifetimeEnd = circle.HitObject.StartTime + Math.Max(fadeOut, circle.HitObject.HitWindowFor(HitResult.Miss));
|
||||||
|
circle.FadeIn(fadeIn).Then().FadeOut(fadeOut); // override fade in as it somehow gets cut otherwise
|
||||||
using (circle.BeginDelayedSequence(fadeIn))
|
|
||||||
circle.FadeOut(fadeOut);
|
|
||||||
break;
|
break;
|
||||||
case DrawableSlider slider:
|
case DrawableSlider slider:
|
||||||
slider.InitialCircle.ApplyCustomUpdateState += customSequence;
|
slider.InitialCircle.ApplyCustomUpdateState += customSequence;
|
||||||
|
|
||||||
//using (slider.BeginDelayedSequence(fadeIn))
|
using (slider.BeginAbsoluteSequence(fadeOutTime, true))
|
||||||
// slider.Body.FadeOut(duration, Easing.Out);
|
{
|
||||||
|
var duration = slider.Slider.EndTime - fadeOutTime; // new duration from fade in to end of the slider
|
||||||
|
slider.Body.FadeOut(duration);
|
||||||
|
// delay a bit less to let the sliderball fade out peacefully instead of having a hard cut
|
||||||
|
using (slider.BeginDelayedSequence(duration - fadeOut, true))
|
||||||
|
{
|
||||||
|
slider.Ball.FadeOut(fadeOut);
|
||||||
|
slider.Delay(fadeOut).Expire();
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case DrawableSpinner spinner:
|
case DrawableSpinner spinner:
|
||||||
spinner.Disc.FadeOut();
|
spinner.Disc.FadeOut();
|
||||||
|
@ -35,16 +35,13 @@ namespace osu.Game.Rulesets.Osu.UI
|
|||||||
|
|
||||||
protected override DrawableHitObject<OsuHitObject> GetVisualRepresentation(OsuHitObject h)
|
protected override DrawableHitObject<OsuHitObject> GetVisualRepresentation(OsuHitObject h)
|
||||||
{
|
{
|
||||||
var circle = h as HitCircle;
|
if (h is HitCircle circle)
|
||||||
if (circle != null)
|
|
||||||
return new DrawableHitCircle(circle);
|
return new DrawableHitCircle(circle);
|
||||||
|
|
||||||
var slider = h as Slider;
|
if (h is Slider slider)
|
||||||
if (slider != null)
|
|
||||||
return new DrawableSlider(slider);
|
return new DrawableSlider(slider);
|
||||||
|
|
||||||
var spinner = h as Spinner;
|
if (h is Spinner spinner)
|
||||||
if (spinner != null)
|
|
||||||
return new DrawableSpinner(spinner);
|
return new DrawableSpinner(spinner);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user