mirror of
https://github.com/ppy/osu.git
synced 2025-01-14 19:22:56 +08:00
Update DifficultyIcon
classes to use IBeatmapInfo
This commit is contained in:
parent
3598adb344
commit
be0564f732
@ -37,10 +37,10 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
}
|
}
|
||||||
|
|
||||||
[NotNull]
|
[NotNull]
|
||||||
private readonly BeatmapInfo beatmapInfo;
|
private readonly IBeatmapInfo beatmapInfo;
|
||||||
|
|
||||||
[CanBeNull]
|
[CanBeNull]
|
||||||
private readonly RulesetInfo ruleset;
|
private readonly IRulesetInfo ruleset;
|
||||||
|
|
||||||
[CanBeNull]
|
[CanBeNull]
|
||||||
private readonly IReadOnlyList<Mod> mods;
|
private readonly IReadOnlyList<Mod> mods;
|
||||||
@ -60,7 +60,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
/// <param name="ruleset">The ruleset to show the difficulty with.</param>
|
/// <param name="ruleset">The ruleset to show the difficulty with.</param>
|
||||||
/// <param name="mods">The mods to show the difficulty with.</param>
|
/// <param name="mods">The mods to show the difficulty with.</param>
|
||||||
/// <param name="shouldShowTooltip">Whether to display a tooltip when hovered.</param>
|
/// <param name="shouldShowTooltip">Whether to display a tooltip when hovered.</param>
|
||||||
public DifficultyIcon([NotNull] BeatmapInfo beatmapInfo, [CanBeNull] RulesetInfo ruleset, [CanBeNull] IReadOnlyList<Mod> mods, bool shouldShowTooltip = true)
|
public DifficultyIcon([NotNull] IBeatmapInfo beatmapInfo, [CanBeNull] IRulesetInfo ruleset, [CanBeNull] IReadOnlyList<Mod> mods, bool shouldShowTooltip = true)
|
||||||
: this(beatmapInfo, shouldShowTooltip)
|
: this(beatmapInfo, shouldShowTooltip)
|
||||||
{
|
{
|
||||||
this.ruleset = ruleset ?? beatmapInfo.Ruleset;
|
this.ruleset = ruleset ?? beatmapInfo.Ruleset;
|
||||||
@ -73,7 +73,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
/// <param name="beatmapInfo">The beatmap to show the difficulty of.</param>
|
/// <param name="beatmapInfo">The beatmap to show the difficulty of.</param>
|
||||||
/// <param name="shouldShowTooltip">Whether to display a tooltip when hovered.</param>
|
/// <param name="shouldShowTooltip">Whether to display a tooltip when hovered.</param>
|
||||||
/// <param name="performBackgroundDifficultyLookup">Whether to perform difficulty lookup (including calculation if necessary).</param>
|
/// <param name="performBackgroundDifficultyLookup">Whether to perform difficulty lookup (including calculation if necessary).</param>
|
||||||
public DifficultyIcon([NotNull] BeatmapInfo beatmapInfo, bool shouldShowTooltip = true, bool performBackgroundDifficultyLookup = true)
|
public DifficultyIcon([NotNull] IBeatmapInfo beatmapInfo, bool shouldShowTooltip = true, bool performBackgroundDifficultyLookup = true)
|
||||||
{
|
{
|
||||||
this.beatmapInfo = beatmapInfo ?? throw new ArgumentNullException(nameof(beatmapInfo));
|
this.beatmapInfo = beatmapInfo ?? throw new ArgumentNullException(nameof(beatmapInfo));
|
||||||
this.shouldShowTooltip = shouldShowTooltip;
|
this.shouldShowTooltip = shouldShowTooltip;
|
||||||
@ -84,6 +84,9 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
InternalChild = iconContainer = new Container { Size = new Vector2(20f) };
|
InternalChild = iconContainer = new Container { Size = new Vector2(20f) };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Resolved]
|
||||||
|
private RulesetStore rulesets { get; set; }
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
@ -105,7 +108,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
Child = background = new Box
|
Child = background = new Box
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Colour = colours.ForStarDifficulty(beatmapInfo.StarDifficulty) // Default value that will be re-populated once difficulty calculation completes
|
Colour = colours.ForStarDifficulty(beatmapInfo.StarRating) // Default value that will be re-populated once difficulty calculation completes
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
new ConstrainedIconContainer
|
new ConstrainedIconContainer
|
||||||
@ -114,14 +117,14 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
// the null coalesce here is only present to make unit tests work (ruleset dlls aren't copied correctly for testing at the moment)
|
// the null coalesce here is only present to make unit tests work (ruleset dlls aren't copied correctly for testing at the moment)
|
||||||
Icon = (ruleset ?? beatmapInfo.Ruleset)?.CreateInstance()?.CreateIcon() ?? new SpriteIcon { Icon = FontAwesome.Regular.QuestionCircle }
|
Icon = rulesets.GetRuleset((ruleset ?? beatmapInfo.Ruleset).OnlineID)?.CreateInstance()?.CreateIcon() ?? new SpriteIcon { Icon = FontAwesome.Regular.QuestionCircle }
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
if (performBackgroundDifficultyLookup)
|
if (performBackgroundDifficultyLookup)
|
||||||
iconContainer.Add(new DelayedLoadUnloadWrapper(() => new DifficultyRetriever(beatmapInfo, ruleset, mods) { StarDifficulty = { BindTarget = difficultyBindable } }, 0));
|
iconContainer.Add(new DelayedLoadUnloadWrapper(() => new DifficultyRetriever(beatmapInfo, ruleset, mods) { StarDifficulty = { BindTarget = difficultyBindable } }, 0));
|
||||||
else
|
else
|
||||||
difficultyBindable.Value = new StarDifficulty(beatmapInfo.StarDifficulty, 0);
|
difficultyBindable.Value = new StarDifficulty(beatmapInfo.StarRating, 0);
|
||||||
|
|
||||||
difficultyBindable.BindValueChanged(difficulty => background.Colour = colours.ForStarDifficulty(difficulty.NewValue.Stars));
|
difficultyBindable.BindValueChanged(difficulty => background.Colour = colours.ForStarDifficulty(difficulty.NewValue.Stars));
|
||||||
}
|
}
|
||||||
@ -134,8 +137,8 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
{
|
{
|
||||||
public readonly Bindable<StarDifficulty> StarDifficulty = new Bindable<StarDifficulty>();
|
public readonly Bindable<StarDifficulty> StarDifficulty = new Bindable<StarDifficulty>();
|
||||||
|
|
||||||
private readonly BeatmapInfo beatmapInfo;
|
private readonly IBeatmapInfo beatmapInfo;
|
||||||
private readonly RulesetInfo ruleset;
|
private readonly IRulesetInfo ruleset;
|
||||||
private readonly IReadOnlyList<Mod> mods;
|
private readonly IReadOnlyList<Mod> mods;
|
||||||
|
|
||||||
private CancellationTokenSource difficultyCancellation;
|
private CancellationTokenSource difficultyCancellation;
|
||||||
@ -143,7 +146,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private BeatmapDifficultyCache difficultyCache { get; set; }
|
private BeatmapDifficultyCache difficultyCache { get; set; }
|
||||||
|
|
||||||
public DifficultyRetriever(BeatmapInfo beatmapInfo, RulesetInfo ruleset, IReadOnlyList<Mod> mods)
|
public DifficultyRetriever(IBeatmapInfo beatmapInfo, IRulesetInfo ruleset, IReadOnlyList<Mod> mods)
|
||||||
{
|
{
|
||||||
this.beatmapInfo = beatmapInfo;
|
this.beatmapInfo = beatmapInfo;
|
||||||
this.ruleset = ruleset;
|
this.ruleset = ruleset;
|
||||||
|
@ -89,7 +89,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
|
|
||||||
public void SetContent(DifficultyIconTooltipContent content)
|
public void SetContent(DifficultyIconTooltipContent content)
|
||||||
{
|
{
|
||||||
difficultyName.Text = content.BeatmapInfo.Version;
|
difficultyName.Text = content.BeatmapInfo.DifficultyName;
|
||||||
|
|
||||||
starDifficulty.UnbindAll();
|
starDifficulty.UnbindAll();
|
||||||
starDifficulty.BindTo(content.Difficulty);
|
starDifficulty.BindTo(content.Difficulty);
|
||||||
@ -109,10 +109,10 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
|
|
||||||
internal class DifficultyIconTooltipContent
|
internal class DifficultyIconTooltipContent
|
||||||
{
|
{
|
||||||
public readonly BeatmapInfo BeatmapInfo;
|
public readonly IBeatmapInfo BeatmapInfo;
|
||||||
public readonly IBindable<StarDifficulty> Difficulty;
|
public readonly IBindable<StarDifficulty> Difficulty;
|
||||||
|
|
||||||
public DifficultyIconTooltipContent(BeatmapInfo beatmapInfo, IBindable<StarDifficulty> difficulty)
|
public DifficultyIconTooltipContent(IBeatmapInfo beatmapInfo, IBindable<StarDifficulty> difficulty)
|
||||||
{
|
{
|
||||||
BeatmapInfo = beatmapInfo;
|
BeatmapInfo = beatmapInfo;
|
||||||
Difficulty = difficulty;
|
Difficulty = difficulty;
|
||||||
|
@ -19,8 +19,8 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
public class GroupedDifficultyIcon : DifficultyIcon
|
public class GroupedDifficultyIcon : DifficultyIcon
|
||||||
{
|
{
|
||||||
public GroupedDifficultyIcon(List<BeatmapInfo> beatmaps, RulesetInfo ruleset, Color4 counterColour)
|
public GroupedDifficultyIcon(IEnumerable<IBeatmapInfo> beatmaps, IRulesetInfo ruleset, Color4 counterColour)
|
||||||
: base(beatmaps.OrderBy(b => b.StarDifficulty).Last(), ruleset, null, false)
|
: base(beatmaps.OrderBy(b => b.StarRating).Last(), ruleset, null, false)
|
||||||
{
|
{
|
||||||
AddInternal(new OsuSpriteText
|
AddInternal(new OsuSpriteText
|
||||||
{
|
{
|
||||||
@ -29,7 +29,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
Padding = new MarginPadding { Left = Size.X },
|
Padding = new MarginPadding { Left = Size.X },
|
||||||
Margin = new MarginPadding { Left = 2, Right = 5 },
|
Margin = new MarginPadding { Left = 2, Right = 5 },
|
||||||
Font = OsuFont.GetFont(size: 14, weight: FontWeight.SemiBold),
|
Font = OsuFont.GetFont(size: 14, weight: FontWeight.SemiBold),
|
||||||
Text = beatmaps.Count.ToString(),
|
Text = beatmaps.Count().ToString(),
|
||||||
Colour = counterColour,
|
Colour = counterColour,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user