Esempio n. 1
0
        public static double PercentToNextServerLevel(this User user, Server server)
        {
            double curLevel = user.ServerLevel(server);
            int    curLevelExpRoundedDown = GlobalProperties.CalculateExpFromLevel(curLevel.Rounded(RoundDirection.DOWN));
            int    minMaxDifference       = XpDifferenceBetweenLevels(user, server);

            if (curLevel.Rounded(RoundDirection.DOWN) == 0)
            {
                curLevelExpRoundedDown = 0;
                minMaxDifference       = GlobalProperties.CalculateExpFromLevel(1);
            }

            return(((double)user.ServerExp(server) - curLevelExpRoundedDown) / minMaxDifference);
        }
Esempio n. 2
0
        public static double PercentToNextLevel(this User user)
        {
            double curLevel = user.GlobalLevel();
            int    curLevelExpRoundedDown = GlobalProperties.CalculateExpFromLevel(Math.Floor(curLevel));
            int    minMaxDifference       = XpDifferenceBetweenLevels(user);

            if (curLevel.Rounded(RoundDirection.DOWN) == 0)
            {
                curLevelExpRoundedDown = 0;
                minMaxDifference       = GlobalProperties.CalculateExpFromLevel(1);
            }

            return(((double)user.Experience - curLevelExpRoundedDown) / minMaxDifference);
        }
Esempio n. 3
0
        private static int XpDifferenceBetweenLevels(User user, Server server)
        {
            double curLevel     = Math.Floor(user.ServerLevel(server));
            double nextLevel    = Math.Floor(user.ServerLevel(server) + 1);
            int    curLevelExp  = GlobalProperties.CalculateExpFromLevel(curLevel);
            int    nextLevelExp = GlobalProperties.CalculateExpFromLevel(nextLevel);

            // ReSharper disable once CompareOfFloatsByEqualityOperator
            if (curLevel == 0)
            {
                curLevelExp = user.ServerExp(server);
            }

            return(nextLevelExp - curLevelExp);
        }
Esempio n. 4
0
        /// <summary>
        /// Calculates the difference of EXP between the user's current level (rounded
        /// down to the nearest integer) and one level above this value.
        /// </summary>
        /// <returns></returns>
        private static int XpDifferenceBetweenLevels(User user)
        {
            int curLevel     = user.GlobalLevel().Rounded(RoundDirection.DOWN);
            int nextLevel    = (user.GlobalLevel() + 1).Rounded(RoundDirection.DOWN);
            int curLevelExp  = GlobalProperties.CalculateExpFromLevel(curLevel);
            int nextLevelExp = GlobalProperties.CalculateExpFromLevel(nextLevel);

            // ReSharper disable once CompareOfFloatsByEqualityOperator
            if (curLevel == 0)
            {
                curLevelExp = user.Experience;
            }

            return(nextLevelExp - curLevelExp);
        }
Esempio n. 5
0
 /// <summary>
 /// Returns the minimum required amount of EXP needed to reach the next level in the given server.
 /// </summary>
 /// <param name="user"></param>
 /// <param name="server"></param>
 /// <returns></returns>
 public static int NextServerLevelExp(this User user, Server server) => GlobalProperties.CalculateExpFromLevel(Math.Floor(user.NextServerLevel(server)));
Esempio n. 6
0
 /// <summary>
 /// Returns the lowest possible amount of EXP needed to reach this <see cref="User"/>'s next level.
 /// </summary>
 /// <param name="user"></param>
 /// <returns></returns>
 public static int NextGlobalLevelExp(this User user) => GlobalProperties.CalculateExpFromLevel(Math.Floor(user.GlobalLevel() + 1));