added possibility for same scores in PointsWinScore
This commit is contained in:
@@ -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));
|
||||||
|
@@ -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()
|
||||||
|
Reference in New Issue
Block a user