// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using osu.Game.Graphics.Sprites; using osu.Game.Graphics.UserInterface; using osuTK; namespace osu.Game.Skinning { /// /// An integer that uses number sprites from a legacy skin. /// public class LegacyRollingCounter : RollingCounter { private readonly ISkin skin; private readonly string fontName; private readonly float fontOverlap; protected override bool IsRollingProportional => true; /// /// Creates a new . /// /// The from which to get counter number sprites. /// The name of the legacy font to use. /// /// The numeric overlap of number sprites to use. /// A positive number will bring the number sprites closer together, while a negative number /// will split them apart more. /// public LegacyRollingCounter(ISkin skin, string fontName, float fontOverlap) { this.skin = skin; this.fontName = fontName; this.fontOverlap = fontOverlap; } protected override double GetProportionalDuration(int currentValue, int newValue) { return Math.Abs(newValue - currentValue) * 75.0; } protected sealed override OsuSpriteText CreateSpriteText() => new LegacySpriteText(skin, fontName) { Spacing = new Vector2(-fontOverlap, 0f) }; } }