Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite BreakOverlay to work with rewinding #2160

Merged
merged 6 commits into from Mar 12, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion osu-framework
2 changes: 1 addition & 1 deletion osu.Game.Tests/Visual/TestCaseBreakOverlay.cs
Expand Up @@ -3,9 +3,9 @@

using osu.Framework.Timing;
using osu.Game.Beatmaps.Timing;
using osu.Game.Screens.Play.BreaksOverlay;
using System.Collections.Generic;
using NUnit.Framework;
using osu.Game.Screens.Play;

namespace osu.Game.Tests.Visual
{
Expand Down
@@ -1,13 +1,13 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE

using OpenTK;
using osu.Framework.Graphics.Containers;
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics;
using osu.Framework.Allocation;
using OpenTK;

namespace osu.Game.Screens.Play.BreaksOverlay
namespace osu.Game.Screens.Play.Break
{
public class BlurredIcon : BufferedContainer
{
Expand Down
@@ -1,18 +1,15 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE

using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics;
using OpenTK;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics.Containers;
using osu.Game.Beatmaps.Timing;
using OpenTK;

namespace osu.Game.Screens.Play.BreaksOverlay
namespace osu.Game.Screens.Play.Break
{
public class ArrowsOverlay : VisibilityContainer
public class BreakArrows : CompositeDrawable
{
private const double fade_duration = BreakPeriod.MIN_BREAK_DURATION / 2;

private const int glow_icon_size = 60;
private const int glow_icon_blur_sigma = 10;
private const float glow_icon_final_offset = 0.22f;
Expand All @@ -29,10 +26,10 @@ public class ArrowsOverlay : VisibilityContainer
private readonly BlurredIcon leftBlurredIcon;
private readonly BlurredIcon rightBlurredIcon;

public ArrowsOverlay()
public BreakArrows()
{
RelativeSizeAxes = Axes.Both;
Children = new Drawable[]
InternalChildren = new Drawable[]
{
leftGlowIcon = new GlowIcon
{
Expand Down Expand Up @@ -82,22 +79,22 @@ public ArrowsOverlay()
};
}

protected override void PopIn()
public void Show(double duration)
{
leftGlowIcon.MoveToX(-glow_icon_final_offset, fade_duration, Easing.OutQuint);
rightGlowIcon.MoveToX(glow_icon_final_offset, fade_duration, Easing.OutQuint);
leftGlowIcon.MoveToX(-glow_icon_final_offset, duration, Easing.OutQuint);
rightGlowIcon.MoveToX(glow_icon_final_offset, duration, Easing.OutQuint);

leftBlurredIcon.MoveToX(-blurred_icon_final_offset, fade_duration, Easing.OutQuint);
rightBlurredIcon.MoveToX(blurred_icon_final_offset, fade_duration, Easing.OutQuint);
leftBlurredIcon.MoveToX(-blurred_icon_final_offset, duration, Easing.OutQuint);
rightBlurredIcon.MoveToX(blurred_icon_final_offset, duration, Easing.OutQuint);
}

protected override void PopOut()
public void Hide(double duration)
{
leftGlowIcon.MoveToX(-glow_icon_offscreen_offset, fade_duration, Easing.OutQuint);
rightGlowIcon.MoveToX(glow_icon_offscreen_offset, fade_duration, Easing.OutQuint);
leftGlowIcon.MoveToX(-glow_icon_offscreen_offset, duration, Easing.OutQuint);
rightGlowIcon.MoveToX(glow_icon_offscreen_offset, duration, Easing.OutQuint);

leftBlurredIcon.MoveToX(-blurred_icon_offscreen_offset, fade_duration, Easing.OutQuint);
rightBlurredIcon.MoveToX(blurred_icon_offscreen_offset, fade_duration, Easing.OutQuint);
leftBlurredIcon.MoveToX(-blurred_icon_offscreen_offset, duration, Easing.OutQuint);
rightBlurredIcon.MoveToX(blurred_icon_offscreen_offset, duration, Easing.OutQuint);
}
}
}
@@ -1,24 +1,21 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE

using OpenTK;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics.Sprites;
using osu.Game.Rulesets.Scoring;
using osu.Game.Beatmaps.Timing;
using OpenTK;

namespace osu.Game.Screens.Play.BreaksOverlay
namespace osu.Game.Screens.Play.Break
{
public class InfoContainer : VisibilityContainer
public class BreakInfo : Container
{
private const double fade_duration = BreakPeriod.MIN_BREAK_DURATION / 2;
public PercentageBreakInfoLine AccuracyDisplay;
public BreakInfoLine<int> RankDisplay;
public BreakInfoLine<ScoreRank> GradeDisplay;

public PercentageInfoLine AccuracyDisplay;
public InfoLine<int> RankDisplay;
public InfoLine<ScoreRank> GradeDisplay;

public InfoContainer()
public BreakInfo()
{
AutoSizeAxes = Axes.Both;
Child = new FillFlowContainer
Expand All @@ -43,16 +40,13 @@ public InfoContainer()
Direction = FillDirection.Vertical,
Children = new Drawable[]
{
AccuracyDisplay = new PercentageInfoLine("Accuracy"),
RankDisplay = new InfoLine<int>("Rank"),
GradeDisplay = new InfoLine<ScoreRank>("Grade"),
AccuracyDisplay = new PercentageBreakInfoLine("Accuracy"),
RankDisplay = new BreakInfoLine<int>("Rank"),
GradeDisplay = new BreakInfoLine<ScoreRank>("Grade"),
},
}
},
};
}

protected override void PopIn() => this.FadeIn(fade_duration);
protected override void PopOut() => this.FadeOut(fade_duration);
}
}
Expand Up @@ -8,9 +8,9 @@
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;

namespace osu.Game.Screens.Play.BreaksOverlay
namespace osu.Game.Screens.Play.Break
{
public class InfoLine<T> : Container
public class BreakInfoLine<T> : Container
where T : struct
{
private const int margin = 2;
Expand All @@ -22,7 +22,7 @@ public class InfoLine<T> : Container

private readonly string prefix;

public InfoLine(string name, string prefix = @"")
public BreakInfoLine(string name, string prefix = @"")
{
this.prefix = prefix;

Expand Down Expand Up @@ -71,9 +71,9 @@ private void load(OsuColour colours)
}
}

public class PercentageInfoLine : InfoLine<double>
public class PercentageBreakInfoLine : BreakInfoLine<double>
{
public PercentageInfoLine(string name, string prefix = "") : base(name, prefix)
public PercentageBreakInfoLine(string name, string prefix = "") : base(name, prefix)
{
}

Expand Down
@@ -1,13 +1,13 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE

using osu.Framework.Graphics.Containers;
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics;
using OpenTK;
using osu.Framework.Allocation;

namespace osu.Game.Screens.Play.BreaksOverlay
namespace osu.Game.Screens.Play.Break
{
public class GlowIcon : Container
{
Expand All @@ -16,24 +16,24 @@ public class GlowIcon : Container

public override Vector2 Size
{
get { return base.Size; }
set
{
blurredIcon.Size = spriteIcon.Size = value;
blurredIcon.ForceRedraw();
}
get { return base.Size; }
}

public Vector2 BlurSigma
{
set { blurredIcon.BlurSigma = value; }
get { return blurredIcon.BlurSigma; }
set { blurredIcon.BlurSigma = value; }
}

public FontAwesome Icon
{
set { spriteIcon.Icon = blurredIcon.Icon = value; }
get { return spriteIcon.Icon; }
set { spriteIcon.Icon = blurredIcon.Icon = value; }
}

public GlowIcon()
Expand Down
@@ -1,26 +1,24 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE

using OpenTK.Graphics;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Colour;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
using osu.Game.Beatmaps.Timing;
using OpenTK.Graphics;

namespace osu.Game.Screens.Play.BreaksOverlay
namespace osu.Game.Screens.Play.Break
{
public class LetterboxOverlay : VisibilityContainer
public class LetterboxOverlay : CompositeDrawable
{
private const double fade_duration = BreakPeriod.MIN_BREAK_DURATION / 2;
private const int height = 350;

private static readonly Color4 transparent_black = new Color4(0, 0, 0, 0);

public LetterboxOverlay()
{
RelativeSizeAxes = Axes.Both;
Children = new Drawable[]
InternalChildren = new Drawable[]
{
new Container
{
Expand Down Expand Up @@ -48,8 +46,5 @@ public LetterboxOverlay()
}
};
}

protected override void PopIn() => this.FadeIn(fade_duration);
protected override void PopOut() => this.FadeOut(fade_duration);
}
}
@@ -1,18 +1,15 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE

using osu.Game.Graphics.Sprites;
using osu.Framework.Graphics;
using System;
using osu.Game.Beatmaps.Timing;
using osu.Framework.Graphics;
using osu.Framework.Graphics.UserInterface;
using osu.Game.Graphics.Sprites;

namespace osu.Game.Screens.Play.BreaksOverlay
namespace osu.Game.Screens.Play.Break
{
public class RemainingTimeCounter : Counter
{
private const double fade_duration = BreakPeriod.MIN_BREAK_DURATION / 2;

private readonly OsuSpriteText counter;

public RemainingTimeCounter()
Expand All @@ -25,13 +22,8 @@ public RemainingTimeCounter()
TextSize = 33,
Font = "Venera",
};

Alpha = 0;
}

protected override void OnCountChanged(double count) => counter.Text = ((int)Math.Ceiling(count / 1000)).ToString();

public override void Show() => this.FadeIn(fade_duration);
public override void Hide() => this.FadeOut(fade_duration);
}
}