Ranked #306
@ -73,11 +73,11 @@ public class FightEndsHandler implements SpigotHandler {
|
||||
|
||||
if (blueSchemOwner != 0 && redSchemOwner != 0) {
|
||||
for (int bluePlayer : fightEndsPacket.getBluePlayers()) {
|
||||
int playerElo = UserElo.getElo(bluePlayer, fightEndsPacket.getGameMode());
|
||||
int playerElo = UserElo.getElo(bluePlayer, fightEndsPacket.getGameMode()).orElse(1000);
|
||||
UserElo.setElo(bluePlayer, fightEndsPacket.getGameMode(), (int) Math.round(playerElo + K * (blueResult - blueWinExpectation)));
|
||||
}
|
||||
for (int redPlayer : fightEndsPacket.getRedPlayers()) {
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
|
||||
int playerElo = UserElo.getElo(redPlayer, fightEndsPacket.getGameMode());
|
||||
int playerElo = UserElo.getElo(redPlayer, fightEndsPacket.getGameMode()).orElse(1000);
|
||||
UserElo.setElo(redPlayer, fightEndsPacket.getGameMode(), (int) Math.round(playerElo + K * (1 - blueResult - redWinExpectation)));
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,8 @@
|
||||
|
||||
package de.steamwar.bungeecore.sql;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class UserElo {
|
||||
private UserElo() {
|
||||
}
|
||||
@ -27,15 +29,15 @@ public class UserElo {
|
||||
private static final Statement setElo = new Statement("UPDATE UserELo SET Elo = ? WHERE Season = ? AND UserID = ? AND GameMode = ?");
|
||||
private static final Statement place = new Statement("SELECT COUNT(*) AS Place FROM UserElo WHERE GameMode = ? AND Elo > ? AND Season = ?");
|
||||
|
||||
public static int getElo(int userID, String gameMode) {
|
||||
public static Optional<Integer> getElo(int userID, String gameMode) {
|
||||
return getElo(Season.getSeason(), userID, gameMode);
|
||||
}
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Da lieber eine Map<Map<>>, das bläst sich dann weniger auf. Da lieber eine Map<Map<>>, das bläst sich dann weniger auf.
YoyoNow
hat
Wie meinst du das genau? Wie meinst du das genau?
Lixfel
hat
HashMaps brauchen zur Kollisionsvermeidung immer Freiraum. Je kleiner die HashMaps bleiben, desto besser. HashMaps brauchen zur Kollisionsvermeidung immer Freiraum. Je kleiner die HashMaps bleiben, desto besser.
YoyoNow
hat
Würdest du dann GameMode UserId oder UserId GameMode als reihenfolge wählen? Würdest du dann GameMode UserId oder UserId GameMode als reihenfolge wählen?
Lixfel
hat
Definitiv Map<GameMode, Map<User, >> Definitiv Map<GameMode, Map<User, >>
|
||||
|
||||
public static int getElo(int season, int userID, String gameMode) {
|
||||
public static Optional<Integer> getElo(int season, int userID, String gameMode) {
|
||||
return elo.select(rs -> {
|
||||
if (rs.next())
|
||||
return rs.getInt("Elo");
|
||||
return 1000;
|
||||
return Optional.of(rs.getInt("Elo"));
|
||||
return Optional.empty();
|
||||
}, userID, gameMode, season);
|
||||
}
|
||||
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
Du hast hier sehr viel Codedopplung drin, würde mir eine teamunabhängige Abstrahierung wünschen.