1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-05 15:43:21 +08:00

Hide the game mouse cursor when playing osu!catch with relax mod

This commit is contained in:
Dean Herbert 2022-11-30 18:13:53 +09:00
parent 005ce1c438
commit 5ce2d6f54a
3 changed files with 32 additions and 5 deletions

View File

@ -3,15 +3,19 @@
#nullable disable #nullable disable
using System.Linq;
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Rulesets.Catch.Objects; using osu.Game.Rulesets.Catch.Objects;
using osu.Game.Rulesets.Catch.Objects.Drawables; using osu.Game.Rulesets.Catch.Objects.Drawables;
using osu.Game.Rulesets.Judgements; using osu.Game.Rulesets.Judgements;
using osu.Game.Rulesets.Mods;
using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.UI;
using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Rulesets.UI.Scrolling;
using osuTK; using osuTK;
using osuTK.Graphics;
namespace osu.Game.Rulesets.Catch.UI namespace osu.Game.Rulesets.Catch.UI
{ {
@ -49,6 +53,14 @@ namespace osu.Game.Rulesets.Catch.UI
this.difficulty = difficulty; this.difficulty = difficulty;
} }
protected override GameplayCursorContainer CreateCursor()
{
if (Mods.Any(m => m is ModRelax))
return new CatchRelaxCursorContainer();
return base.CreateCursor();
}
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load() private void load()
{ {

View File

@ -0,0 +1,15 @@
// 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 osu.Framework.Graphics;
using osu.Game.Rulesets.UI;
namespace osu.Game.Rulesets.Catch.UI
{
public partial class CatchRelaxCursorContainer : GameplayCursorContainer
{
// Just hide the cursor in relax.
// The main goal here is to show that we have a cursor so the game never shows the global one.
protected override Drawable CreateCursor() => Empty();
}
}

View File

@ -93,7 +93,7 @@ namespace osu.Game.Rulesets.UI
public readonly BindableBool DisplayJudgements = new BindableBool(true); public readonly BindableBool DisplayJudgements = new BindableBool(true);
[Resolved(CanBeNull = true)] [Resolved(CanBeNull = true)]
private IReadOnlyList<Mod> mods { get; set; } protected IReadOnlyList<Mod> Mods { get; private set; }
private readonly HitObjectEntryManager entryManager = new HitObjectEntryManager(); private readonly HitObjectEntryManager entryManager = new HitObjectEntryManager();
@ -243,9 +243,9 @@ namespace osu.Game.Rulesets.UI
{ {
base.Update(); base.Update();
if (!IsNested && mods != null) if (!IsNested && Mods != null)
{ {
foreach (var mod in mods) foreach (var mod in Mods)
{ {
if (mod is IUpdatableByPlayfield updatable) if (mod is IUpdatableByPlayfield updatable)
updatable.Update(this); updatable.Update(this);
@ -374,9 +374,9 @@ namespace osu.Game.Rulesets.UI
// If this is the first time this DHO is being used, then apply the DHO mods. // If this is the first time this DHO is being used, then apply the DHO mods.
// This is done before Apply() so that the state is updated once when the hitobject is applied. // This is done before Apply() so that the state is updated once when the hitobject is applied.
if (mods != null) if (Mods != null)
{ {
foreach (var m in mods.OfType<IApplicableToDrawableHitObject>()) foreach (var m in Mods.OfType<IApplicableToDrawableHitObject>())
m.ApplyToDrawableHitObject(dho); m.ApplyToDrawableHitObject(dho);
} }
} }