1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 16:52:54 +08:00

Change DrawableProfileScore to use APIScoreInfo

This commit is contained in:
Dean Herbert 2021-10-29 15:14:52 +09:00
parent 17a83f701a
commit 31403daa20
5 changed files with 65 additions and 62 deletions

View File

@ -7,6 +7,7 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Shapes;
using osu.Framework.Utils; using osu.Framework.Utils;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests.Responses; using osu.Game.Online.API.Requests.Responses;
using osu.Game.Overlays; using osu.Game.Overlays;
using osu.Game.Overlays.BeatmapSet.Scores; using osu.Game.Overlays.BeatmapSet.Scores;
@ -61,10 +62,10 @@ namespace osu.Game.Tests.Visual.Online
}, },
Mods = new[] Mods = new[]
{ {
new OsuModDoubleTime().Acronym, new APIMod { Acronym = new OsuModDoubleTime().Acronym },
new OsuModHidden().Acronym, new APIMod { Acronym = new OsuModHidden().Acronym },
new OsuModFlashlight().Acronym, new APIMod { Acronym = new OsuModFlashlight().Acronym },
new OsuModHardRock().Acronym, new APIMod { Acronym = new OsuModHardRock().Acronym },
}, },
Rank = ScoreRank.XH, Rank = ScoreRank.XH,
PP = 200, PP = 200,
@ -86,9 +87,9 @@ namespace osu.Game.Tests.Visual.Online
}, },
Mods = new[] Mods = new[]
{ {
new OsuModDoubleTime().Acronym, new APIMod { Acronym = new OsuModDoubleTime().Acronym },
new OsuModHidden().Acronym, new APIMod { Acronym = new OsuModHidden().Acronym },
new OsuModFlashlight().Acronym, new APIMod { Acronym = new OsuModFlashlight().Acronym },
}, },
Rank = ScoreRank.S, Rank = ScoreRank.S,
PP = 190, PP = 190,
@ -110,8 +111,8 @@ namespace osu.Game.Tests.Visual.Online
}, },
Mods = new[] Mods = new[]
{ {
new OsuModDoubleTime().Acronym, new APIMod { Acronym = new OsuModDoubleTime().Acronym },
new OsuModHidden().Acronym, new APIMod { Acronym = new OsuModHidden().Acronym },
}, },
Rank = ScoreRank.B, Rank = ScoreRank.B,
PP = 180, PP = 180,
@ -133,7 +134,7 @@ namespace osu.Game.Tests.Visual.Online
}, },
Mods = new[] Mods = new[]
{ {
new OsuModDoubleTime().Acronym, new APIMod { Acronym = new OsuModDoubleTime().Acronym },
}, },
Rank = ScoreRank.C, Rank = ScoreRank.C,
PP = 170, PP = 170,
@ -226,10 +227,10 @@ namespace osu.Game.Tests.Visual.Online
}, },
Mods = new[] Mods = new[]
{ {
new OsuModDoubleTime().Acronym, new APIMod { Acronym = new OsuModDoubleTime().Acronym },
new OsuModHidden().Acronym, new APIMod { Acronym = new OsuModHidden().Acronym },
new OsuModFlashlight().Acronym, new APIMod { Acronym = new OsuModFlashlight().Acronym },
new OsuModHardRock().Acronym, new APIMod { Acronym = new OsuModHardRock().Acronym },
}, },
Rank = ScoreRank.XH, Rank = ScoreRank.XH,
PP = 200, PP = 200,

View File

