1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 08:07:24 +08:00

Removed gradient from test case, modified DragBar to allow access to what's needed in the progress bar, styled the progress bar

This commit is contained in:
DrabWeb 2017-02-09 16:28:40 -04:00
parent 50f93bc215
commit 7fea233181
6 changed files with 86 additions and 61 deletions

View File

@ -22,11 +22,6 @@ namespace osu.Desktop.VisualTests
{
base.Reset();
Add(new Box
{
ColourInfo = ColourInfo.GradientVertical(Color4.WhiteSmoke, Color4.Gray),
RelativeSizeAxes = Framework.Graphics.Axes.Both,
});
Add(new SongProgress
{
Anchor = Anchor.BottomCentre,

View File

@ -11,7 +11,8 @@ namespace osu.Game.Overlays
{
public class DragBar : Container
{
private Box fill;
protected Container fillContainer;
protected Box fill;
public Action<float> SeekRequested;
private bool isDragging;
@ -24,7 +25,7 @@ namespace osu.Game.Overlays
{
enabled = value;
if (!enabled)
fill.Width = 0;
fillContainer.Width = 0;
}
}
@ -34,12 +35,19 @@ namespace osu.Game.Overlays
Children = new Drawable[]
{
fill = new Box()
fillContainer = new Container
{
Origin = Anchor.CentreLeft,
Anchor = Anchor.CentreLeft,
Origin = Anchor.BottomLeft,
Anchor = Anchor.BottomLeft,
RelativeSizeAxes = Axes.Both,
Width = 0
Width = 0,
Children = new Drawable[]
{
fill = new Box
{
RelativeSizeAxes = Axes.Both
}
}
}
};
}
@ -48,7 +56,7 @@ namespace osu.Game.Overlays
{
if (isDragging || !IsEnabled) return;
fill.Width = position;
fillContainer.Width = position;
}
private void seek(InputState state)
@ -56,7 +64,7 @@ namespace osu.Game.Overlays
if (!IsEnabled) return;
float seekLocation = state.Mouse.Position.X / DrawWidth;
SeekRequested?.Invoke(seekLocation);
fill.Width = seekLocation;
fillContainer.Width = seekLocation;
}
protected override bool OnMouseDown(InputState state, MouseDownEventArgs args)

View File

@ -16,9 +16,8 @@ namespace osu.Game.Screens.Play
{
public class SongProgress : Container
{
private const int graph_height = 34;
private const int handle_height = 25;
private const int handle_width = 14;
public static readonly int BAR_HEIGHT = 5;
public static readonly int GRAPH_HEIGHT = 34;
public static readonly Color4 FILL_COLOUR = new Color4(221, 255, 255, 255);
public static readonly Color4 GLOW_COLOUR = new Color4(221, 255, 255, 150);
@ -40,15 +39,20 @@ namespace osu.Game.Screens.Play
{
float currentProgress = (float)(current.Track.CurrentTime / current.Track.Length);
progress.IsEnabled = true;
progress.UpdatePosition(currentProgress);
graph.Progress = (int)(graph.ColumnCount * currentProgress);
}
else
{
progress.IsEnabled = false;
}
}
public SongProgress()
{
RelativeSizeAxes = Axes.X;
Height = SongProgressBar.BAR_HEIGHT + graph_height + handle_height;
Height = BAR_HEIGHT + GRAPH_HEIGHT + SongProgressBar.HANDLE_SIZE.Y;
Children = new Drawable[]
{
@ -57,56 +61,22 @@ namespace osu.Game.Screens.Play
RelativeSizeAxes = Axes.X,
Origin = Anchor.BottomCentre,
Anchor = Anchor.BottomCentre,
Height = graph_height,
Height = GRAPH_HEIGHT,
Margin = new MarginPadding
{
Bottom = SongProgressBar.BAR_HEIGHT
Bottom = BAR_HEIGHT
}
},
progress = new SongProgressBar
{
Origin = Anchor.BottomCentre,
Anchor = Anchor.BottomCentre,
IsEnabled = true,
SeekRequested = delegate (float position)
{
Framework.Logging.Logger.Log($@"Seeked to {position}");
current?.Track?.Seek(current.Track.Length * position);
current?.Track?.Start();
}
}
//handle = new Container
// {
// Origin = Anchor.BottomLeft,
// Anchor = Anchor.BottomLeft,
// Width = 2,
// Height = bar_height + graph_height,
// Position = new Vector2(2, 0),
// Children = new Drawable[]
// {
// new Box
// {
// RelativeSizeAxes = Axes.Both,
// Colour = Color4.White
// },
// new Container
// {
// Origin = Anchor.BottomCentre,
// Anchor = Anchor.TopCentre,
// Width = handle_width,
// Height = handle_height,
// CornerRadius = 5,
// Masking = true,
// Children = new Drawable[]
// {
// new Box
// {
// RelativeSizeAxes = Axes.Both,
// Colour = Color4.White
// }
// }
// }
// }
// }
};
}
}

View File

@ -1,15 +1,66 @@
using System;
using osu.Game.Overlays;
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using OpenTK;
using OpenTK.Graphics;
using osu.Game.Overlays;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.Primitives;
namespace osu.Game.Screens.Play
{
public class SongProgressBar : DragBar
{
public static readonly int BAR_HEIGHT = 5;
public static readonly Vector2 HANDLE_SIZE = new Vector2(14, 25);
private Container handle;
public SongProgressBar()
{
Colour = SongProgress.FILL_COLOUR;
Height = BAR_HEIGHT;
fill.Colour = SongProgress.FILL_COLOUR;
Height = SongProgress.BAR_HEIGHT;
Add(new Box
{
RelativeSizeAxes = Axes.Both,
Colour = Color4.Black,
Alpha = 0.5f,
Depth = 1
});
fillContainer.Add(handle = new Container
{
Origin = Anchor.BottomRight,
Anchor = Anchor.BottomRight,
Width = 2,
Height = SongProgress.BAR_HEIGHT + SongProgress.GRAPH_HEIGHT,
Colour = Color4.White,
Position = new Vector2(2, 0),
Children = new Drawable[]
{
new Box
{
RelativeSizeAxes = Axes.Both,
},
new Container
{
Origin = Anchor.BottomCentre,
Anchor = Anchor.TopCentre,
Size = HANDLE_SIZE,
CornerRadius = 5,
Masking = true,
Children = new Drawable[]
{
new Box
{
RelativeSizeAxes = Axes.Both,
Colour = Color4.White
}
}
}
}
});
}
}
}

View File

@ -71,7 +71,7 @@ namespace osu.Game.Screens.Play
base.Update();
if (DrawWidth == lastDrawWidth) return;
//recreateGraph();
recreateGraph();
lastDrawWidth = DrawWidth;
}

View File

@ -8,6 +8,7 @@ using osu.Game.Graphics;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.Transformations;
namespace osu.Game.Screens.Play
{