mirror of
https://github.com/ppy/osu.git
synced 2026-05-13 19:54:15 +08:00
Add judgement counter mode to show misses only (#37664)
Not sure if valuable. Came from https://github.com/ppy/osu/discussions/37261 but that wants slider ends as well, which is like, weird. 🤷
This commit is contained in:
committed by
GitHub
Unverified
parent
b578d34da4
commit
7d93c242b7
@@ -91,7 +91,7 @@ namespace osu.Game.Tests.Visual.Gameplay
|
||||
|
||||
AddRepeatStep("Add judgement", () => applyOneJudgement(HitResult.LargeTickHit), 2);
|
||||
AddAssert("Check value added whilst hidden", () => hiddenCount() == 2);
|
||||
AddStep("Show all judgements", () => counterDisplay.Mode.Value = ArgonJudgementCounterDisplay.DisplayMode.All);
|
||||
AddStep("Show all judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.All);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -156,7 +156,7 @@ namespace osu.Game.Tests.Visual.Gameplay
|
||||
AddStep("create counter", () => Child = counterDisplay = new TestArgonJudgementCounterDisplay());
|
||||
|
||||
AddStep("Set max judgement to hide itself", () => counterDisplay.ShowMaxJudgement.Value = false);
|
||||
AddStep("Show all judgements", () => counterDisplay.Mode.Value = ArgonJudgementCounterDisplay.DisplayMode.All);
|
||||
AddStep("Show all judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.All);
|
||||
AddWaitStep("wait some", 2);
|
||||
AddAssert("Assert max judgement hidden", () => counterDisplay.CounterFlow.ChildrenOfType<ArgonJudgementCounter>().First().Alpha == 0);
|
||||
}
|
||||
@@ -165,7 +165,7 @@ namespace osu.Game.Tests.Visual.Gameplay
|
||||
public void TestNoDuplicates()
|
||||
{
|
||||
AddStep("create counter", () => Child = counterDisplay = new TestArgonJudgementCounterDisplay());
|
||||
AddStep("Show all judgements", () => counterDisplay.Mode.Value = ArgonJudgementCounterDisplay.DisplayMode.All);
|
||||
AddStep("Show all judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.All);
|
||||
AddAssert("Check no duplicates",
|
||||
() => counterDisplay.CounterFlow.ChildrenOfType<ArgonJudgementCounter>().Count(),
|
||||
() => Is.EqualTo(counterDisplay.CounterFlow.ChildrenOfType<ArgonJudgementCounter>().Select(c => c.Result.DisplayName).Distinct().Count()));
|
||||
@@ -176,11 +176,11 @@ namespace osu.Game.Tests.Visual.Gameplay
|
||||
{
|
||||
AddStep("create counter", () => Child = counterDisplay = new TestArgonJudgementCounterDisplay());
|
||||
|
||||
AddStep("Show basic judgements", () => counterDisplay.Mode.Value = ArgonJudgementCounterDisplay.DisplayMode.Simple);
|
||||
AddStep("Show basic judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.Simple);
|
||||
AddWaitStep("wait some", 2);
|
||||
AddAssert("Check only basic", () => counterDisplay.CounterFlow.ChildrenOfType<ArgonJudgementCounter>().Last().Alpha == 0);
|
||||
AddStep("Show normal judgements", () => counterDisplay.Mode.Value = ArgonJudgementCounterDisplay.DisplayMode.Normal);
|
||||
AddStep("Show all judgements", () => counterDisplay.Mode.Value = ArgonJudgementCounterDisplay.DisplayMode.All);
|
||||
AddStep("Show normal judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.Normal);
|
||||
AddStep("Show all judgements", () => counterDisplay.Mode.Value = JudgementCounterDisplay.DisplayMode.All);
|
||||
AddWaitStep("wait some", 2);
|
||||
AddAssert("Check all visible", () => counterDisplay.CounterFlow.ChildrenOfType<ArgonJudgementCounter>().Last().Alpha == 1);
|
||||
AddToggleStep("toggle wireframe display", t => counterDisplay.WireframeOpacity.Value = t ? 0.3f : 0);
|
||||
|
||||
@@ -73,6 +73,15 @@ namespace osu.Game.Tests.Visual.Gameplay
|
||||
iteration++;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDisplayModes()
|
||||
{
|
||||
AddStep("create counter", () => Child = counterDisplay = new TestJudgementCounterDisplay());
|
||||
|
||||
foreach (JudgementCounterDisplay.DisplayMode mode in Enum.GetValues<JudgementCounterDisplay.DisplayMode>())
|
||||
AddStep($"Change mode to {mode}", () => counterDisplay.Mode.Value = mode);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestAddJudgementsToCounters()
|
||||
{
|
||||
|
||||
@@ -12,38 +12,43 @@ namespace osu.Game.Localisation.HUD
|
||||
/// <summary>
|
||||
/// "Display mode"
|
||||
/// </summary>
|
||||
public static LocalisableString JudgementDisplayMode => new TranslatableString(getKey(@"judgement_display_mode"), "Display mode");
|
||||
public static LocalisableString JudgementDisplayMode => new TranslatableString(getKey(@"judgement_display_mode"), @"Display mode");
|
||||
|
||||
/// <summary>
|
||||
/// "Counter direction"
|
||||
/// </summary>
|
||||
public static LocalisableString FlowDirection => new TranslatableString(getKey(@"flow_direction"), "Counter direction");
|
||||
public static LocalisableString FlowDirection => new TranslatableString(getKey(@"flow_direction"), @"Counter direction");
|
||||
|
||||
/// <summary>
|
||||
/// "Show judgement names"
|
||||
/// </summary>
|
||||
public static LocalisableString ShowJudgementNames => new TranslatableString(getKey(@"show_judgement_names"), "Show judgement names");
|
||||
public static LocalisableString ShowJudgementNames => new TranslatableString(getKey(@"show_judgement_names"), @"Show judgement names");
|
||||
|
||||
/// <summary>
|
||||
/// "Show max judgement"
|
||||
/// </summary>
|
||||
public static LocalisableString ShowMaxJudgement => new TranslatableString(getKey(@"show_max_judgement"), "Show max judgement");
|
||||
public static LocalisableString ShowMaxJudgement => new TranslatableString(getKey(@"show_max_judgement"), @"Show max judgement");
|
||||
|
||||
/// <summary>
|
||||
/// "Simple"
|
||||
/// </summary>
|
||||
public static LocalisableString JudgementDisplayModeSimple => new TranslatableString(getKey(@"judgement_display_mode_simple"), "Simple");
|
||||
public static LocalisableString JudgementDisplayModeSimple => new TranslatableString(getKey(@"judgement_display_mode_simple"), @"Simple");
|
||||
|
||||
/// <summary>
|
||||
/// "Misses only"
|
||||
/// </summary>
|
||||
public static LocalisableString JudgementDisplayModeMissesOnly => new TranslatableString(getKey(@"judgement_display_mode_misses_only"), @"Misses only");
|
||||
|
||||
/// <summary>
|
||||
/// "Normal"
|
||||
/// </summary>
|
||||
public static LocalisableString JudgementDisplayModeNormal => new TranslatableString(getKey(@"judgement_display_mode_normal"), "Normal");
|
||||
public static LocalisableString JudgementDisplayModeNormal => new TranslatableString(getKey(@"judgement_display_mode_normal"), @"Normal");
|
||||
|
||||
/// <summary>
|
||||
/// "All"
|
||||
/// </summary>
|
||||
public static LocalisableString JudgementDisplayModeAll => new TranslatableString(getKey(@"judgement_display_mode_all"), "All");
|
||||
public static LocalisableString JudgementDisplayModeAll => new TranslatableString(getKey(@"judgement_display_mode_all"), @"All");
|
||||
|
||||
private static string getKey(string key) => $"{prefix}:{key}";
|
||||
private static string getKey(string key) => $@"{prefix}:{key}";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,13 +91,13 @@ namespace osu.Game.Screens.Play.HUD.JudgementCounter
|
||||
|
||||
var hitResult = counter.Result.Types.First();
|
||||
|
||||
if (hitResult.IsBasic())
|
||||
return true;
|
||||
|
||||
switch (Mode.Value)
|
||||
{
|
||||
case DisplayMode.MissesOnly:
|
||||
return hitResult.IsMiss();
|
||||
|
||||
case DisplayMode.Simple:
|
||||
return false;
|
||||
return hitResult.IsBasic();
|
||||
|
||||
case DisplayMode.Normal:
|
||||
return !hitResult.IsBonus();
|
||||
@@ -106,7 +106,7 @@ namespace osu.Game.Screens.Play.HUD.JudgementCounter
|
||||
return true;
|
||||
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
throw new ArgumentOutOfRangeException(nameof(Mode), Mode.Value, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -142,7 +142,10 @@ namespace osu.Game.Screens.Play.HUD.JudgementCounter
|
||||
Normal,
|
||||
|
||||
[LocalisableDescription(typeof(JudgementCounterDisplayStrings), nameof(JudgementCounterDisplayStrings.JudgementDisplayModeAll))]
|
||||
All
|
||||
All,
|
||||
|
||||
[LocalisableDescription(typeof(JudgementCounterDisplayStrings), nameof(JudgementCounterDisplayStrings.JudgementDisplayModeMissesOnly))]
|
||||
MissesOnly,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ using osu.Framework.Allocation;
|
||||
using osu.Framework.Bindables;
|
||||
using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Framework.Localisation;
|
||||
using osu.Game.Configuration;
|
||||
using osu.Game.Localisation.HUD;
|
||||
using osu.Game.Localisation.SkinComponents;
|
||||
@@ -39,7 +38,7 @@ namespace osu.Game.Skinning.Components
|
||||
public BindableBool ShowMaxJudgement { get; } = new BindableBool(true);
|
||||
|
||||
[SettingSource(typeof(JudgementCounterDisplayStrings), nameof(JudgementCounterDisplayStrings.JudgementDisplayMode))]
|
||||
public Bindable<DisplayMode> Mode { get; } = new Bindable<DisplayMode>();
|
||||
public Bindable<JudgementCounterDisplay.DisplayMode> Mode { get; } = new Bindable<JudgementCounterDisplay.DisplayMode>();
|
||||
|
||||
[SettingSource(typeof(JudgementCounterDisplayStrings), nameof(JudgementCounterDisplayStrings.FlowDirection))]
|
||||
public Bindable<Direction> FlowDirection { get; } = new Bindable<Direction>();
|
||||
@@ -119,18 +118,19 @@ namespace osu.Game.Skinning.Components
|
||||
return false;
|
||||
|
||||
var hitResult = counter.Result.Types.First();
|
||||
if (hitResult.IsBasic())
|
||||
return true;
|
||||
|
||||
switch (Mode.Value)
|
||||
{
|
||||
case DisplayMode.Simple:
|
||||
return false;
|
||||
case JudgementCounterDisplay.DisplayMode.MissesOnly:
|
||||
return hitResult.IsMiss();
|
||||
|
||||
case DisplayMode.Normal:
|
||||
case JudgementCounterDisplay.DisplayMode.Simple:
|
||||
return hitResult.IsBasic();
|
||||
|
||||
case JudgementCounterDisplay.DisplayMode.Normal:
|
||||
return !hitResult.IsBonus();
|
||||
|
||||
case DisplayMode.All:
|
||||
case JudgementCounterDisplay.DisplayMode.All:
|
||||
return true;
|
||||
|
||||
default:
|
||||
@@ -153,18 +153,6 @@ namespace osu.Game.Skinning.Components
|
||||
}
|
||||
}
|
||||
|
||||
public enum DisplayMode
|
||||
{
|
||||
[LocalisableDescription(typeof(JudgementCounterDisplayStrings), nameof(JudgementCounterDisplayStrings.JudgementDisplayModeSimple))]
|
||||
Simple,
|
||||
|
||||
[LocalisableDescription(typeof(JudgementCounterDisplayStrings), nameof(JudgementCounterDisplayStrings.JudgementDisplayModeNormal))]
|
||||
Normal,
|
||||
|
||||
[LocalisableDescription(typeof(JudgementCounterDisplayStrings), nameof(JudgementCounterDisplayStrings.JudgementDisplayModeAll))]
|
||||
All
|
||||
}
|
||||
|
||||
public bool UsesFixedAnchor { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user