22 package com.realtime.crossfire.jxclient.stats;
24 import java.util.HashMap;
26 import org.jetbrains.annotations.NotNull;
38 private final Map<Integer, Long>
info =
new HashMap<>();
55 minLevel = Integer.MAX_VALUE;
56 maxLevel = Integer.MIN_VALUE;
64 private void add(
final int level,
final long exp) {
70 if (minLevel > level) {
73 if (maxLevel < level) {
84 if (minLevel >= maxLevel) {
88 final Long exp = info.get(level);
93 if (level < minLevel) {
94 return info.get(minLevel);
97 if (level > maxLevel) {
101 for (
int i = level; i <
maxLevel; i++) {
102 final Long tmp = info.get(i);
108 throw new AssertionError();
119 return Math.max(0, expNextLevel-currentExp);
133 if (expThisLevel >= expNextLevel) {
137 if (currentExp < expThisLevel) {
140 if (currentExp >= expNextLevel) {
144 return (
int)((currentExp-expThisLevel)*100/(expNextLevel-expThisLevel));
153 for (
int level = 1; level < expTable.length; level++) {
154 add(level, expTable[level]);
int maxLevel
The maximum level value in info.
long getExperienceToNextLevel(final int currentLevel, final long currentExp)
Returns the experience needed to reach the next level.
int getPercentsToNextLevel(final int currentLevel, final long currentExp)
Returns the experience fraction of the current level in percents.
void add(final int level, final long exp)
Adds a new level->experience mapping.
void clear()
Forgets about all level-$> mappings.
long getExperience(final int level)
Returns the experience needed for a given level.
Stores experience <-> level mappings.
final Map< Integer, Long > info
Maps level to experience needed to reach the level.
void setExpTable(@NotNull final long[] expTable)
Updates the experience table information.
int minLevel
The minimum level value in info.