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); }
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); }
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); }
/// <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); }
/// <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)));
/// <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));