levelForTotalXp function

int levelForTotalXp(
  1. List<LevelDefinition> curve,
  2. int totalXp
)

Level reached at totalXp against curve (already validated, sorted by level ascending). Caps at the curve's last (max) level regardless of how far totalXp exceeds it.

Implementation

int levelForTotalXp(List<LevelDefinition> curve, int totalXp) {
  var level = 1;
  var remaining = totalXp;
  for (final def in curve) {
    if (def.xpToNext == 0) break;
    if (remaining < def.xpToNext) break;
    remaining -= def.xpToNext;
    level++;
  }
  return level;
}