-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLeaderboardManager.java
More file actions
38 lines (30 loc) · 1.27 KB
/
LeaderboardManager.java
File metadata and controls
38 lines (30 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.*;
import java.util.*;
public class LeaderboardManager {
public static void updateLeaderboard(Player player) {
String folder = "results";
new File(folder).mkdirs();
String fileName = folder + "/leaderboard_" + player.getDifficulty().name().toLowerCase() + ".txt";
List<String> entries = new ArrayList<>();
// Load existing leaderboard
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = br.readLine()) != null)
entries.add(line);
} catch (IOException ignored) {}
// Add current player
entries.add(player.getName() + "," + player.getTimeTakenInSeconds());
// Sort leaderboard by time
entries.sort(Comparator.comparingLong(e -> Long.parseLong(e.split(",")[1])));
// Keep only top 5
while (entries.size() > 5)
entries.remove(entries.size() - 1);
// Save updated leaderboard
try (BufferedWriter bw = new BufferedWriter(new FileWriter(fileName))) {
for (String entry : entries)
bw.write(entry + "\n");
} catch (IOException e) {
System.out.println("⚠️ Could not update leaderboard.");
}
}
}