Exemplo n.º 1
0
        public static float GetRankProgress(Account acc)
        {
            float bestProgress = 0;
            bool  isActive     = false;

            foreach (var ratingSystem in RatingSystems.GetRatingSystems())
            {
                if (ratingSystem.GetActivePlayers() < 50)
                {
                    continue;
                }
                var rating = ratingSystem.GetPlayerRating(acc.AccountID);
                if (rating.Rank == int.MaxValue)
                {
                    continue;
                }
                isActive = true;
                var stdev     = Math.Min(10000, rating.Uncertainty);
                var bracket   = ratingSystem.GetPercentileBracket(acc.Rank);
                var rankCeil  = bracket.UpperEloLimit + stdev;
                var rankFloor = bracket.LowerEloLimit - stdev;
                bestProgress = Math.Max(bestProgress, Math.Min(1, (rating.RealElo - rankFloor) / (rankCeil - rankFloor)));
                //Trace.TraceInformation(acc.Name + ": bracket(" + bracket.LowerEloLimit + ", " + bracket.UpperEloLimit + ") requirements (" + rankFloor + ", " + rankCeil + ") current: " + rating.RealElo + " -> progress: " + bestProgress);
            }
            if (!isActive)
            {
                return(0.001f);
            }
            return(bestProgress);
        }
Exemplo n.º 2
0
        public static float GetRankProgress(Account acc)
        {
            float bestProgress = 0;
            bool  isActive     = false;

            foreach (var ratingSystem in RatingSystems.GetRatingSystems())
            {
                var progress = GetRankProgress(acc, ratingSystem);
                if (progress != null)
                {
                    isActive     = true;
                    bestProgress = Math.Max(bestProgress, progress.ProgressRatio);
                }
            }
            if (!isActive)
            {
                return(0.001f);
            }
            return(bestProgress);
        }