osu/osu.Game.Tournament/Components/TournamentModIcon.cs

65 lines
1.9 KiB
C#
Raw Normal View History

// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.Textures;
using osu.Game.Rulesets;
using osu.Game.Rulesets.UI;
using osu.Game.Tournament.Models;
using osuTK;
namespace osu.Game.Tournament.Components
{
2021-01-26 10:15:19 +00:00
/// <summary>
/// Mod icon displayed in tournament usages, allowing user overridden graphics.
/// </summary>
public class TournamentModIcon : CompositeDrawable
{
private readonly string modAcronym;
[Resolved]
private RulesetStore rulesets { get; set; }
2021-01-26 10:15:19 +00:00
public TournamentModIcon(string modAcronym)
{
2021-01-26 10:15:19 +00:00
this.modAcronym = modAcronym;
}
[BackgroundDependencyLoader]
private void load(TextureStore textures, LadderInfo ladderInfo)
{
2021-01-26 10:16:38 +00:00
var customTexture = textures.Get($"mods/{modAcronym}");
2021-01-26 10:16:38 +00:00
if (customTexture != null)
{
AddInternal(new Sprite
{
FillMode = FillMode.Fit,
RelativeSizeAxes = Axes.Both,
Anchor = Anchor.CentreRight,
Origin = Anchor.CentreRight,
2021-01-26 10:16:38 +00:00
Texture = customTexture
});
2021-01-26 10:16:38 +00:00
return;
}
2021-01-26 10:16:38 +00:00
var ruleset = rulesets.GetRuleset(ladderInfo.Ruleset.Value?.ID ?? 0);
var modIcon = ruleset?.CreateInstance().CreateModFromAcronym(modAcronym);
2021-01-26 10:16:38 +00:00
if (modIcon == null)
return;
AddInternal(new ModIcon(modIcon, false)
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Scale = new Vector2(0.5f)
});
}
}
}