// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. #nullable disable using System; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics.Containers; using osu.Game.Rulesets.Mania.Beatmaps; using osu.Game.Rulesets.Mania.UI; using osu.Game.Skinning; namespace osu.Game.Rulesets.Mania.Skinning.Legacy { /// /// A which is placed somewhere within a . /// public class LegacyManiaColumnElement : CompositeDrawable { [Resolved] protected Column Column { get; private set; } [Resolved] private StageDefinition stage { get; set; } /// /// The column type identifier to use for texture lookups, in the case of no user-provided configuration. /// protected string FallbackColumnIndex { get; private set; } [BackgroundDependencyLoader] private void load() { if (Column.IsSpecial) FallbackColumnIndex = "S"; else { int distanceToEdge = Math.Min(Column.Index, (stage.Columns - 1) - Column.Index); FallbackColumnIndex = distanceToEdge % 2 == 0 ? "1" : "2"; } } protected IBindable GetColumnSkinConfig(ISkin skin, LegacyManiaSkinConfigurationLookups lookup) => skin.GetManiaSkinConfig(lookup, stage, Column.Index); } }