// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. #nullable disable using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Game.Rulesets.Catch.Objects; namespace osu.Game.Rulesets.Catch.Skinning.Default { internal class FruitPiece : CatchHitObjectPiece { /// <summary> /// Because we're adding a border around the fruit, we need to scale down some. /// </summary> public const float RADIUS_ADJUST = 1.1f; public readonly Bindable<FruitVisualRepresentation> VisualRepresentation = new Bindable<FruitVisualRepresentation>(); protected override BorderPiece BorderPiece { get; } protected override HyperBorderPiece HyperBorderPiece { get; } public FruitPiece() { RelativeSizeAxes = Axes.Both; InternalChildren = new Drawable[] { new FruitPulpFormation { AccentColour = { BindTarget = AccentColour }, VisualRepresentation = { BindTarget = VisualRepresentation } }, BorderPiece = new BorderPiece(), HyperBorderPiece = new HyperBorderPiece() }; } protected override void LoadComplete() { base.LoadComplete(); IndexInBeatmap.BindValueChanged(index => { VisualRepresentation.Value = Fruit.GetVisualRepresentation(index.NewValue); }, true); } } }