Path: blob/master/osu.Game/Online/Leaderboards/UpdateableRank.cs
4540 views
// Copyright (c) ppy Pty Ltd <[email protected]>. Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Transforms; using osu.Game.Scoring; namespace osu.Game.Online.Leaderboards { public partial class UpdateableRank : ModelBackedDrawable<ScoreRank?> { private readonly bool animate; protected override double TransformDuration => animate ? 600 : 0; protected override bool TransformImmediately => true; public ScoreRank? Rank { get => Model; set => Model = value; } public UpdateableRank(ScoreRank? rank = null, bool animate = true) { this.animate = animate; Rank = rank; } protected override DelayedLoadWrapper CreateDelayedLoadWrapper(Func<Drawable> createContentFunc, double timeBeforeLoad) { return base.CreateDelayedLoadWrapper(createContentFunc, timeBeforeLoad) .With(w => { w.Anchor = Anchor.Centre; w.Origin = Anchor.Centre; }); } protected override Drawable? CreateDrawable(ScoreRank? rank) { if (rank.HasValue) { return new DrawableRank(rank.Value) { Anchor = Anchor.Centre, Origin = Anchor.Centre, }; } return null; } protected override TransformSequence<Drawable> ApplyShowTransforms(Drawable drawable) { drawable.ScaleTo(1); return base.ApplyShowTransforms(drawable); } protected override TransformSequence<Drawable> ApplyHideTransforms(Drawable drawable) { drawable.ScaleTo(1.8f, TransformDuration, Easing.Out); return base.ApplyHideTransforms(drawable); } } }