From 0f4ef16910354bcf652cb2f242148809cc60099c Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Mon, 1 May 2017 17:14:59 +0900 Subject: [PATCH] Remove custom word splitting logic, add localisation support. --- osu.Game/Overlays/Music/PlaylistItem.cs | 86 ++++++++++++------------- 1 file changed, 40 insertions(+), 46 deletions(-) diff --git a/osu.Game/Overlays/Music/PlaylistItem.cs b/osu.Game/Overlays/Music/PlaylistItem.cs index 681dd7672f..17d39dcdb3 100644 --- a/osu.Game/Overlays/Music/PlaylistItem.cs +++ b/osu.Game/Overlays/Music/PlaylistItem.cs @@ -12,16 +12,18 @@ using osu.Game.Graphics; using osu.Game.Graphics.Sprites; using OpenTK; using OpenTK.Graphics; +using osu.Framework.Localisation; namespace osu.Game.Overlays.Music { internal class PlaylistItem : Container { private const float fade_duration = 100; - private Color4 currentColour; - private readonly TextAwesome icon; - private readonly IEnumerable title, artist; + private Color4 hoverColour; + + private TextAwesome handle; + private OsuSpriteText title; public readonly BeatmapSetInfo BeatmapSetInfo; @@ -37,8 +39,7 @@ namespace osu.Game.Overlays.Music selected = value; Flush(true); - foreach (OsuSpriteText t in title) - t.FadeColour(Selected ? currentColour : Color4.White, fade_duration); + title.FadeColour(Selected ? hoverColour : Color4.White, fade_duration); } } @@ -49,72 +50,65 @@ namespace osu.Game.Overlays.Music RelativeSizeAxes = Axes.X; AutoSizeAxes = Axes.Y; Padding = new MarginPadding { Top = 3, Bottom = 3 }; + } - FillFlowContainer textContainer = new FillFlowContainer - { - RelativeSizeAxes = Axes.X, - AutoSizeAxes = Axes.Y, - Padding = new MarginPadding { Left = 20 }, - Spacing = new Vector2(5f, 0f), - }; + [BackgroundDependencyLoader] + private void load(OsuColour colours, LocalisationEngine localisation) + { + BeatmapMetadata metadata = BeatmapSetInfo.Metadata; Children = new Drawable[] { - icon = new TextAwesome + handle = new TextAwesome { Anchor = Anchor.TopLeft, Origin = Anchor.TopLeft, TextSize = 12, + Colour = colours.Gray5, Icon = FontAwesome.fa_bars, Alpha = 0f, Margin = new MarginPadding { Left = 5 }, Padding = new MarginPadding { Top = 2 }, }, - textContainer, + new FillFlowContainer + { + RelativeSizeAxes = Axes.X, + AutoSizeAxes = Axes.Y, + Padding = new MarginPadding { Left = 20 }, + Spacing = new Vector2(5f, 0f), + Children = new [] + { + title = new OsuSpriteText + { + TextSize = 16, + Font = @"Exo2.0-Regular", + Current = localisation.GetUnicodePreference(metadata.TitleUnicode, metadata.Title), + }, + new OsuSpriteText + { + TextSize = 14, + Font = @"Exo2.0-Bold", + Colour = colours.Gray9, + Padding = new MarginPadding { Top = 1 }, + Current = localisation.GetUnicodePreference(metadata.ArtistUnicode, metadata.Artist), + } + } + }, }; - textContainer.Add(title = splitText(BeatmapSetInfo.Metadata.Title, 16, @"Exo2.0-Regular", new MarginPadding(0))); - textContainer.Add(artist = splitText(BeatmapSetInfo.Metadata.Artist, 14, @"Exo2.0-Bold", new MarginPadding { Top = 1 })); - } - - private IEnumerable splitText(string text, int textSize, string font, MarginPadding padding) - { - List sprites = new List(); - - foreach (string w in text.Split(' ')) - { - sprites.Add(new OsuSpriteText - { - TextSize = textSize, - Font = font, - Text = w, - Padding = padding, - }); - } - - return sprites; - } - - [BackgroundDependencyLoader] - private void load(OsuColour colours) - { - foreach (OsuSpriteText t in artist) - t.Colour = colours.Gray9; - - icon.Colour = colours.Gray5; - currentColour = colours.Yellow; + hoverColour = colours.Yellow; } protected override bool OnHover(Framework.Input.InputState state) { - icon.FadeIn(fade_duration); + handle.FadeIn(fade_duration); return base.OnHover(state); } protected override void OnHoverLost(Framework.Input.InputState state) { - icon.FadeOut(fade_duration); + handle.FadeOut(fade_duration); } protected override bool OnClick(Framework.Input.InputState state)