1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-28 01:47:33 +08:00

Merge pull request #15175 from peppy/fail-animation-flash-controlled-by-setting

Don't flash screen red on fail if the user has disabled red tinting
This commit is contained in:
Dan Balasescu 2021-10-18 15:27:10 +09:00 committed by GitHub
commit 8643c725cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 7 deletions

View File

@ -20,14 +20,15 @@ namespace osu.Game.Tests.Visual.Gameplay
/// </summary> /// </summary>
public abstract class TestSceneAllRulesetPlayers : RateAdjustedBeatmapTestScene public abstract class TestSceneAllRulesetPlayers : RateAdjustedBeatmapTestScene
{ {
protected Player Player; protected Player Player { get; private set; }
protected OsuConfigManager Config { get; private set; }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load(RulesetStore rulesets) private void load(RulesetStore rulesets)
{ {
OsuConfigManager manager; Dependencies.Cache(Config = new OsuConfigManager(LocalStorage));
Dependencies.Cache(manager = new OsuConfigManager(LocalStorage)); Config.GetBindable<double>(OsuSetting.DimLevel).Value = 1.0;
manager.GetBindable<double>(OsuSetting.DimLevel).Value = 1.0;
} }
[Test] [Test]

View File

@ -2,7 +2,9 @@
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System; using System;
using NUnit.Framework;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Game.Configuration;
using osu.Game.Rulesets; using osu.Game.Rulesets;
using osu.Game.Rulesets.Mods; using osu.Game.Rulesets.Mods;
using osu.Game.Screens.Play; using osu.Game.Screens.Play;
@ -17,6 +19,14 @@ namespace osu.Game.Tests.Visual.Gameplay
return new FailPlayer(); return new FailPlayer();
} }
[Test]
public void TestOsuWithoutRedTint()
{
AddStep("Disable red tint", () => Config.SetValue(OsuSetting.FadePlayfieldWhenHealthLow, false));
TestOsu();
AddStep("Enable red tint", () => Config.SetValue(OsuSetting.FadePlayfieldWhenHealthLow, true));
}
protected override void AddCheckSteps() protected override void AddCheckSteps()
{ {
AddUntilStep("wait for fail", () => Player.HasFailed); AddUntilStep("wait for fail", () => Player.HasFailed);

View File

@ -16,6 +16,7 @@ using osu.Framework.Graphics.Shapes;
using osu.Framework.Utils; using osu.Framework.Utils;
using osu.Game.Audio.Effects; using osu.Game.Audio.Effects;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Configuration;
using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Objects.Drawables;
using osuTK; using osuTK;
using osuTK.Graphics; using osuTK.Graphics;
@ -35,7 +36,7 @@ namespace osu.Game.Screens.Play
private Container filters; private Container filters;
private Box failFlash; private Box redFlashLayer;
private Track track; private Track track;
@ -46,6 +47,9 @@ namespace osu.Game.Screens.Play
private Sample failSample; private Sample failSample;
[Resolved]
private OsuConfigManager config { get; set; }
protected override Container<Drawable> Content { get; } = new Container protected override Container<Drawable> Content { get; } = new Container
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
@ -77,7 +81,7 @@ namespace osu.Game.Screens.Play
}, },
}, },
Content, Content,
failFlash = new Box redFlashLayer = new Box
{ {
Colour = Color4.Red, Colour = Color4.Red,
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
@ -114,7 +118,8 @@ namespace osu.Game.Screens.Play
applyToPlayfield(drawableRuleset.Playfield); applyToPlayfield(drawableRuleset.Playfield);
drawableRuleset.Playfield.HitObjectContainer.FadeOut(duration / 2); drawableRuleset.Playfield.HitObjectContainer.FadeOut(duration / 2);
failFlash.FadeOutFromOne(1000); if (config.Get<bool>(OsuSetting.FadePlayfieldWhenHealthLow))
redFlashLayer.FadeOutFromOne(1000);
Content.Masking = true; Content.Masking = true;