1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-13 22:07:25 +08:00

Merge pull request #580 from EVAST9919/hud_visibility

HudOverlay visibility
This commit is contained in:
Dean Herbert 2017-04-06 14:27:50 +09:00 committed by GitHub
commit bb65d2e3d3
3 changed files with 71 additions and 14 deletions

View File

@ -35,6 +35,7 @@ namespace osu.Game.Configuration
Set(OsuConfig.MenuParallax, true); Set(OsuConfig.MenuParallax, true);
Set(OsuConfig.ShowInterface, true);
Set(OsuConfig.KeyOverlay, false); Set(OsuConfig.KeyOverlay, false);
//todo: implement all settings below this line (remove the Disabled set when doing so). //todo: implement all settings below this line (remove the Disabled set when doing so).
@ -89,7 +90,6 @@ namespace osu.Game.Configuration
Set(OsuConfig.LastVersionPermissionsFailed, string.Empty).Disabled = true; Set(OsuConfig.LastVersionPermissionsFailed, string.Empty).Disabled = true;
Set(OsuConfig.LoadSubmittedThread, true).Disabled = true; Set(OsuConfig.LoadSubmittedThread, true).Disabled = true;
Set(OsuConfig.LobbyPlayMode, -1).Disabled = true; Set(OsuConfig.LobbyPlayMode, -1).Disabled = true;
Set(OsuConfig.ShowInterface, true).Disabled = true;
Set(OsuConfig.ShowInterfaceDuringRelax, false).Disabled = true; Set(OsuConfig.ShowInterfaceDuringRelax, false).Disabled = true;
Set(OsuConfig.LobbyShowExistingOnly, false).Disabled = true; Set(OsuConfig.LobbyShowExistingOnly, false).Disabled = true;
Set(OsuConfig.LobbyShowFriendsOnly, false).Disabled = true; Set(OsuConfig.LobbyShowFriendsOnly, false).Disabled = true;

View File

@ -9,11 +9,18 @@ using osu.Game.Configuration;
using osu.Game.Graphics.UserInterface; using osu.Game.Graphics.UserInterface;
using osu.Game.Screens.Play; using osu.Game.Screens.Play;
using osu.Game.Modes.Scoring; using osu.Game.Modes.Scoring;
using osu.Framework.Input;
using OpenTK.Input;
using osu.Game.Overlays;
using osu.Game.Overlays.Notifications;
namespace osu.Game.Modes.UI namespace osu.Game.Modes.UI
{ {
public abstract class HudOverlay : Container public abstract class HudOverlay : Container
{ {
private const int duration = 100;
private readonly Container content;
public readonly KeyCounterCollection KeyCounter; public readonly KeyCounterCollection KeyCounter;
public readonly ComboCounter ComboCounter; public readonly ComboCounter ComboCounter;
public readonly ScoreCounter ScoreCounter; public readonly ScoreCounter ScoreCounter;
@ -21,6 +28,9 @@ namespace osu.Game.Modes.UI
public readonly HealthDisplay HealthDisplay; public readonly HealthDisplay HealthDisplay;
private Bindable<bool> showKeyCounter; private Bindable<bool> showKeyCounter;
private Bindable<bool> showHud;
private static bool hasShownNotificationOnce;
protected abstract KeyCounterCollection CreateKeyCounter(); protected abstract KeyCounterCollection CreateKeyCounter();
protected abstract ComboCounter CreateComboCounter(); protected abstract ComboCounter CreateComboCounter();
@ -32,28 +42,53 @@ namespace osu.Game.Modes.UI
{ {
RelativeSizeAxes = Axes.Both; RelativeSizeAxes = Axes.Both;
Children = new Drawable[] Add(content = new Container
{ {
KeyCounter = CreateKeyCounter(), RelativeSizeAxes = Axes.Both,
ComboCounter = CreateComboCounter(),
ScoreCounter = CreateScoreCounter(), Children = new Drawable[]
AccuracyCounter = CreateAccuracyCounter(), {
HealthDisplay = CreateHealthDisplay(), KeyCounter = CreateKeyCounter(),
}; ComboCounter = CreateComboCounter(),
ScoreCounter = CreateScoreCounter(),
AccuracyCounter = CreateAccuracyCounter(),
HealthDisplay = CreateHealthDisplay(),
}
});
} }
[BackgroundDependencyLoader] [BackgroundDependencyLoader(true)]
private void load(OsuConfigManager config) private void load(OsuConfigManager config, NotificationManager notificationManager)
{ {
showKeyCounter = config.GetBindable<bool>(OsuConfig.KeyOverlay); showKeyCounter = config.GetBindable<bool>(OsuConfig.KeyOverlay);
showKeyCounter.ValueChanged += visibility => showKeyCounter.ValueChanged += keyCounterVisibility =>
{ {
if (visibility) if (keyCounterVisibility)
KeyCounter.Show(); KeyCounter.FadeIn(duration);
else else
KeyCounter.Hide(); KeyCounter.FadeOut(duration);
}; };
showKeyCounter.TriggerChange(); showKeyCounter.TriggerChange();
showHud = config.GetBindable<bool>(OsuConfig.ShowInterface);
showHud.ValueChanged += hudVisibility =>
{
if (hudVisibility)
content.FadeIn(duration);
else
content.FadeOut(duration);
};
showHud.TriggerChange();
if (!showHud && !hasShownNotificationOnce)
{
hasShownNotificationOnce = true;
notificationManager?.Post(new SimpleNotification
{
Text = @"The score overlay is currently disabled. You can toggle this by pressing Shift+Tab."
});
}
} }
public void BindProcessor(ScoreProcessor processor) public void BindProcessor(ScoreProcessor processor)
@ -68,5 +103,22 @@ namespace osu.Game.Modes.UI
{ {
hitRenderer.InputManager.Add(KeyCounter.GetReceptor()); hitRenderer.InputManager.Add(KeyCounter.GetReceptor());
} }
protected override bool OnKeyDown(InputState state, KeyDownEventArgs args)
{
if (args.Repeat) return false;
if (state.Keyboard.ShiftPressed)
{
switch (args.Key)
{
case Key.Tab:
showHud.Value = !showHud.Value;
return true;
}
}
return base.OnKeyDown(state, args);
}
} }
} }

View File

@ -39,6 +39,11 @@ namespace osu.Game.Overlays.Options.Sections.Gameplay
Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.ScoreMeterScale) Bindable = (BindableDouble)config.GetBindable<double>(OsuConfig.ScoreMeterScale)
}, },
new OsuCheckbox new OsuCheckbox
{
LabelText = "Show score overlay",
Bindable = config.GetBindable<bool>(OsuConfig.ShowInterface)
},
new OsuCheckbox
{ {
LabelText = "Always show key overlay", LabelText = "Always show key overlay",
Bindable = config.GetBindable<bool>(OsuConfig.KeyOverlay) Bindable = config.GetBindable<bool>(OsuConfig.KeyOverlay)