1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-20 06:12:55 +08:00

Add back/obsolete old AddNested() method

This commit is contained in:
smoogipoo 2019-10-17 13:52:21 +09:00
parent d8f3678c3c
commit f429a8f7c2
8 changed files with 80 additions and 48 deletions

View File

@ -25,19 +25,19 @@ namespace osu.Game.Rulesets.Catch.Objects.Drawable
AddInternal(bananaContainer = new Container { RelativeSizeAxes = Axes.Both });
}
protected override void AddNested(DrawableHitObject hitObject)
protected override void AddNestedHitObject(DrawableHitObject hitObject)
{
base.AddNested(hitObject);
base.AddNestedHitObject(hitObject);
bananaContainer.Add(hitObject);
}
protected override void ClearNested()
protected override void ClearNestedHitObjects()
{
base.ClearNested();
base.ClearNestedHitObjects();
bananaContainer.Clear();
}
protected override DrawableHitObject CreateNested(HitObject hitObject)
protected override DrawableHitObject CreateNestedHitObject(HitObject hitObject)
{
switch (hitObject)
{
@ -45,7 +45,7 @@ namespace osu.Game.Rulesets.Catch.Objects.Drawable
return createDrawableRepresentation?.Invoke(banana)?.With(o => ((DrawableCatchHitObject)o).CheckPosition = p => CheckPosition?.Invoke(p) ?? false);
}
return base.CreateNested(hitObject);
return base.CreateNestedHitObject(hitObject);
}
}
}

View File

@ -25,19 +25,19 @@ namespace osu.Game.Rulesets.Catch.Objects.Drawable
AddInternal(dropletContainer = new Container { RelativeSizeAxes = Axes.Both, });
}
protected override void AddNested(DrawableHitObject hitObject)
protected override void AddNestedHitObject(DrawableHitObject hitObject)
{
base.AddNested(hitObject);
base.AddNestedHitObject(hitObject);
dropletContainer.Add(hitObject);
}
protected override void ClearNested()
protected override void ClearNestedHitObjects()
{
base.ClearNested();
base.ClearNestedHitObjects();
dropletContainer.Clear();
}
protected override DrawableHitObject CreateNested(HitObject hitObject)
protected override DrawableHitObject CreateNestedHitObject(HitObject hitObject)
{
switch (hitObject)
{
@ -45,7 +45,7 @@ namespace osu.Game.Rulesets.Catch.Objects.Drawable
return createDrawableRepresentation?.Invoke(catchObject)?.With(o => ((DrawableCatchHitObject)o).CheckPosition = p => CheckPosition?.Invoke(p) ?? false);
}
return base.CreateNested(hitObject);
return base.CreateNestedHitObject(hitObject);
}
}
}

View File

@ -59,9 +59,9 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
}, true);
}
protected override void AddNested(DrawableHitObject hitObject)
protected override void AddNestedHitObject(DrawableHitObject hitObject)
{
base.AddNested(hitObject);
base.AddNestedHitObject(hitObject);
switch (hitObject)
{
@ -79,15 +79,15 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
}
}
protected override void ClearNested()
protected override void ClearNestedHitObjects()
{
base.ClearNested();
base.ClearNestedHitObjects();
headContainer.Clear();
tailContainer.Clear();
tickContainer.Clear();
}
protected override DrawableHitObject CreateNested(HitObject hitObject)
protected override DrawableHitObject CreateNestedHitObject(HitObject hitObject)
{
switch (hitObject)
{
@ -115,7 +115,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
};
}
return base.CreateNested(hitObject);
return base.CreateNestedHitObject(hitObject);
}
protected override void OnDirectionChanged(ValueChangedEvent<ScrollingDirection> e)

View File

@ -93,9 +93,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
}, true);
}
protected override void AddNested(DrawableHitObject hitObject)
protected override void AddNestedHitObject(DrawableHitObject hitObject)
{
base.AddNested(hitObject);
base.AddNestedHitObject(hitObject);
switch (hitObject)
{
@ -117,9 +117,9 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
}
}
protected override void ClearNested()
protected override void ClearNestedHitObjects()
{
base.ClearNested();
base.ClearNestedHitObjects();
headContainer.Clear();
tailContainer.Clear();
@ -127,7 +127,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
tickContainer.Clear();
}
protected override DrawableHitObject CreateNested(HitObject hitObject)
protected override DrawableHitObject CreateNestedHitObject(HitObject hitObject)
{
switch (hitObject)
{
@ -144,7 +144,7 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables
return new DrawableRepeatPoint(repeat, this) { Position = repeat.Position - slider.Position };
}
return base.CreateNested(hitObject);
return base.CreateNestedHitObject(hitObject);
}
protected override void UpdateInitialTransforms()

View File

@ -55,9 +55,9 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
OnNewResult += onNewResult;
}
protected override void AddNested(DrawableHitObject hitObject)
protected override void AddNestedHitObject(DrawableHitObject hitObject)
{
base.AddNested(hitObject);
base.AddNestedHitObject(hitObject);
switch (hitObject)
{
@ -67,13 +67,13 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
}
}
protected override void ClearNested()
protected override void ClearNestedHitObjects()
{
base.ClearNested();
base.ClearNestedHitObjects();
tickContainer.Clear();
}
protected override DrawableHitObject CreateNested(HitObject hitObject)
protected override DrawableHitObject CreateNestedHitObject(HitObject hitObject)
{
switch (hitObject)
{
@ -81,7 +81,7 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
return new DrawableDrumRollTick(tick);
}
return base.CreateNested(hitObject);
return base.CreateNestedHitObject(hitObject);
}
protected override TaikoPiece CreateMainPiece() => new ElongatedCirclePiece();

