added possibility for same scores in PointsWinScore

This commit is contained in:
2025-10-11 00:19:02 +02:00
parent c3f5170c33
commit e871c0bcb5
2 changed files with 31 additions and 9 deletions

View File

@@ -3,12 +3,25 @@ package eu.mhsl.minenet.minigames.score;
import eu.mhsl.minenet.minigames.util.MapUtil; import eu.mhsl.minenet.minigames.util.MapUtil;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.Set; import java.util.Set;
public class LowestPointsWinScore extends PointsWinScore { public class LowestPointsWinScore extends PointsWinScore {
@Override @Override
protected void insertResultImplementation(Set<Player> p, int currentPoints) { protected void insertResultImplementation(Set<Player> p, int currentPoints) {
this.scoreOrder.put(p, currentPoints); Set<Player> combined = scoreOrder.entrySet().stream()
.filter(entrySet -> Objects.equals(entrySet.getValue(), currentPoints))
.map(Map.Entry::getKey)
.findFirst()
.orElseGet(() -> {
Set<Player> s = new HashSet<>();
scoreOrder.put(s, currentPoints);
return s;
});
combined.addAll(p);
this.scoreOrder = MapUtil.sortReversedByValue(this.scoreOrder); this.scoreOrder = MapUtil.sortReversedByValue(this.scoreOrder);
getScores().clear(); getScores().clear();
this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player)); this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player));

View File

@@ -16,7 +16,17 @@ public class PointsWinScore extends Score {
@Override @Override
protected void insertResultImplementation(Set<Player> p, int currentPoints) { protected void insertResultImplementation(Set<Player> p, int currentPoints) {
this.scoreOrder.put(p, currentPoints); Set<Player> combined = scoreOrder.entrySet().stream()
.filter(entrySet -> Objects.equals(entrySet.getValue(), currentPoints))
.map(Map.Entry::getKey)
.findFirst()
.orElseGet(() -> {
Set<Player> s = new HashSet<>();
scoreOrder.put(s, currentPoints);
return s;
});
combined.addAll(p);
this.scoreOrder = MapUtil.sortByValue(this.scoreOrder); this.scoreOrder = MapUtil.sortByValue(this.scoreOrder);
getScores().clear(); getScores().clear();
this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player)); this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player));
@@ -42,13 +52,12 @@ public class PointsWinScore extends Score {
.filter(player -> !player.getUsername().isBlank()) .filter(player -> !player.getUsername().isBlank())
.toList() .toList()
.isEmpty()) .isEmpty())
.map(players -> players .map(players -> players.stream()
.stream() .map(Player::getUsername)
.filter(player -> scoreOrder.get(Set.of(player)) != null) .sorted()
.map(player -> player.getUsername()+" : "+scoreOrder.get(Set.of(player)).toString()) .collect(Collectors.joining(", "))
.collect(Collectors.joining(", ")) + " : " + scoreOrder.get(players)
) ).toList()
.toList()
) )
.undent() .undent()
.newLine() .newLine()