// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Game.Rulesets.Mania.UI; using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Skinning; namespace osu.Game.Rulesets.Mania.Skinning { public class HitTargetInsetContainer : Container { private readonly IBindable direction = new Bindable(); protected override Container Content => content; private readonly Container content; private float hitPosition; public HitTargetInsetContainer() { RelativeSizeAxes = Axes.Both; InternalChild = content = new Container { RelativeSizeAxes = Axes.Both }; } [BackgroundDependencyLoader] private void load(ISkinSource skin, IScrollingInfo scrollingInfo) { hitPosition = skin.GetManiaSkinConfig(LegacyManiaSkinConfigurationLookups.HitPosition)?.Value ?? Stage.HIT_TARGET_POSITION; direction.BindTo(scrollingInfo.Direction); direction.BindValueChanged(onDirectionChanged, true); } private void onDirectionChanged(ValueChangedEvent direction) { content.Padding = direction.NewValue == ScrollingDirection.Up ? new MarginPadding { Top = hitPosition } : new MarginPadding { Bottom = hitPosition }; } } }