From b0e2db6a96c394cc16fec1fe164a47dc42dee031 Mon Sep 17 00:00:00 2001 From: Greg Edwards Date: Tue, 31 Mar 2015 02:05:41 -0400 Subject: [PATCH] Added reverse experience formula. (untested) --- library/Structures/PokemonBase.cs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/library/Structures/PokemonBase.cs b/library/Structures/PokemonBase.cs index 61baf234..3f273b4f 100644 --- a/library/Structures/PokemonBase.cs +++ b/library/Structures/PokemonBase.cs @@ -222,6 +222,34 @@ namespace PkmnFoundations.Structures throw new ArgumentException("gr"); } + public static int LevelAt(int experience, GrowthRates gr) + { + if (experience < 0) throw new ArgumentOutOfRangeException("experience"); + + int minLevel = 1, maxLevel = 100; + int minExp = ExperienceAt(1, gr), maxExp = ExperienceAt(100, gr); + + while (1 < 2) + { + if (maxExp <= experience) return maxLevel; + if (minLevel + 1 >= maxLevel) return minLevel; + + int midLevel = (minLevel + maxLevel) >> 1; + int midExp = ExperienceAt(midLevel, gr); + + if (experience >= midExp) + { + minLevel = midLevel; + minExp = midExp; + } + else + { + maxLevel = midLevel; + maxExp = midExp; + } + } + } + private static int ExperienceAt_Slow(int level) { int cube = level * level * level;