Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.luke.cheskin.Utils;
- import org.simpleyaml.configuration.file.YamlFile;
- import java.util.*;
- import java.util.stream.Collectors;
- public class ScoreManager {
- FileManager fileManager = new FileManager();
- YamlFile dataFile = fileManager.loadFile();
- public void addScore(Player player, int score) {
- // Add new score to players personal list
- ArrayList<Player> storedPlayers = (ArrayList<Player>) dataFile.get("players");
- ArrayList<Integer> playerScores = player.getScores();
- for (Player storedPlayer : storedPlayers) {
- if (storedPlayer.getUsername().equals(player.getUsername())) {
- player = storedPlayer;
- }
- }
- storedPlayers.remove(player);
- playerScores.add(score);
- player.setScores(playerScores);
- storedPlayers.add(player);
- dataFile.set("players", storedPlayers);
- // Check high scores
- ArrayList<Highscore> storedHighscores = (ArrayList<Highscore>) dataFile.get("highscores");
- if (storedHighscores.size() < 5) {
- // There is space to add a high score regardless of the score
- storedHighscores.add(new Highscore(player.getUsername(), score));
- } else {
- // 5 Values
- //SortedSet<Highscore> highscores = new TreeSet<>(Comparator.comparingInt(highscore -> highscore.score));
- //highscores.addAll(storedHighscores);
- ArrayList<Highscore> sortedHighscores = (ArrayList<Highscore>) storedHighscores.stream()
- .sorted(Comparator.comparingInt(Highscore::getScore))
- .collect(Collectors.toList());
- for (Highscore h : sortedHighscores) {
- System.out.println(h.getUsername() + ": " + h.getScore());
- }
- sortedHighscores.remove(sortedHighscores.get(0)); // Contains the top 5
- storedHighscores = new ArrayList<>(sortedHighscores);
- }
- dataFile.set("highscores", storedHighscores);
- fileManager.saveFile(dataFile);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement