mirror of
https://github.com/osukey/osukey.git
synced 2025-07-02 00:40:09 +09:00
Increase visibility of osu!mania long notes
This commit is contained in:
@ -111,6 +111,18 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
|
|||||||
bodyPiece.Height = DrawHeight - Head.Height / 2 + Tail.Height / 2;
|
bodyPiece.Height = DrawHeight - Head.Height / 2 + Tail.Height / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void BeginHold()
|
||||||
|
{
|
||||||
|
holdStartTime = Time.Current;
|
||||||
|
bodyPiece.Hitting = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void EndHold()
|
||||||
|
{
|
||||||
|
holdStartTime = null;
|
||||||
|
bodyPiece.Hitting = false;
|
||||||
|
}
|
||||||
|
|
||||||
public bool OnPressed(ManiaAction action)
|
public bool OnPressed(ManiaAction action)
|
||||||
{
|
{
|
||||||
// Make sure the action happened within the body of the hold note
|
// Make sure the action happened within the body of the hold note
|
||||||
@ -123,8 +135,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
|
|||||||
// The user has pressed during the body of the hold note, after the head note and its hit windows have passed
|
// The user has pressed during the body of the hold note, after the head note and its hit windows have passed
|
||||||
// and within the limited range of the above if-statement. This state will be managed by the head note if the
|
// and within the limited range of the above if-statement. This state will be managed by the head note if the
|
||||||
// user has pressed during the hit windows of the head note.
|
// user has pressed during the hit windows of the head note.
|
||||||
holdStartTime = Time.Current;
|
BeginHold();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,7 +148,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
|
|||||||
if (action != Action.Value)
|
if (action != Action.Value)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
holdStartTime = null;
|
EndHold();
|
||||||
|
|
||||||
// If the key has been released too early, the user should not receive full score for the release
|
// If the key has been released too early, the user should not receive full score for the release
|
||||||
if (!Tail.IsHit)
|
if (!Tail.IsHit)
|
||||||
@ -170,7 +181,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables
|
|||||||
|
|
||||||
// The head note also handles early hits before the body, but we want accurate early hits to count as the body being held
|
// The head note also handles early hits before the body, but we want accurate early hits to count as the body being held
|
||||||
// The body doesn't handle these early early hits, so we have to explicitly set the holding state here
|
// The body doesn't handle these early early hits, so we have to explicitly set the holding state here
|
||||||
holdNote.holdStartTime = Time.Current;
|
holdNote.BeginHold();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces
|
|||||||
background = new Box { RelativeSizeAxes = Axes.Both },
|
background = new Box { RelativeSizeAxes = Axes.Both },
|
||||||
foreground = new BufferedContainer
|
foreground = new BufferedContainer
|
||||||
{
|
{
|
||||||
|
Blending = BlendingMode.Additive,
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
CacheDrawnFrameBuffer = true,
|
CacheDrawnFrameBuffer = true,
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
@ -73,6 +74,7 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Color4 accentColour;
|
private Color4 accentColour;
|
||||||
|
|
||||||
public Color4 AccentColour
|
public Color4 AccentColour
|
||||||
{
|
{
|
||||||
get { return accentColour; }
|
get { return accentColour; }
|
||||||
@ -86,6 +88,16 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool Hitting
|
||||||
|
{
|
||||||
|
get { return hitting; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
hitting = value;
|
||||||
|
updateAccentColour();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Cached subtractionCache = new Cached();
|
private Cached subtractionCache = new Cached();
|
||||||
|
|
||||||
public override bool Invalidate(Invalidation invalidation = Invalidation.All, Drawable source = null, bool shallPropagate = true)
|
public override bool Invalidate(Invalidation invalidation = Invalidation.All, Drawable source = null, bool shallPropagate = true)
|
||||||
@ -118,13 +130,22 @@ namespace osu.Game.Rulesets.Mania.Objects.Drawables.Pieces
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool hitting;
|
||||||
|
|
||||||
private void updateAccentColour()
|
private void updateAccentColour()
|
||||||
{
|
{
|
||||||
if (!IsLoaded)
|
if (!IsLoaded)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
foreground.Colour = AccentColour.Opacity(0.9f);
|
foreground.Colour = AccentColour.Opacity(0.5f);
|
||||||
background.Colour = AccentColour.Opacity(0.6f);
|
background.Colour = AccentColour.Opacity(0.7f);
|
||||||
|
|
||||||
|
if (hitting)
|
||||||
|
foreground.FadeColour(AccentColour.Lighten(0.3f), 50).Then().FadeColour(foreground.Colour, 50).Loop();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreground.ClearTransforms(false, nameof(foreground.Colour));
|
||||||
|
}
|
||||||
|
|
||||||
subtractionCache.Invalidate();
|
subtractionCache.Invalidate();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user