Esempio n. 1
0
        /// <summary>
        /// Update displayed metrics.
        /// </summary>
        /// <param name="metrics">New metrics to overwrite the existing display. Can be null.</param>
        /// <param name="failOnMissing">Whether to hide the display on null or empty metrics. If false, we will dim as if waiting for further updates.</param>
        private void updateMetrics(BeatmapMetrics metrics, bool failOnMissing = true)
        {
            var hasRatings      = metrics?.Ratings.Any() ?? false;
            var hasRetriesFails = (metrics?.Retries.Any() ?? false) && metrics.Fails.Any();

            if (failOnMissing)
            {
                loading.Hide();
            }

            if (hasRatings)
            {
                var ratings = metrics.Ratings.ToList();
                ratingsContainer.Show();

                negativeRatings.Text = ratings.GetRange(0, ratings.Count / 2).Sum().ToString();
                positiveRatings.Text = ratings.GetRange(ratings.Count / 2, ratings.Count / 2).Sum().ToString();
                ratingsBar.Length    = (float)ratings.GetRange(0, ratings.Count / 2).Sum() / ratings.Sum();

                ratingsGraph.Values = ratings.Select(rating => (float)rating);

                ratingsContainer.FadeColour(Color4.White, 500, EasingTypes.Out);
            }
            else if (failOnMissing)
            {
                ratingsGraph.Values = new float[10];
            }
            else
            {
                ratingsContainer.FadeColour(Color4.Gray, 500, EasingTypes.Out);
            }

            if (hasRetriesFails)
            {
                var retries = metrics.Retries;
                var fails   = metrics.Fails;
                retryFailContainer.Show();

                float maxValue = fails.Zip(retries, (fail, retry) => fail + retry).Max();
                failGraph.MaxValue  = maxValue;
                retryGraph.MaxValue = maxValue;

                failGraph.Values  = fails.Select(fail => (float)fail);
                retryGraph.Values = retries.Zip(fails, (retry, fail) => retry + MathHelper.Clamp(fail, 0, maxValue));

                retryFailContainer.FadeColour(Color4.White, 500, EasingTypes.Out);
            }
            else if (failOnMissing)
            {
                failGraph.Values  = new float[100];
                retryGraph.Values = new float[100];
            }
            else
            {
                retryFailContainer.FadeColour(Color4.Gray, 500, EasingTypes.Out);
            }
        }
Esempio n. 2
0
        private void displayMetrics(BeatmapMetrics metrics, bool failOnMissing = true)
        {
            var hasRatings      = metrics?.Ratings?.Any() ?? false;
            var hasRetriesFails = (metrics?.Retries?.Any() ?? false) && (metrics.Fails?.Any() ?? false);

            if (failOnMissing)
            {
                loading.Hide();
            }

            if (hasRatings)
            {
                ratings.Metrics = metrics;
                ratings.FadeIn(transition_duration);
            }
            else if (failOnMissing)
            {
                ratings.Metrics = new BeatmapMetrics
                {
                    Ratings = new int[10],
                };
            }
            else
            {
                ratings.FadeTo(0.25f, transition_duration);
            }

            if (hasRetriesFails)
            {
                failRetryGraph.Metrics = metrics;
                failRetryContainer.FadeIn(transition_duration);
            }
            else if (failOnMissing)
            {
                failRetryGraph.Metrics = new BeatmapMetrics
                {
                    Fails   = new int[100],
                    Retries = new int[100],
                };
            }
            else
            {
                failRetryContainer.FadeTo(0.25f, transition_duration);
            }
        }