// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Allocation; using osu.Framework.Extensions; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.Textures; using osu.Game.Scoring; namespace osu.Game.Online.Leaderboards { public class DrawableRank : Container { private readonly Sprite rankSprite; private TextureStore textures; public ScoreRank Rank { get; private set; } public DrawableRank(ScoreRank rank) { Rank = rank; Children = new Drawable[] { rankSprite = new Sprite { RelativeSizeAxes = Axes.Both, Anchor = Anchor.Centre, Origin = Anchor.Centre, FillMode = FillMode.Fit }, }; } [BackgroundDependencyLoader] private void load(TextureStore textures) { this.textures = textures; updateTexture(); } private void updateTexture() { string textureName; switch (Rank) { default: textureName = Rank.GetDescription(); break; case ScoreRank.SH: textureName = "SPlus"; break; case ScoreRank.XH: textureName = "SSPlus"; break; } rankSprite.Texture = textures.Get($@"Grades/{textureName}"); } public void UpdateRank(ScoreRank newRank) { Rank = newRank; if (LoadState >= LoadState.Ready) updateTexture(); } } }