mirror of
https://github.com/simon987/Much-Assembly-Required.git
synced 2025-04-19 18:46:43 +00:00
Fix leaderboard stats methods
This commit is contained in:
parent
dc5e7760bf
commit
95217b2fdf
@ -39,8 +39,9 @@ public class UserStatsHelper {
|
|||||||
for (Document dbUser : users.find().sort(orderBy).limit(n)) {
|
for (Document dbUser : users.find().sort(orderBy).limit(n)) {
|
||||||
User user = GameServer.INSTANCE.getGameUniverse().getUser((String) dbUser.get("username"));
|
User user = GameServer.INSTANCE.getGameUniverse().getUser((String) dbUser.get("username"));
|
||||||
int val = 0;
|
int val = 0;
|
||||||
if(user.getStats().getInt(statName) > 0)
|
if (user.getStats().getInt(statName) > 0) {
|
||||||
val = user.getStats().getInt(statName);
|
val = user.getStats().getInt(statName);
|
||||||
|
}
|
||||||
rows.add(new AbstractMap.SimpleEntry<>(user, val));
|
rows.add(new AbstractMap.SimpleEntry<>(user, val));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,27 +49,23 @@ public class UserStatsHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get top n players along with all their stat values, in descending order
|
* Get top n players along with all their stat values, in descending order of completed vaults
|
||||||
*
|
*
|
||||||
* @param n Maximum number of players
|
* @param n Maximum number of players
|
||||||
* @return Top n players, in User,value format, in descending order
|
* @return Top n players, in User,value format, in descending order
|
||||||
*/
|
*/
|
||||||
public ArrayList<Map.Entry<User, Map<String, Integer>>> getTopNAll(int n) {
|
public ArrayList<Map.Entry<User, Map<String, Integer>>> getLeaderboardStats(int n) {
|
||||||
|
|
||||||
ArrayList<Map.Entry<User, Map<String, Integer>>> rows = new ArrayList<>();
|
ArrayList<Map.Entry<User, Map<String, Integer>>> rows = new ArrayList<>(n);
|
||||||
|
|
||||||
ArrayList<Map.Entry<User, ArrayList>> vaults = new ArrayList<>(this.getTopNSetLength("completedVaults", n));
|
List<User> users = getTopNSetSize("completedVaults", n);
|
||||||
ArrayList<Map.Entry<User, Integer>> deaths = new ArrayList<>(this.getTopN("death", n));
|
|
||||||
ArrayList<Map.Entry<User, Integer>> time = new ArrayList<>(this.getTopN("executionTime", n));
|
|
||||||
ArrayList<Map.Entry<User, Integer>> distance = new ArrayList<>(this.getTopN("walkDistance", n));
|
|
||||||
|
|
||||||
for (int i = 0; i < vaults.size() ; i++) {
|
for (User user : users) {
|
||||||
User user = vaults.get(i).getKey();
|
Map<String, Integer> allStats = new HashMap<>();
|
||||||
Map<String, Integer> allStats = new HashMap();
|
allStats.put("completedVaults", user.getStats().getSet("completedVaults").size());
|
||||||
allStats.put("completedVaults", vaults.get(i).getValue().size());
|
allStats.put("death", user.getStats().getInt("death"));
|
||||||
allStats.put("death", deaths.get(i).getValue());
|
allStats.put("executionTime", user.getStats().getInt("executionTime"));
|
||||||
allStats.put("executionTime", time.get(i).getValue());
|
allStats.put("walkDistance", user.getStats().getInt("walkDistance"));
|
||||||
allStats.put("walkDistance", distance.get(i).getValue());
|
|
||||||
rows.add(new AbstractMap.SimpleEntry<>(user, allStats));
|
rows.add(new AbstractMap.SimpleEntry<>(user, allStats));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,9 +79,9 @@ public class UserStatsHelper {
|
|||||||
* @param n Maximum number of players
|
* @param n Maximum number of players
|
||||||
* @return Top n players, in User,set format, in descending order
|
* @return Top n players, in User,set format, in descending order
|
||||||
*/
|
*/
|
||||||
public ArrayList<Map.Entry<User, ArrayList>> getTopNSetLength(String statName, int n) {
|
private List<User> getTopNSetSize(String statName, int n) {
|
||||||
|
|
||||||
ArrayList<Map.Entry<User, ArrayList>> rows = new ArrayList<>();
|
ArrayList<User> rows = new ArrayList<>();
|
||||||
|
|
||||||
List<Object> ifNullList = new ArrayList<>(2);
|
List<Object> ifNullList = new ArrayList<>(2);
|
||||||
ifNullList.add("$stats." + statName);
|
ifNullList.add("$stats." + statName);
|
||||||
@ -100,7 +97,7 @@ public class UserStatsHelper {
|
|||||||
new Document("$limit", n))
|
new Document("$limit", n))
|
||||||
)) {
|
)) {
|
||||||
User user = GameServer.INSTANCE.getGameUniverse().getUser((String) document.get("username"));
|
User user = GameServer.INSTANCE.getGameUniverse().getUser((String) document.get("username"));
|
||||||
rows.add(new AbstractMap.SimpleEntry<>(user, user.getStats().getSet(statName)));
|
rows.add(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rows;
|
return rows;
|
||||||
|
@ -16,7 +16,7 @@ public class LeaderBoardPage implements TemplateViewRoute {
|
|||||||
public ModelAndView handle(Request request, Response response) {
|
public ModelAndView handle(Request request, Response response) {
|
||||||
Map<String, Object> model = new HashMap<>(2);
|
Map<String, Object> model = new HashMap<>(2);
|
||||||
model.put("session", request.session());
|
model.put("session", request.session());
|
||||||
model.put("stats", GameServer.INSTANCE.getUserStatsHelper().getTopNAll(25));
|
model.put("stats", GameServer.INSTANCE.getUserStatsHelper().getLeaderboardStats(25));
|
||||||
return new ModelAndView(model, "leaderboard.vm");
|
return new ModelAndView(model, "leaderboard.vm");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -12,7 +12,7 @@ server_name=MAR dev
|
|||||||
# ALLOW | BLOCK
|
# ALLOW | BLOCK
|
||||||
guest_policy=ALLOW
|
guest_policy=ALLOW
|
||||||
# DEBUG
|
# DEBUG
|
||||||
autologin=simon
|
#autologin=simon
|
||||||
|
|
||||||
#Database
|
#Database
|
||||||
mongo_dbname=mar_beta
|
mongo_dbname=mar_beta
|
||||||
|
Loading…
x
Reference in New Issue
Block a user