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;
|
|
|
|
|
|
|
|
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
|
|
|
|
2018-07-06 15:30:00 +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
|
|
|
|
2018-07-06 15:30:00 +02:00
|
|
|
public void addLevel(AchievementLevel level)
|
|
|
|
{
|
|
|
|
synchronized (this.levels)
|
|
|
|
{
|
|
|
|
this.levels.put(level.level, level);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-07-08 23:32:00 +02:00
|
|
|
|
2018-07-06 15:30:00 +02:00
|
|
|
public AchievementLevel getLevelForProgress(int progress)
|
|
|
|
{
|
|
|
|
AchievementLevel l = null;
|
2018-09-28 21:25:00 +02:00
|
|
|
if (progress > 0)
|
2018-07-06 15:30:00 +02:00
|
|
|
{
|
2018-09-28 21:25:00 +02:00
|
|
|
for (AchievementLevel level : this.levels.values())
|
2018-07-06 15:30:00 +02:00
|
|
|
{
|
2018-09-28 21:25:00 +02:00
|
|
|
if (progress >= level.progress)
|
2018-07-06 15:30:00 +02:00
|
|
|
{
|
2018-09-28 21:25:00 +02:00
|
|
|
if (l != null)
|
2018-07-06 15:30:00 +02:00
|
|
|
{
|
2018-09-28 21:25:00 +02:00
|
|
|
if (l.level > level.level)
|
|
|
|
{
|
|
|
|
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
|
|
|
|
2018-07-06 15:30:00 +02:00
|
|
|
public AchievementLevel getNextLevel(int currentLevel)
|
|
|
|
{
|
|
|
|
AchievementLevel l = null;
|
|
|
|
|
|
|
|
for(AchievementLevel level : this.levels.values())
|
|
|
|
{
|
|
|
|
if(level.level == (currentLevel + 1))
|
|
|
|
return level;
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
}
|
2018-09-28 21:25:00 +02:00
|
|
|
|
|
|
|
public AchievementLevel firstLevel()
|
|
|
|
{
|
|
|
|
return this.levels.get(1);
|
|
|
|
}
|
2019-04-22 01:42:00 +02:00
|
|
|
|
|
|
|
public void clearLevels()
|
|
|
|
{
|
|
|
|
this.levels.clear();
|
|
|
|
}
|
2018-07-06 15:30:00 +02:00
|
|
|
}
|