1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-13 15:03:13 +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)
{
if (!drawable.IsLoaded)
drawable.OnLoadComplete += onDrawableHitObjectLoaded;
((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)]
@ -134,27 +144,6 @@ namespace osu.Game.Rulesets.Osu.UI
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)
{
// Hitobjects that block future hits should miss previous hitobjects if they're hit out-of-order.