2017-03-25 06:02:24 +08:00
|
|
|
|
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
|
|
|
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
|
|
|
|
2017-03-26 06:33:03 +08:00
|
|
|
|
using OpenTK;
|
|
|
|
|
using OpenTK.Graphics;
|
|
|
|
|
using osu.Framework.Allocation;
|
2017-03-25 06:02:24 +08:00
|
|
|
|
using osu.Framework.Graphics;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
using osu.Framework.Graphics.Colour;
|
|
|
|
|
using osu.Framework.Graphics.Containers;
|
2017-03-25 06:02:24 +08:00
|
|
|
|
using osu.Framework.Graphics.Primitives;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
using osu.Framework.Graphics.Sprites;
|
|
|
|
|
using osu.Game.Database;
|
2017-03-25 06:02:24 +08:00
|
|
|
|
using osu.Game.Graphics;
|
2017-03-28 23:12:54 +08:00
|
|
|
|
using System.Collections.Generic;
|
2017-03-29 22:10:07 +08:00
|
|
|
|
using System.Globalization;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
using System.Linq;
|
2017-03-25 06:02:24 +08:00
|
|
|
|
|
2017-03-30 23:32:18 +08:00
|
|
|
|
namespace osu.Game.Screens.Select.Details
|
2017-03-25 06:02:24 +08:00
|
|
|
|
{
|
2017-03-30 23:32:18 +08:00
|
|
|
|
public class BeatmapDetails : Container
|
2017-03-25 06:02:24 +08:00
|
|
|
|
{
|
2017-03-29 22:00:29 +08:00
|
|
|
|
private readonly SpriteText description;
|
|
|
|
|
private readonly SpriteText source;
|
|
|
|
|
private readonly FillFlowContainer<SpriteText> tags;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
|
2017-03-29 22:00:29 +08:00
|
|
|
|
private readonly DifficultyRow circleSize;
|
|
|
|
|
private readonly DifficultyRow drainRate;
|
|
|
|
|
private readonly DifficultyRow overallDifficulty;
|
|
|
|
|
private readonly DifficultyRow approachRate;
|
|
|
|
|
private readonly DifficultyRow stars;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
|
2017-03-30 23:32:18 +08:00
|
|
|
|
private readonly BeatmapDetailsBar ratingsBar;
|
2017-03-29 22:00:29 +08:00
|
|
|
|
private readonly SpriteText negativeRatings;
|
|
|
|
|
private readonly SpriteText positiveRatings;
|
2017-03-30 23:32:18 +08:00
|
|
|
|
private readonly BeatmapDetailsGraph ratingsGraph;
|
2017-03-28 23:12:54 +08:00
|
|
|
|
|
2017-03-30 23:32:18 +08:00
|
|
|
|
private readonly BeatmapDetailsGraph retryGraph;
|
|
|
|
|
private readonly BeatmapDetailsGraph failGraph;
|
2017-03-29 02:18:56 +08:00
|
|
|
|
|
2017-03-26 06:33:03 +08:00
|
|
|
|
private BeatmapInfo beatmap;
|
|
|
|
|
public BeatmapInfo Beatmap
|
2017-03-25 06:02:24 +08:00
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
2017-03-26 06:33:03 +08:00
|
|
|
|
return beatmap;
|
2017-03-25 06:02:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
2017-03-26 06:33:03 +08:00
|
|
|
|
if (beatmap == value) return;
|
|
|
|
|
beatmap = value;
|
|
|
|
|
description.Text = beatmap.Version;
|
|
|
|
|
source.Text = beatmap.Metadata.Source;
|
2017-03-29 20:48:43 +08:00
|
|
|
|
tags.Children = beatmap.Metadata.Tags?.Split(' ').Select(text => new SpriteText
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
|
|
|
|
Text = text,
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = "Exo2.0-Medium",
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
circleSize.Value = beatmap.Difficulty.CircleSize;
|
|
|
|
|
drainRate.Value = beatmap.Difficulty.DrainRate;
|
|
|
|
|
overallDifficulty.Value = beatmap.Difficulty.OverallDifficulty;
|
2017-03-28 23:12:54 +08:00
|
|
|
|
approachRate.Value = beatmap.Difficulty.ApproachRate;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
stars.Value = (float) beatmap.StarDifficulty;
|
2017-03-25 06:02:24 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-28 23:12:54 +08:00
|
|
|
|
private List<int> ratings;
|
|
|
|
|
public IEnumerable<int> Ratings
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return ratings;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
ratings = value.ToList();
|
|
|
|
|
negativeRatings.Text = ratings.GetRange(0, 5).Sum().ToString();
|
|
|
|
|
positiveRatings.Text = ratings.GetRange(5, 5).Sum().ToString();
|
|
|
|
|
ratingsBar.Length = (float)ratings.GetRange(0, 5).Sum() / ratings.Sum();
|
|
|
|
|
|
2017-03-30 23:32:18 +08:00
|
|
|
|
ratingsGraph.Values = ratings.Select(rating => (float)rating / ratings.Max());
|
2017-03-28 23:12:54 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2017-03-29 02:18:56 +08:00
|
|
|
|
|
|
|
|
|
private List<int> retries = Enumerable.Repeat(0,100).ToList();
|
|
|
|
|
public IEnumerable<int> Retries
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return retries;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
retries = value.ToList();
|
2017-03-30 23:32:18 +08:00
|
|
|
|
calcRetryAndFailGraph();
|
2017-03-29 02:18:56 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<int> fails = Enumerable.Repeat(0,100).ToList();
|
|
|
|
|
public IEnumerable<int> Fails
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return fails;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
fails = value.ToList();
|
2017-03-30 23:32:18 +08:00
|
|
|
|
calcRetryAndFailGraph();
|
2017-03-29 02:18:56 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-03-30 23:32:18 +08:00
|
|
|
|
private void calcRetryAndFailGraph()
|
2017-03-29 02:18:56 +08:00
|
|
|
|
{
|
2017-03-30 23:32:18 +08:00
|
|
|
|
failGraph.Values = fails.Select(fail => (float)fail / fails.Max());
|
|
|
|
|
List<float> retryAndFails = retries.Select((retry, index) => (float)retry + fails[index]).ToList();
|
|
|
|
|
retryGraph.Values = retryAndFails.Select(value => value / retryAndFails.Max());
|
2017-03-29 02:18:56 +08:00
|
|
|
|
}
|
2017-03-28 23:12:54 +08:00
|
|
|
|
|
2017-03-30 23:32:18 +08:00
|
|
|
|
public BeatmapDetails()
|
2017-03-25 06:02:24 +08:00
|
|
|
|
{
|
2017-03-26 06:33:03 +08:00
|
|
|
|
Children = new Drawable[]
|
2017-03-25 06:02:24 +08:00
|
|
|
|
{
|
2017-03-26 06:33:03 +08:00
|
|
|
|
new Box
|
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.Both,
|
|
|
|
|
Colour = Color4.Black,
|
|
|
|
|
Alpha = 0.5f,
|
|
|
|
|
},
|
|
|
|
|
new FillFlowContainer()
|
2017-03-25 06:02:24 +08:00
|
|
|
|
{
|
|
|
|
|
Anchor = Anchor.TopRight,
|
|
|
|
|
Origin = Anchor.TopRight,
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
Width = 0.4f,
|
|
|
|
|
Direction = FillDirection.Vertical,
|
2017-03-28 23:12:54 +08:00
|
|
|
|
Padding = new MarginPadding(10) { Top = 25 },
|
2017-03-25 06:02:24 +08:00
|
|
|
|
Children = new Drawable[]
|
|
|
|
|
{
|
|
|
|
|
new SpriteText
|
|
|
|
|
{
|
|
|
|
|
Text = "Description",
|
2017-03-26 06:33:03 +08:00
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Bold",
|
|
|
|
|
},
|
|
|
|
|
description = new SpriteText
|
|
|
|
|
{
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Medium",
|
|
|
|
|
Direction = FillDirection.Full,
|
2017-03-25 06:02:24 +08:00
|
|
|
|
},
|
|
|
|
|
new SpriteText
|
|
|
|
|
{
|
|
|
|
|
Text = "Source",
|
2017-03-26 06:33:03 +08:00
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Bold",
|
2017-03-25 06:02:24 +08:00
|
|
|
|
Margin = new MarginPadding { Top = 20 },
|
|
|
|
|
},
|
2017-03-26 06:33:03 +08:00
|
|
|
|
source = new SpriteText
|
|
|
|
|
{
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Medium",
|
|
|
|
|
Direction = FillDirection.Full,
|
|
|
|
|
},
|
2017-03-25 06:02:24 +08:00
|
|
|
|
new SpriteText
|
|
|
|
|
{
|
|
|
|
|
Text = "Tags",
|
2017-03-26 06:33:03 +08:00
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Bold",
|
2017-03-25 06:02:24 +08:00
|
|
|
|
Margin = new MarginPadding { Top = 20 },
|
|
|
|
|
},
|
|
|
|
|
tags = new FillFlowContainer<SpriteText>
|
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
Spacing = new Vector2(3,0),
|
|
|
|
|
},
|
|
|
|
|
},
|
2017-03-26 06:33:03 +08:00
|
|
|
|
},
|
2017-03-28 23:12:54 +08:00
|
|
|
|
new FillFlowContainer
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
Width = 0.6f,
|
2017-03-28 23:12:54 +08:00
|
|
|
|
Direction = FillDirection.Vertical,
|
|
|
|
|
Spacing = new Vector2(0,15),
|
|
|
|
|
Padding = new MarginPadding(10) { Top = 0 },
|
2017-03-30 23:32:18 +08:00
|
|
|
|
Children = new Drawable[]
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
2017-03-28 23:12:54 +08:00
|
|
|
|
new Container
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
2017-03-28 23:12:54 +08:00
|
|
|
|
Children = new Drawable[]
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
2017-03-28 23:12:54 +08:00
|
|
|
|
new Box
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
2017-03-28 23:12:54 +08:00
|
|
|
|
RelativeSizeAxes = Axes.Both,
|
|
|
|
|
Colour = Color4.Black,
|
|
|
|
|
Alpha = 0.5f,
|
2017-03-26 06:33:03 +08:00
|
|
|
|
},
|
2017-03-28 23:12:54 +08:00
|
|
|
|
new FillFlowContainer
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
2017-03-28 23:12:54 +08:00
|
|
|
|
Direction = FillDirection.Vertical,
|
|
|
|
|
Spacing = new Vector2(0,10),
|
|
|
|
|
Padding = new MarginPadding(15) { Top = 25 },
|
|
|
|
|
Children = new []
|
|
|
|
|
{
|
|
|
|
|
circleSize = new DifficultyRow
|
|
|
|
|
{
|
|
|
|
|
DifficultyName = "Circle Size",
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
MaxValue = 7,
|
|
|
|
|
},
|
|
|
|
|
drainRate = new DifficultyRow
|
|
|
|
|
{
|
|
|
|
|
DifficultyName = "HP Drain",
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
},
|
|
|
|
|
overallDifficulty = new DifficultyRow
|
|
|
|
|
{
|
|
|
|
|
DifficultyName = "Accuracy",
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
},
|
|
|
|
|
approachRate = new DifficultyRow
|
|
|
|
|
{
|
|
|
|
|
DifficultyName = "Approach Rate",
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
},
|
|
|
|
|
stars = new DifficultyRow
|
|
|
|
|
{
|
|
|
|
|
DifficultyName = "Star Difficulty",
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
},
|
|
|
|
|
},
|
2017-03-26 06:33:03 +08:00
|
|
|
|
},
|
2017-03-28 23:12:54 +08:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
new Container
|
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
Children = new Drawable[]
|
|
|
|
|
{
|
|
|
|
|
new Box
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
2017-03-28 23:12:54 +08:00
|
|
|
|
RelativeSizeAxes = Axes.Both,
|
|
|
|
|
Colour = Color4.Black,
|
|
|
|
|
Alpha = 0.5f,
|
2017-03-26 06:33:03 +08:00
|
|
|
|
},
|
2017-03-28 23:12:54 +08:00
|
|
|
|
new FillFlowContainer
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
2017-03-28 23:12:54 +08:00
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
Direction = FillDirection.Vertical,
|
|
|
|
|
Padding = new MarginPadding(15) { Top = 25, Bottom = 0 },
|
|
|
|
|
Children = new Drawable[]
|
|
|
|
|
{
|
|
|
|
|
new SpriteText
|
|
|
|
|
{
|
|
|
|
|
Text = "User Rating",
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Medium",
|
|
|
|
|
Anchor = Anchor.TopCentre,
|
|
|
|
|
Origin = Anchor.TopCentre,
|
|
|
|
|
},
|
2017-03-30 23:32:18 +08:00
|
|
|
|
ratingsBar = new BeatmapDetailsBar
|
2017-03-28 23:12:54 +08:00
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
Height = 5,
|
|
|
|
|
Length = 0,
|
|
|
|
|
},
|
|
|
|
|
new Container
|
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
AutoSizeAxes = Axes.Y,
|
|
|
|
|
Children = new[]
|
|
|
|
|
{
|
|
|
|
|
negativeRatings = new SpriteText
|
|
|
|
|
{
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Medium",
|
|
|
|
|
Text = "0",
|
|
|
|
|
},
|
|
|
|
|
positiveRatings = new SpriteText
|
|
|
|
|
{
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Medium",
|
|
|
|
|
Text = "0",
|
|
|
|
|
Anchor = Anchor.TopRight,
|
|
|
|
|
Origin = Anchor.TopRight,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
new SpriteText
|
|
|
|
|
{
|
|
|
|
|
Text = "Rating Spread",
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Medium",
|
2017-03-29 02:18:56 +08:00
|
|
|
|
Anchor = Anchor.TopCentre,
|
2017-03-28 23:12:54 +08:00
|
|
|
|
Origin = Anchor.TopCentre,
|
|
|
|
|
},
|
2017-03-30 23:32:18 +08:00
|
|
|
|
ratingsGraph = new BeatmapDetailsGraph
|
2017-03-28 23:12:54 +08:00
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
Direction = FillDirection.Horizontal,
|
|
|
|
|
Height = 50,
|
2017-03-29 02:18:56 +08:00
|
|
|
|
},
|
2017-03-28 23:12:54 +08:00
|
|
|
|
},
|
2017-03-26 06:33:03 +08:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2017-03-29 02:18:56 +08:00
|
|
|
|
new SpriteText
|
|
|
|
|
{
|
|
|
|
|
Text = "Points of Failure",
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Medium",
|
2017-03-30 23:32:18 +08:00
|
|
|
|
},
|
|
|
|
|
new Container<BeatmapDetailsGraph>
|
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.X,
|
|
|
|
|
Size = new Vector2(1/0.6f, 50),
|
|
|
|
|
Children = new[]
|
|
|
|
|
{
|
|
|
|
|
retryGraph = new BeatmapDetailsGraph
|
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.Both,
|
|
|
|
|
},
|
|
|
|
|
failGraph = new BeatmapDetailsGraph
|
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.Both,
|
|
|
|
|
},
|
|
|
|
|
},
|
2017-03-29 02:18:56 +08:00
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2017-03-25 06:02:24 +08:00
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[BackgroundDependencyLoader]
|
|
|
|
|
private void load(OsuColour colour)
|
|
|
|
|
{
|
|
|
|
|
description.Colour = colour.GrayB;
|
|
|
|
|
source.Colour = colour.GrayB;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
tags.Colour = colour.YellowLight;
|
2017-03-28 23:12:54 +08:00
|
|
|
|
|
2017-03-29 02:18:56 +08:00
|
|
|
|
stars.BarColour = colour.Yellow;
|
2017-03-28 23:12:54 +08:00
|
|
|
|
|
|
|
|
|
ratingsBar.BackgroundColour = colour.Green;
|
|
|
|
|
ratingsBar.BarColour = colour.YellowDark;
|
|
|
|
|
ratingsGraph.Colour = colour.BlueDark;
|
2017-03-30 23:32:18 +08:00
|
|
|
|
|
|
|
|
|
failGraph.Colour = colour.YellowDarker;
|
|
|
|
|
retryGraph.Colour = colour.Yellow;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private class DifficultyRow : Container
|
|
|
|
|
{
|
2017-03-29 22:00:29 +08:00
|
|
|
|
private readonly SpriteText name;
|
2017-03-30 23:32:18 +08:00
|
|
|
|
private readonly BeatmapDetailsBar bar;
|
2017-03-29 22:00:29 +08:00
|
|
|
|
private readonly SpriteText valueText;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
|
|
|
|
|
private float difficultyValue;
|
|
|
|
|
public float Value
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return difficultyValue;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
difficultyValue = value;
|
2017-03-28 23:12:54 +08:00
|
|
|
|
bar.Length = value/maxValue;
|
2017-03-29 22:10:07 +08:00
|
|
|
|
valueText.Text = value.ToString(CultureInfo.InvariantCulture);
|
2017-03-26 06:33:03 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private float maxValue = 10;
|
|
|
|
|
public float MaxValue
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return maxValue;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
maxValue = value;
|
2017-03-28 23:12:54 +08:00
|
|
|
|
bar.Length = Value/value;
|
2017-03-26 06:33:03 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string DifficultyName
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return name.Text;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
name.Text = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public SRGBColour BarColour
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return bar.BarColour;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
bar.BarColour = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public DifficultyRow()
|
|
|
|
|
{
|
|
|
|
|
Children = new Drawable[]
|
|
|
|
|
{
|
|
|
|
|
name = new SpriteText
|
|
|
|
|
{
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Medium",
|
|
|
|
|
},
|
2017-03-30 23:32:18 +08:00
|
|
|
|
bar = new BeatmapDetailsBar
|
2017-03-26 06:33:03 +08:00
|
|
|
|
{
|
|
|
|
|
Origin = Anchor.CentreLeft,
|
|
|
|
|
Anchor = Anchor.CentreLeft,
|
|
|
|
|
RelativeSizeAxes = Axes.Both,
|
|
|
|
|
Size = new Vector2(1, 0.35f),
|
|
|
|
|
Padding = new MarginPadding { Left = 100, Right = 25 },
|
|
|
|
|
},
|
|
|
|
|
valueText = new SpriteText
|
|
|
|
|
{
|
|
|
|
|
Anchor = Anchor.TopRight,
|
|
|
|
|
Origin = Anchor.TopRight,
|
|
|
|
|
TextSize = 14,
|
|
|
|
|
Font = @"Exo2.0-Medium",
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[BackgroundDependencyLoader]
|
|
|
|
|
private void load(OsuColour colour)
|
|
|
|
|
{
|
|
|
|
|
name.Colour = colour.GrayB;
|
|
|
|
|
bar.BackgroundColour = colour.Gray7;
|
|
|
|
|
valueText.Colour = colour.GrayB;
|
|
|
|
|
}
|
2017-03-25 06:02:24 +08:00
|
|
|
|
}
|
2017-03-29 02:18:56 +08:00
|
|
|
|
|
2017-03-30 23:32:18 +08:00
|
|
|
|
private class RetryAndFailBar : Container<BeatmapDetailsBar>
|
2017-03-29 02:18:56 +08:00
|
|
|
|
{
|
2017-03-30 23:32:18 +08:00
|
|
|
|
private readonly BeatmapDetailsBar retryBar;
|
|
|
|
|
private readonly BeatmapDetailsBar failBar;
|
2017-03-29 02:18:56 +08:00
|
|
|
|
|
|
|
|
|
public float RetryLength
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return retryBar.Length;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
retryBar.Length = value + FailLength;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public float FailLength
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return failBar.Length;
|
|
|
|
|
}
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
failBar.Length = value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public RetryAndFailBar()
|
|
|
|
|
{
|
|
|
|
|
Children = new[]
|
|
|
|
|
{
|
2017-03-30 23:32:18 +08:00
|
|
|
|
retryBar = new BeatmapDetailsBar
|
2017-03-29 02:18:56 +08:00
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.Both,
|
|
|
|
|
Direction = BarDirection.BottomToTop,
|
|
|
|
|
Length = 0,
|
|
|
|
|
BackgroundColour = new Color4(0,0,0,0),
|
|
|
|
|
},
|
2017-03-30 23:32:18 +08:00
|
|
|
|
failBar = new BeatmapDetailsBar
|
2017-03-29 02:18:56 +08:00
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.Both,
|
|
|
|
|
Direction = BarDirection.BottomToTop,
|
|
|
|
|
Length = 0,
|
|
|
|
|
BackgroundColour = new Color4(0,0,0,0),
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[BackgroundDependencyLoader]
|
|
|
|
|
private void load(OsuColour colour)
|
|
|
|
|
{
|
|
|
|
|
retryBar.Colour = colour.Yellow;
|
|
|
|
|
failBar.Colour = colour.YellowDarker;
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-03-25 06:02:24 +08:00
|
|
|
|
}
|
|
|
|
|
}
|