Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. package com.luke.cheskin.Utils;
  2.  
  3. import org.simpleyaml.configuration.file.YamlFile;
  4.  
  5. import java.util.*;
  6. import java.util.stream.Collectors;
  7.  
  8. public class ScoreManager {
  9.  
  10. FileManager fileManager = new FileManager();
  11. YamlFile dataFile = fileManager.loadFile();
  12.  
  13. public void addScore(Player player, int score) {
  14.  
  15. // Add new score to players personal list
  16.  
  17. ArrayList<Player> storedPlayers = (ArrayList<Player>) dataFile.get("players");
  18. ArrayList<Integer> playerScores = player.getScores();
  19.  
  20. for (Player storedPlayer : storedPlayers) {
  21. if (storedPlayer.getUsername().equals(player.getUsername())) {
  22. player = storedPlayer;
  23. }
  24. }
  25.  
  26. storedPlayers.remove(player);
  27. playerScores.add(score);
  28.  
  29. player.setScores(playerScores);
  30. storedPlayers.add(player);
  31.  
  32. dataFile.set("players", storedPlayers);
  33.  
  34. // Check high scores
  35.  
  36. ArrayList<Highscore> storedHighscores = (ArrayList<Highscore>) dataFile.get("highscores");
  37.  
  38. if (storedHighscores.size() < 5) {
  39. // There is space to add a high score regardless of the score
  40. storedHighscores.add(new Highscore(player.getUsername(), score));
  41. } else {
  42. // 5 Values
  43. //SortedSet<Highscore> highscores = new TreeSet<>(Comparator.comparingInt(highscore -> highscore.score));
  44. //highscores.addAll(storedHighscores);
  45.  
  46. ArrayList<Highscore> sortedHighscores = (ArrayList<Highscore>) storedHighscores.stream()
  47. .sorted(Comparator.comparingInt(Highscore::getScore))
  48. .collect(Collectors.toList());
  49.  
  50. for (Highscore h : sortedHighscores) {
  51. System.out.println(h.getUsername() + ": " + h.getScore());
  52. }
  53.  
  54. sortedHighscores.remove(sortedHighscores.get(0)); // Contains the top 5
  55. storedHighscores = new ArrayList<>(sortedHighscores);
  56. }
  57.  
  58. dataFile.set("highscores", storedHighscores);
  59. fileManager.saveFile(dataFile);
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement