mirror of
https://github.com/ppy/osu.git
synced 2024-12-13 05:22:54 +08:00
Hide menu cursor when user is idle
This commit is contained in:
parent
8305d886e6
commit
a44cfe2901
@ -49,7 +49,11 @@ namespace osu.Game.Graphics.Cursor
|
||||
[Resolved]
|
||||
private OsuUserInputManager inputManager { get; set; } = null!;
|
||||
|
||||
[Resolved]
|
||||
private OsuGame? game { get; set; }
|
||||
|
||||
private readonly IBindable<bool> mouseInputSource = new BindableBool();
|
||||
private readonly IBindable<bool> isIdle = new BindableBool();
|
||||
|
||||
private readonly Bindable<Visibility> internalState = new Bindable<Visibility>();
|
||||
|
||||
@ -62,6 +66,11 @@ namespace osu.Game.Graphics.Cursor
|
||||
mouseInputSource.BindTo(inputManager.IsMouseInputSource);
|
||||
mouseInputSource.BindValueChanged(_ => updateInternalVisibility(), true);
|
||||
|
||||
if (game != null)
|
||||
{
|
||||
isIdle.BindTo(game.IsIdle);
|
||||
isIdle.BindValueChanged(_ => updateInternalVisibility());
|
||||
}
|
||||
}
|
||||
|
||||
private void updateInternalVisibility()
|
||||
|
@ -70,6 +70,7 @@ namespace osu.Game
|
||||
/// The full osu! experience. Builds on top of <see cref="OsuGameBase"/> to add menus and binding logic
|
||||
/// for initial components that are generally retrieved via DI.
|
||||
/// </summary>
|
||||
[Cached(typeof(OsuGame))]
|
||||
public class OsuGame : OsuGameBase, IKeyBindingHandler<GlobalAction>, ILocalUserPlayInfo, IPerformFromScreenRunner, IOverlayManager, ILinkHandler
|
||||
{
|
||||
/// <summary>
|
||||
@ -136,6 +137,11 @@ namespace osu.Game
|
||||
|
||||
private IdleTracker idleTracker;
|
||||
|
||||
/// <summary>
|
||||
/// Whether the user is currently in an idle state.
|
||||
/// </summary>
|
||||
public IBindable<bool> IsIdle => idleTracker.IsIdle;
|
||||
|
||||
/// <summary>
|
||||
/// Whether overlays should be able to be opened game-wide. Value is sourced from the current active screen.
|
||||
/// </summary>
|
||||
@ -266,8 +272,6 @@ namespace osu.Game
|
||||
[BackgroundDependencyLoader]
|
||||
private void load()
|
||||
{
|
||||
dependencies.CacheAs(this);
|
||||
|
||||
SentryLogger.AttachUser(API.LocalUser);
|
||||
|
||||
dependencies.Cache(osuLogo = new OsuLogo { Alpha = 0 });
|
||||
|
@ -62,6 +62,7 @@ namespace osu.Game
|
||||
/// Unlike <see cref="OsuGame"/>, this class will not load any kind of UI, allowing it to be used
|
||||
/// for provide dependencies to test cases without interfering with them.
|
||||
/// </summary>
|
||||
[Cached(typeof(OsuGameBase))]
|
||||
public partial class OsuGameBase : Framework.Game, ICanAcceptFiles, IBeatSyncProvider
|
||||
{
|
||||
public static readonly string[] VIDEO_EXTENSIONS = { ".mp4", ".mov", ".avi", ".flv" };
|
||||
@ -253,7 +254,6 @@ namespace osu.Game
|
||||
largeStore.AddTextureSource(Host.CreateTextureLoaderStore(new OnlineStore()));
|
||||
dependencies.Cache(largeStore);
|
||||
|
||||
dependencies.CacheAs(this);
|
||||
dependencies.CacheAs(LocalConfig);
|
||||
|
||||
InitialiseFonts();
|
||||
|
Loading…
Reference in New Issue
Block a user