// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using osu.Framework.Allocation; using osu.Framework.Bindables; using osu.Framework.Graphics.Containers; using osu.Game.Screens.Select; namespace osu.Game.Overlays { [Cached] internal interface IOverlayManager { /// /// Whether overlays should be able to be opened game-wide. Value is sourced from the current active screen. /// IBindable OverlayActivationMode { get; } /// /// Registers a blocking that was not created by itself for later use. /// /// /// The goal of this method is to allow child screens, like to register their own full-screen blocking overlays /// with background dim. /// In those cases, for the dim to work correctly, the overlays need to be added at a game level directly, rather as children of the screens. /// /// /// An that should be disposed of when the should be unregistered. /// Disposing of this will automatically expire the . /// IDisposable RegisterBlockingOverlay(OverlayContainer overlayContainer); /// /// Should be called when has been shown and should begin blocking background input. /// void ShowBlockingOverlay(OverlayContainer overlay); /// /// Should be called when a blocking has been hidden and should stop blocking background input. /// void HideBlockingOverlay(OverlayContainer overlay); } }