mirror of
https://github.com/ppy/osu.git
synced 2026-06-03 10:50:58 +08:00
d0d5d97cfe
As mentioned in https://github.com/ppy/osu/discussions/36883. This has caught me off-guard a few times. Was a quick one to make this work like it does on stable. It doesn't fit as well as stable because we have a lot of elements at the top of the screen, but I think it's better than nothing, as it lets you know you're in a replay quick obviously. I don't think we can easily localise strings with formatting in them yet. Maybe using a `MarkdownContainer` or something?
45 lines
1.2 KiB
C#
45 lines
1.2 KiB
C#
// 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.Graphics;
|
|
using osu.Framework.Graphics.Containers;
|
|
|
|
namespace osu.Game.Screens.Play
|
|
{
|
|
public partial class ScrollingMessage : CompositeDrawable
|
|
{
|
|
private readonly Drawable messageContent;
|
|
|
|
public ScrollingMessage(Drawable messageContent)
|
|
{
|
|
RelativeSizeAxes = Axes.X;
|
|
AutoSizeAxes = Axes.Y;
|
|
|
|
InternalChild = this.messageContent = messageContent;
|
|
}
|
|
|
|
protected override void LoadComplete()
|
|
{
|
|
base.LoadComplete();
|
|
|
|
this.FadeInFromZero(2000, Easing.OutQuint);
|
|
resetMessagePosition();
|
|
}
|
|
|
|
protected override void Update()
|
|
{
|
|
base.Update();
|
|
|
|
if (messageContent.X + messageContent.DrawWidth > 0)
|
|
messageContent.X -= (float)Clock.ElapsedFrameTime * 0.05f;
|
|
else
|
|
resetMessagePosition();
|
|
}
|
|
|
|
private void resetMessagePosition()
|
|
{
|
|
messageContent.X = DrawWidth + 10;
|
|
}
|
|
}
|
|
}
|