// 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.Configuration; using osu.Game.Beatmaps; using osu.Game.Rulesets; namespace osu.Game.Screens { public class OsuScreenDependencies : DependencyContainer { public Bindable Beatmap { get; } public Bindable Ruleset { get; } public OsuScreenDependencies(bool requireLease, IReadOnlyDependencyContainer parent) : base(parent) { if (requireLease) { Beatmap = parent.Get>()?.GetBoundCopy(); if (Beatmap == null) { Cache(Beatmap = parent.Get>().BeginLease(false)); } Ruleset = parent.Get>()?.GetBoundCopy(); if (Ruleset == null) { Cache(Ruleset = parent.Get>().BeginLease(true)); } } else { Beatmap = (parent.Get>() ?? parent.Get>()).GetBoundCopy(); Ruleset = (parent.Get>() ?? parent.Get>()).GetBoundCopy(); } } } }