Ranked #306
@ -85,7 +85,7 @@ public class FightEndsHandler implements SpigotHandler {
|
||||
|
||||
private void calculateEloOfTeam(List<Integer> team, String gameMode, double factor) {
|
||||
for (int player : team) {
|
||||
int playerElo = UserElo.getElo(player, gameMode).orElse(ELO_DEFAULT);
|
||||
int playerElo = UserElo.getEloOrDefault(player, gameMode);
|
||||
UserElo.setElo(player, gameMode, (int) Math.round(playerElo + K * factor));
|
||||
}
|
||||
}
|
||||
|
@ -41,6 +41,10 @@ public class UserElo {
|
||||
private static final Statement maxElo = new Statement("SELECT MAX(Elo) AS MaxElo FROM UserElo WHERE Season = ? AND GameMode = ?");
|
||||
private static final Statement fightsOfSeason = new Statement("SELECT COUNT(*) AS Fights FROM FightPlayer INNER JOIN Fight F on FightPlayer.FightID = F.FightID WHERE UserID = ? AND GameMode = ? AND UNIX_TIMESTAMP(StartTime) + Duration >= UNIX_TIMESTAMP(?)");
|
||||
|
||||
public static int getEloOrDefault(int userID, String gameMode) {
|
||||
Lixfel markierte diese Unterhaltung als gelöst
Veraltet
|
||||
return getElo(userID, gameMode).orElse(ELO_DEFAULT);
|
||||
}
|
||||
|
||||
public static Optional<Integer> getElo(int userID, String gameMode) {
|
||||
return gameModeUserEloCache.computeIfAbsent(gameMode, gm -> {
|
||||
return new HashMap<>();
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Du clearst den Cache eh schon stündlich, das ist häufig genug auch für Seasonänderungen. Du clearst den Cache eh schon stündlich, das ist häufig genug auch für Seasonänderungen.
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
Mach es doch wie in der SchemElo und gib die Default-Elo zurück, wenn es keine gibt... Falls du eine Funktion brauchst, wo es relevant ist, ob überhaupt eine exisitiert, dann habe das doch als 2 verschiedene Funktionen. Damit würde dann z.B. der FightEndsHandler nichts mehr von der Default-Elo wissen müssen
Ist das so in Ordnung wie ich das gemacht habe?