1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-16 03:02:56 +08:00

Fix more than one proxy is created

This commit is contained in:
ekrctb 2020-11-20 18:42:48 +09:00
parent 772f6df668
commit 27f5a99726

View File

@ -96,10 +96,20 @@ namespace osu.Game.Rulesets.Osu.UI
private void onDrawableHitObjectAdded(DrawableHitObject drawable) private void onDrawableHitObjectAdded(DrawableHitObject drawable)
{ {
if (!drawable.IsLoaded)
drawable.OnLoadComplete += onDrawableHitObjectLoaded;
((DrawableOsuHitObject)drawable).CheckHittable = CheckHittable; ((DrawableOsuHitObject)drawable).CheckHittable = CheckHittable;
switch (drawable)
{
case DrawableSpinner _:
if (!drawable.HasProxy)
spinnerProxies.Add(drawable.CreateProxy());
break;
case IDrawableHitObjectWithProxiedApproach approach:
if (!approach.ProxiedLayer.HasProxy)
approachCircles.Add(approach.ProxiedLayer.CreateProxy());
break;
}
} }
[BackgroundDependencyLoader(true)] [BackgroundDependencyLoader(true)]
@ -134,27 +144,6 @@ namespace osu.Game.Rulesets.Osu.UI
followPoints.RemoveFollowPoints((OsuHitObject)hitObject); followPoints.RemoveFollowPoints((OsuHitObject)hitObject);
} }
private void onDrawableHitObjectLoaded(Drawable drawable)
{
switch (drawable)
{
case DrawableSliderHead _:
case DrawableSliderTail _:
case DrawableSliderTick _:
case DrawableSliderRepeat _:
case DrawableSpinnerTick _:
break;
case DrawableSpinner _:
spinnerProxies.Add(drawable.CreateProxy());
break;
case IDrawableHitObjectWithProxiedApproach approach:
approachCircles.Add(approach.ProxiedLayer.CreateProxy());
break;
}
}
private void onNewResult(DrawableHitObject judgedObject, JudgementResult result) private void onNewResult(DrawableHitObject judgedObject, JudgementResult result)
{ {
// Hitobjects that block future hits should miss previous hitobjects if they're hit out-of-order. // Hitobjects that block future hits should miss previous hitobjects if they're hit out-of-order.