Arcturus-Community/src/main/java/com/eu/habbo/habbohotel/achievements/Achievement.java

78 lines
1.7 KiB
Java
Raw Normal View History

2018-07-06 15:30:00 +02:00
package com.eu.habbo.habbohotel.achievements;
import gnu.trove.map.hash.THashMap;
import java.sql.ResultSet;
import java.sql.SQLException;
2019-05-26 20:14:53 +02:00
public class Achievement {
2018-07-08 23:32:00 +02:00
2018-07-06 15:30:00 +02:00
public final int id;
2018-07-08 23:32:00 +02:00
2018-07-06 15:30:00 +02:00
public final String name;
2018-07-08 23:32:00 +02:00
2018-07-06 15:30:00 +02:00
public final AchievementCategories category;
2018-07-08 23:32:00 +02:00
2018-07-06 15:30:00 +02:00
public final THashMap<Integer, AchievementLevel> levels;
2018-07-08 23:32:00 +02:00
2019-05-26 20:14:53 +02:00
public Achievement(ResultSet set) throws SQLException {
2019-03-18 02:22:00 +01:00
this.levels = new THashMap<>();
2018-07-06 15:30:00 +02:00
2019-03-18 02:22:00 +01:00
this.id = set.getInt("id");
2018-07-06 15:30:00 +02:00
this.name = set.getString("name");
this.category = AchievementCategories.valueOf(set.getString("category").toUpperCase());
this.addLevel(new AchievementLevel(set));
}
2018-07-08 23:32:00 +02:00
2019-05-26 20:14:53 +02:00
public void addLevel(AchievementLevel level) {
synchronized (this.levels) {
2018-07-06 15:30:00 +02:00
this.levels.put(level.level, level);
}
}
2018-07-08 23:32:00 +02:00
2019-05-26 20:14:53 +02:00
public AchievementLevel getLevelForProgress(int progress) {
2018-07-06 15:30:00 +02:00
AchievementLevel l = null;
2019-05-26 20:14:53 +02:00
if (progress > 0) {
for (AchievementLevel level : this.levels.values()) {
if (progress >= level.progress) {
if (l != null) {
if (l.level > level.level) {
2018-09-28 21:25:00 +02:00
continue;
}
2018-07-06 15:30:00 +02:00
}
2018-09-28 21:25:00 +02:00
l = level;
}
2018-07-06 15:30:00 +02:00
}
}
return l;
}
2018-07-08 23:32:00 +02:00
2019-05-26 20:14:53 +02:00
public AchievementLevel getNextLevel(int currentLevel) {
2018-07-06 15:30:00 +02:00
AchievementLevel l = null;
2019-05-26 20:14:53 +02:00
for (AchievementLevel level : this.levels.values()) {
if (level.level == (currentLevel + 1))
2018-07-06 15:30:00 +02:00
return level;
}
return null;
}
2018-09-28 21:25:00 +02:00
2019-05-26 20:14:53 +02:00
public AchievementLevel firstLevel() {
2018-09-28 21:25:00 +02:00
return this.levels.get(1);
}
2019-04-22 01:42:00 +02:00
2019-05-26 20:14:53 +02:00
public void clearLevels() {
2019-04-22 01:42:00 +02:00
this.levels.clear();
}
2018-07-06 15:30:00 +02:00
}