osu/osu.Game/Overlays/IOverlayManager.cs

45 lines
2.0 KiB
C#

// 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.
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
{
/// <summary>
/// Whether overlays should be able to be opened game-wide. Value is sourced from the current active screen.
/// </summary>
IBindable<OverlayActivation> OverlayActivationMode { get; }
/// <summary>
/// Registers a blocking <see cref="OverlayContainer"/> that was not created by <see cref="OsuGame"/> itself for later use.
/// </summary>
/// <remarks>
/// The goal of this method is to allow child screens, like <see cref="SongSelect"/> 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.
/// </remarks>
/// <returns>
/// An <see cref="IDisposable"/> that should be disposed of when the <paramref name="overlayContainer"/> should be unregistered.
/// Disposing of this <see cref="IDisposable"/> will automatically expire the <paramref name="overlayContainer"/>.
/// </returns>
IDisposable RegisterBlockingOverlay(OverlayContainer overlayContainer);
/// <summary>
/// Should be called when <paramref name="overlay"/> has been shown and should begin blocking background input.
/// </summary>
void ShowBlockingOverlay(OverlayContainer overlay);
/// <summary>
/// Should be called when a blocking <paramref name="overlay"/> has been hidden and should stop blocking background input.
/// </summary>
void HideBlockingOverlay(OverlayContainer overlay);
}
}