View File

@ -128,9 +128,9 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
Width *= Parent.RelativeChildSize.X;
}
protected override void AddNested(DrawableHitObject hitObject)
protected override void AddNestedHitObject(DrawableHitObject hitObject)
{
base.AddNested(hitObject);
base.AddNestedHitObject(hitObject);
switch (hitObject)
{
@ -140,13 +140,13 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
}
}
protected override void ClearNested()
protected override void ClearNestedHitObjects()
{
base.ClearNested();
base.ClearNestedHitObjects();
ticks.Clear();
}
protected override DrawableHitObject CreateNested(HitObject hitObject)
protected override DrawableHitObject CreateNestedHitObject(HitObject hitObject)
{
switch (hitObject)
{
@ -154,7 +154,7 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
return new DrawableSwellTick(tick);
}
return base.CreateNested(hitObject);
return base.CreateNestedHitObject(hitObject);
}
protected override void CheckForResult(bool userTriggered, double timeOffset)

View File

@ -134,9 +134,9 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
AddInternal(strongHitContainer = new Container<DrawableStrongNestedHit>());
}
protected override void AddNested(DrawableHitObject hitObject)
protected override void AddNestedHitObject(DrawableHitObject hitObject)
{
base.AddNested(hitObject);
base.AddNestedHitObject(hitObject);
switch (hitObject)
{
@ -146,13 +146,13 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
}
}
protected override void ClearNested()
protected override void ClearNestedHitObjects()
{
base.ClearNested();
base.ClearNestedHitObjects();
strongHitContainer.Clear();
}
protected override DrawableHitObject CreateNested(HitObject hitObject)
protected override DrawableHitObject CreateNestedHitObject(HitObject hitObject)
{
switch (hitObject)
{
@ -160,7 +160,7 @@ namespace osu.Game.Rulesets.Taiko.Objects.Drawables
return CreateStrongHit(strong);
}
return base.CreateNested(hitObject);
return base.CreateNestedHitObject(hitObject);
}
// Normal and clap samples are handled by the drum

View File

@ -4,6 +4,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Extensions.TypeExtensions;
@ -138,34 +139,65 @@ namespace osu.Game.Rulesets.Objects.Drawables
protected void Apply(HitObject hitObject)
{
#pragma warning disable 618 // can be removed 20200417
if (GetType().GetMethod(nameof(AddNested), BindingFlags.NonPublic | BindingFlags.Instance)?.DeclaringType != typeof(DrawableHitObject))
return;
#pragma warning restore 618
if (nestedHitObjects.IsValueCreated)
{
nestedHitObjects.Value.Clear();
ClearNested();
ClearNestedHitObjects();
}
foreach (var h in hitObject.NestedHitObjects)
{
var drawableNested = CreateNested(h) ?? throw new InvalidOperationException($"{nameof(CreateNested)} returned null for {h.GetType().ReadableName()}.");
var drawableNested = CreateNestedHitObject(h) ?? throw new InvalidOperationException($"{nameof(CreateNestedHitObject)} returned null for {h.GetType().ReadableName()}.");
drawableNested.OnNewResult += (d, r) => OnNewResult?.Invoke(d, r);
drawableNested.OnRevertResult += (d, r) => OnRevertResult?.Invoke(d, r);
drawableNested.ApplyCustomUpdateState += (d, j) => ApplyCustomUpdateState?.Invoke(d, j);
nestedHitObjects.Value.Add(drawableNested);
AddNested(drawableNested);
AddNestedHitObject(drawableNested);
}
}
protected virtual void AddNested(DrawableHitObject hitObject)
/// <summary>
/// Invoked by the base <see cref="DrawableHitObject"/> to add nested <see cref="DrawableHitObject"/>s to the hierarchy.
/// </summary>
/// <param name="hitObject">The <see cref="DrawableHitObject"/> to be added.</param>
protected virtual void AddNestedHitObject(DrawableHitObject hitObject)
{
}
protected virtual void ClearNested()
/// <summary>
/// Adds a nested <see cref="DrawableHitObject"/>. This should not be used except for legacy nested <see cref="DrawableHitObject"/> usages.
/// </summary>
/// <param name="h"></param>
[Obsolete("Use AddNestedHitObject() / ClearNestedHitObjects() / CreateNestedHitObject() instead.")] // can be removed 20200417
protected virtual void AddNested(DrawableHitObject h)
{
h.OnNewResult += (d, r) => OnNewResult?.Invoke(d, r);
h.OnRevertResult += (d, r) => OnRevertResult?.Invoke(d, r);
h.ApplyCustomUpdateState += (d, j) => ApplyCustomUpdateState?.Invoke(d, j);
nestedHitObjects.Value.Add(h);
}
/// <summary>
/// Invoked by the base <see cref="DrawableHitObject"/> to remove all previously-added nested <see cref="DrawableHitObject"/>s.
/// </summary>
protected virtual void ClearNestedHitObjects()
{
}
protected virtual DrawableHitObject CreateNested(HitObject hitObject) => null;
/// <summary>
/// Creates the drawable representation for a nested <see cref="HitObject"/>.
/// </summary>
/// <param name="hitObject">The <see cref="HitObject"/>.</param>
/// <returns>The drawable representation for <paramref name="hitObject"/>.</returns>
protected virtual DrawableHitObject CreateNestedHitObject(HitObject hitObject) => null;
#region State / Transform Management