@ -2,16 +2,16 @@
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System; using System;
using osu.Game.Overlays.Profile.Sections.Ranks;
using osu.Framework.Graphics;
using osu.Game.Scoring;
using osu.Framework.Graphics.Containers;
using osuTK;
using osu.Game.Beatmaps;
using osu.Game.Rulesets.Mods;
using osu.Game.Rulesets.Osu.Mods;
using osu.Game.Overlays;
using osu.Framework.Allocation; using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Online.API;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Overlays;
using osu.Game.Overlays.Profile.Sections.Ranks;
using osu.Game.Rulesets.Osu.Mods;
using osu.Game.Scoring;
using osuTK;
namespace osu.Game.Tests.Visual.Online namespace osu.Game.Tests.Visual.Online
{ {
@ -19,79 +19,79 @@ namespace osu.Game.Tests.Visual.Online
{ {
public TestSceneUserProfileScores() public TestSceneUserProfileScores()
{ {
var firstScore = new ScoreInfo var firstScore = new APIScoreInfo
{ {
PP = 1047.21, PP = 1047.21,
Rank = ScoreRank.SH, Rank = ScoreRank.SH,
BeatmapInfo = new BeatmapInfo Beatmap = new APIBeatmap
{ {
Metadata = new BeatmapMetadata BeatmapSet =
{ {
Title = "JUSTadICE (TV Size)", Title = "JUSTadICE (TV Size)",
Artist = "Oomori Seiko" Artist = "Oomori Seiko",
}, },
Version = "Extreme" DifficultyName = "Extreme"
}, },
Date = DateTimeOffset.Now, Date = DateTimeOffset.Now,
Mods = new Mod[] Mods = new[]
{ {
new OsuModHidden(), new APIMod { Acronym = new OsuModHidden().Acronym },
new OsuModHardRock(), new APIMod { Acronym = new OsuModHardRock().Acronym },
new OsuModDoubleTime() new APIMod { Acronym = new OsuModDoubleTime().Acronym },
}, },
Accuracy = 0.9813 Accuracy = 0.9813
}; };
var secondScore = new ScoreInfo var secondScore = new APIScoreInfo
{ {
PP = 134.32, PP = 134.32,
Rank = ScoreRank.A, Rank = ScoreRank.A,
BeatmapInfo = new BeatmapInfo Beatmap = new APIBeatmap
{ {
Metadata = new BeatmapMetadata BeatmapSet =
{ {
Title = "Triumph & Regret", Title = "Triumph & Regret",
Artist = "typeMARS" Artist = "typeMARS",
}, },
Version = "[4K] Regret" DifficultyName = "[4K] Regret"
}, },
Date = DateTimeOffset.Now, Date = DateTimeOffset.Now,
Mods = new Mod[] Mods = new[]
{ {
new OsuModHardRock(), new APIMod { Acronym = new OsuModHardRock().Acronym },
new OsuModDoubleTime(), new APIMod { Acronym = new OsuModDoubleTime().Acronym },
}, },
Accuracy = 0.998546 Accuracy = 0.998546
}; };
var thirdScore = new ScoreInfo var thirdScore = new APIScoreInfo
{ {
PP = 96.83, PP = 96.83,
Rank = ScoreRank.S, Rank = ScoreRank.S,
BeatmapInfo = new BeatmapInfo Beatmap = new APIBeatmap
{ {
Metadata = new BeatmapMetadata BeatmapSet =
{ {
Title = "Idolize", Title = "Idolize",
Artist = "Creo" Artist = "Creo",
}, },
Version = "Insane" DifficultyName = "Insane"
}, },
Date = DateTimeOffset.Now, Date = DateTimeOffset.Now,
Accuracy = 0.9726 Accuracy = 0.9726
}; };
var noPPScore = new ScoreInfo var noPPScore = new APIScoreInfo
{ {
Rank = ScoreRank.B, Rank = ScoreRank.B,
BeatmapInfo = new BeatmapInfo Beatmap = new APIBeatmap
{ {
Metadata = new BeatmapMetadata BeatmapSet =
{ {
Title = "C18H27NO3(extend)", Title = "C18H27NO3(extend)",
Artist = "Team Grimoire" Artist = "Team Grimoire",
}, },
Version = "[4K] Cataclysmic Hypernova" DifficultyName = "[4K] Cataclysmic Hypernova"
}, },
Date = DateTimeOffset.Now, Date = DateTimeOffset.Now,
Accuracy = 0.55879 Accuracy = 0.55879

View File

@ -12,9 +12,11 @@ using osu.Framework.Localisation;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Graphics; using osu.Game.Graphics;
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Online.Leaderboards; using osu.Game.Online.Leaderboards;
using osu.Game.Rulesets;
using osu.Game.Rulesets.UI; using osu.Game.Rulesets.UI;
using osu.Game.Scoring; using osu.Game.Utils;
using osuTK; using osuTK;
namespace osu.Game.Overlays.Profile.Sections.Ranks namespace osu.Game.Overlays.Profile.Sections.Ranks
@ -26,7 +28,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
private const float performance_background_shear = 0.45f; private const float performance_background_shear = 0.45f;
protected readonly ScoreInfo Score; protected readonly APIScoreInfo Score;
[Resolved] [Resolved]
private OsuColour colours { get; set; } private OsuColour colours { get; set; }
@ -34,7 +36,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
[Resolved] [Resolved]
private OverlayColourProvider colourProvider { get; set; } private OverlayColourProvider colourProvider { get; set; }
public DrawableProfileScore(ScoreInfo score) public DrawableProfileScore(APIScoreInfo score)
{ {
Score = score; Score = score;
@ -43,7 +45,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
} }
[BackgroundDependencyLoader] [BackgroundDependencyLoader]
private void load() private void load(RulesetStore rulesets)
{ {
AddInternal(new ProfileItemContainer AddInternal(new ProfileItemContainer
{ {
@ -79,7 +81,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
Spacing = new Vector2(0, 2), Spacing = new Vector2(0, 2),
Children = new Drawable[] Children = new Drawable[]
{ {
new ScoreBeatmapMetadataContainer(Score.BeatmapInfo), new ScoreBeatmapMetadataContainer(Score.Beatmap),
new FillFlowContainer new FillFlowContainer
{ {
AutoSizeAxes = Axes.Both, AutoSizeAxes = Axes.Both,
@ -89,7 +91,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
{ {
new OsuSpriteText new OsuSpriteText
{ {
Text = $"{Score.BeatmapInfo.Version}", Text = $"{Score.Beatmap.DifficultyName}",
Font = OsuFont.GetFont(size: 12, weight: FontWeight.Regular), Font = OsuFont.GetFont(size: 12, weight: FontWeight.Regular),
Colour = colours.Yellow Colour = colours.Yellow
}, },
@ -129,7 +131,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
Origin = Anchor.CentreRight, Origin = Anchor.CentreRight,
Direction = FillDirection.Horizontal, Direction = FillDirection.Horizontal,
Spacing = new Vector2(2), Spacing = new Vector2(2),
Children = Score.Mods.Select(mod => new ModIcon(mod) Children = Score.Mods.Select(mod => new ModIcon(rulesets.GetRuleset(Score.RulesetID).CreateInstance().CreateModFromAcronym(mod.Acronym))
{ {
Scale = new Vector2(0.35f) Scale = new Vector2(0.35f)
}).ToList(), }).ToList(),
@ -198,7 +200,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
RelativeSizeAxes = Axes.Y, RelativeSizeAxes = Axes.Y,
Child = new OsuSpriteText Child = new OsuSpriteText
{ {
Text = Score.DisplayAccuracy, Text = Score.Accuracy.FormatAccuracy(),
Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true), Font = OsuFont.GetFont(size: 14, weight: FontWeight.Bold, italics: true),
Colour = colours.Yellow, Colour = colours.Yellow,
Anchor = Anchor.CentreLeft, Anchor = Anchor.CentreLeft,

View File

@ -6,8 +6,8 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Game.Graphics; using osu.Game.Graphics;
using osu.Game.Graphics.Sprites; using osu.Game.Graphics.Sprites;
using osu.Game.Online.API.Requests.Responses;
using osu.Game.Resources.Localisation.Web; using osu.Game.Resources.Localisation.Web;
using osu.Game.Scoring;
using osuTK; using osuTK;
namespace osu.Game.Overlays.Profile.Sections.Ranks namespace osu.Game.Overlays.Profile.Sections.Ranks
@ -16,7 +16,7 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
{ {
private readonly double weight; private readonly double weight;
public DrawableProfileWeightedScore(ScoreInfo score, double weight) public DrawableProfileWeightedScore(APIScoreInfo score, double weight)
: base(score) : base(score)
{ {
this.weight = weight; this.weight = weight;

View File

@ -69,10 +69,10 @@ namespace osu.Game.Overlays.Profile.Sections.Ranks
switch (type) switch (type)
{ {
default: default:
return new DrawableProfileScore(model.CreateScoreInfo(Rulesets)); return new DrawableProfileScore(model);
case ScoreType.Best: case ScoreType.Best:
return new DrawableProfileWeightedScore(model.CreateScoreInfo(Rulesets), Math.Pow(0.95, drawableItemIndex++)); return new DrawableProfileWeightedScore(model, Math.Pow(0.95, drawableItemIndex++));
} }
} }
} }