diff --git a/osu.Game/Online/Chat/ChatLink.cs b/osu.Game/Online/Chat/ChatLink.cs index a5af3bfb3d..bfee170fd1 100644 --- a/osu.Game/Online/Chat/ChatLink.cs +++ b/osu.Game/Online/Chat/ChatLink.cs @@ -12,6 +12,7 @@ using osu.Game.Graphics.Containers; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osu.Game.Overlays.Chat; +using System; using System.Collections.Generic; using System.Linq; @@ -26,11 +27,29 @@ namespace osu.Game.Online.Chat private readonly ChatHoverContainer content; + /// + /// Every other sprite in the containing ChatLine that represents the same link. + /// protected IEnumerable SameLinkSprites { get; private set; } protected override Container Content => content ?? base.Content; - public string TooltipText => LinkId != -1 ? Url : null; + public string TooltipText + { + get + { + if (LinkId == -1 || Url == Text) + return null; + + if (Url.StartsWith("osu://chan/")) + return "Switch to channel " + Url.Substring(11); + + if (Url.StartsWith("osu://edit/") && TimeSpan.TryParse(Url.Substring(11).Split(' ')[0], out TimeSpan editorTimeStamp)) + return "Go to " + editorTimeStamp.ToString(); + + return Url; + } + } public ChatLink() { @@ -68,6 +87,8 @@ namespace osu.Game.Online.Chat return; } + Content.FadeColour(urlColour, 500, Easing.OutQuint); + foreach (ChatLink sprite in SameLinkSprites) sprite.Content.FadeColour(urlColour, 500, Easing.OutQuint);