123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package me.hammerle;
- public class Skill implements Comparable<Skill> {
- private final static double[] xpForLevel = new double[]{
- 0, 83, 176, 279, 392, 518, 656, 810, 979, 1166,
- 1372, 1599, 1851, 2128, 2435, 2773, 3146, 3558, 4012, 4514,
- 5068, 5680, 6353, 7098, 7920, 8827, 9827, 10932, 12151, 13496,
- 14981, 16620, 18429, 20426, 22630, 25063, 27747, 30712, 33984, 37596,
- 41582, 45984, 50842, 56205, 62127, 68662, 75878, 83844, 92638, 102346,
- 113064, 124896, 137959, 152380, 168302, 185880, 205286, 226710, 250384, 276479,
- 305310, 337142, 372285, 411085, 453922, 501216, 553432, 611082, 674731, 745003,
- 822589, 908249, 1002824, 1107241, 1222525, 1349807, 1490337, 1645492, 1816796, 1975629,
- 2214746
- };
- private final String name;
- private int level = 1;
- private double xp = 0;
- private int ticks;
- private int lastTicks = 0;
- private double last = 0.0;
- public Skill(String name) {
- this.name = name;
- }
- public void setExperience(double xp) {
- this.xp = xp;
- level = 1;
- while(level < xpForLevel.length && this.xp >= xpForLevel[level]) {
- level++;
- }
- }
- public void addExperience(double xp) {
- lastTicks = 20 * 15;
- last = xp;
- this.xp += xp;
- while(level < xpForLevel.length && this.xp >= xpForLevel[level]) {
- level++;
- }
- ticks = 20 * 60;
- }
- public String getName() {
- return name;
- }
- public double getExperience() {
- return xp;
- }
- public double getExperienceForLevel() {
- return xpForLevel[level];
- }
- public double getPercent() {
- return (100.0 * (xp - xpForLevel[level - 1])) / (xpForLevel[level] - xpForLevel[level - 1]);
- }
- public double getLastPercent() {
- return (100.0 * last) / (xpForLevel[level] - xpForLevel[level - 1]);
- }
- public void tick() {
- if(ticks > 0) {
- ticks--;
- }
- if(lastTicks > 0) {
- lastTicks--;
- } else {
- last = 0.0f;
- }
- }
- public boolean shouldRender() {
- return ticks > 0;
- }
- public boolean shouldRenderLastPercent() {
- return lastTicks > 0;
- }
- @Override
- public int compareTo(Skill other) {
- return -Integer.compare(ticks, other.ticks);
- }
- public int getLevel() {
- return level;
- }
- }
|