mirror of
https://github.com/osukey/osukey.git
synced 2025-05-03 12:47:28 +09:00
Add hit lighting (#6144)
Add hit lighting Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
This commit is contained in:
commit
3abcd898a6
@ -1,22 +1,66 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// 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.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Game.Configuration;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
using osu.Game.Rulesets.Judgements;
|
using osu.Game.Rulesets.Judgements;
|
||||||
using osu.Game.Rulesets.Objects.Drawables;
|
using osu.Game.Rulesets.Objects.Drawables;
|
||||||
|
using osu.Game.Rulesets.Scoring;
|
||||||
|
using osu.Game.Skinning;
|
||||||
|
using osuTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
namespace osu.Game.Rulesets.Osu.Objects.Drawables
|
||||||
{
|
{
|
||||||
public class DrawableOsuJudgement : DrawableJudgement
|
public class DrawableOsuJudgement : DrawableJudgement
|
||||||
{
|
{
|
||||||
|
private SkinnableSprite lighting;
|
||||||
|
private Bindable<Color4> lightingColour;
|
||||||
|
|
||||||
public DrawableOsuJudgement(JudgementResult result, DrawableHitObject judgedObject)
|
public DrawableOsuJudgement(JudgementResult result, DrawableHitObject judgedObject)
|
||||||
: base(result, judgedObject)
|
: base(result, judgedObject)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(OsuConfigManager config)
|
||||||
|
{
|
||||||
|
if (config.Get<bool>(OsuSetting.HitLighting) && Result.Type != HitResult.Miss)
|
||||||
|
{
|
||||||
|
AddInternal(lighting = new SkinnableSprite("lighting")
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Blending = BlendingParameters.Additive,
|
||||||
|
Depth = float.MaxValue
|
||||||
|
});
|
||||||
|
|
||||||
|
if (JudgedObject != null)
|
||||||
|
{
|
||||||
|
lightingColour = JudgedObject.AccentColour.GetBoundCopy();
|
||||||
|
lightingColour.BindValueChanged(colour => lighting.Colour = colour.NewValue, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lighting.Colour = Color4.White;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override double FadeOutDelay => lighting == null ? base.FadeOutDelay : 1400;
|
||||||
|
|
||||||
protected override void ApplyHitAnimations()
|
protected override void ApplyHitAnimations()
|
||||||
{
|
{
|
||||||
|
if (lighting != null)
|
||||||
|
{
|
||||||
|
JudgementBody.Delay(FadeInDuration).FadeOut(400);
|
||||||
|
|
||||||
|
lighting.ScaleTo(0.8f).ScaleTo(1.2f, 600, Easing.Out);
|
||||||
|
lighting.FadeIn(200).Then().Delay(200).FadeOut(1000);
|
||||||
|
}
|
||||||
|
|
||||||
JudgementText?.TransformSpacingTo(new Vector2(14, 0), 1800, Easing.OutQuint);
|
JudgementText?.TransformSpacingTo(new Vector2(14, 0), 1800, Easing.OutQuint);
|
||||||
base.ApplyHitAnimations();
|
base.ApplyHitAnimations();
|
||||||
}
|
}
|
||||||
|
@ -81,6 +81,8 @@ namespace osu.Game.Configuration
|
|||||||
Set(OsuSetting.DimLevel, 0.3, 0, 1, 0.01);
|
Set(OsuSetting.DimLevel, 0.3, 0, 1, 0.01);
|
||||||
Set(OsuSetting.BlurLevel, 0, 0, 1, 0.01);
|
Set(OsuSetting.BlurLevel, 0, 0, 1, 0.01);
|
||||||
|
|
||||||
|
Set(OsuSetting.HitLighting, true);
|
||||||
|
|
||||||
Set(OsuSetting.ShowInterface, true);
|
Set(OsuSetting.ShowInterface, true);
|
||||||
Set(OsuSetting.ShowHealthDisplayWhenCantFail, true);
|
Set(OsuSetting.ShowHealthDisplayWhenCantFail, true);
|
||||||
Set(OsuSetting.KeyOverlay, false);
|
Set(OsuSetting.KeyOverlay, false);
|
||||||
@ -180,6 +182,7 @@ namespace osu.Game.Configuration
|
|||||||
ScalingSizeX,
|
ScalingSizeX,
|
||||||
ScalingSizeY,
|
ScalingSizeY,
|
||||||
UIScale,
|
UIScale,
|
||||||
IntroSequence
|
IntroSequence,
|
||||||
|
HitLighting
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,11 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics
|
|||||||
LabelText = "Video",
|
LabelText = "Video",
|
||||||
Bindable = config.GetBindable<bool>(OsuSetting.ShowVideoBackground)
|
Bindable = config.GetBindable<bool>(OsuSetting.ShowVideoBackground)
|
||||||
},
|
},
|
||||||
|
new SettingsCheckbox
|
||||||
|
{
|
||||||
|
LabelText = "Hit Lighting",
|
||||||
|
Bindable = config.GetBindable<bool>(OsuSetting.HitLighting)
|
||||||
|
},
|
||||||
new SettingsEnumDropdown<ScreenshotFormat>
|
new SettingsEnumDropdown<ScreenshotFormat>
|
||||||
{
|
{
|
||||||
LabelText = "Screenshot format",
|
LabelText = "Screenshot format",
|
||||||
|
@ -34,10 +34,14 @@ namespace osu.Game.Rulesets.Judgements
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Duration of initial fade in.
|
/// Duration of initial fade in.
|
||||||
/// Default fade out will start immediately after this duration.
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected virtual double FadeInDuration => 100;
|
protected virtual double FadeInDuration => 100;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Duration to wait until fade out begins. Defaults to <see cref="FadeInDuration"/>.
|
||||||
|
/// </summary>
|
||||||
|
protected virtual double FadeOutDelay => FadeInDuration;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a drawable which visualises a <see cref="Judgements.Judgement"/>.
|
/// Creates a drawable which visualises a <see cref="Judgements.Judgement"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -76,7 +80,7 @@ namespace osu.Game.Rulesets.Judgements
|
|||||||
JudgementBody.ScaleTo(0.9f);
|
JudgementBody.ScaleTo(0.9f);
|
||||||
JudgementBody.ScaleTo(1, 500, Easing.OutElastic);
|
JudgementBody.ScaleTo(1, 500, Easing.OutElastic);
|
||||||
|
|
||||||
this.Delay(FadeInDuration).FadeOut(400);
|
this.Delay(FadeOutDelay).FadeOut(400);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user