osu/osu.Game/Screens/Multi/Components/ParticipantCountDisplay.cs

72 lines
2.2 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.
2019-02-05 10:00:01 +00:00
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
namespace osu.Game.Screens.Multi.Components
{
2019-02-05 10:00:01 +00:00
public class ParticipantCountDisplay : MultiplayerComposite
{
private const float text_size = 30;
private const float transition_duration = 100;
2019-02-05 10:00:01 +00:00
private OsuSpriteText slash, maxText;
2018-12-26 12:58:14 +00:00
public ParticipantCountDisplay()
{
AutoSizeAxes = Axes.Both;
2019-02-05 10:00:01 +00:00
}
2019-02-05 10:00:01 +00:00
[BackgroundDependencyLoader]
private void load()
{
OsuSpriteText count;
InternalChild = new FillFlowContainer
{
AutoSizeAxes = Axes.Both,
Direction = FillDirection.Horizontal,
LayoutDuration = transition_duration,
Children = new[]
{
count = new OsuSpriteText
{
Font = OsuFont.GetFont(weight: FontWeight.Bold, size: text_size)
},
slash = new OsuSpriteText
{
Text = @"/",
Font = OsuFont.GetFont(weight: FontWeight.Light, size: text_size)
},
maxText = new OsuSpriteText
{
Font = OsuFont.GetFont(weight: FontWeight.Light, size: text_size)
},
}
};
MaxParticipants.BindValueChanged(_ => updateMax(), true);
ParticipantCount.BindValueChanged(c => count.Text = c.NewValue.ToString("#,0"), true);
2018-06-01 17:28:24 +00:00
}
private void updateMax()
{
if (MaxParticipants.Value == null)
2018-06-01 17:28:24 +00:00
{
slash.FadeOut(transition_duration);
maxText.FadeOut(transition_duration);
}
else
{
slash.FadeIn(transition_duration);
maxText.Text = MaxParticipants.Value.ToString();
2018-06-01 17:28:24 +00:00
maxText.FadeIn(transition_duration);
}
}
}
}