Ranked #333
Keine Reviewer
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
2 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/BungeeCore#333
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "Ranked" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
Sollte nach DB Änderung wegen Replay gemerged werden.
@ -37,3 +45,4 @@
}
@Override
public void handle(ByteArrayDataInput in, ServerInfo info) {
Du musst das Processing in einen Task auslagern (dauert zu lange, insbesondere mit dem ganzen Fight-Gedöns).
Machst du das nicht seit dem DB update (da dispatched du doch auch die plugin messages async)
@ -90,0 +121,4 @@
long time = Timestamp.from(Instant.now()).getTime() - fightRanges.getOrDefault(gameMode, defaultFightRange);
int page = 0;
do {
List<Fight> fightsPage = Fight.getPage(page, 32);
Du dürftest hier möglicherweise (Concurrency) auch den eigenen Fight zurückbekommen...
Wie kann ich das verhindern bzw rausfiltern?
@ -90,0 +129,4 @@
if (!gameMode.equals(fight.getGameMode().getSchemType())) continue;
if (fight.getStartTime().getTime() < time) return false;
if (fight.getBluePlayers().stream().map(FightPlayer::getUserID).collect(Collectors.toList()).containsAll(bluePlayers)) {
if (fight.getRedPlayers().stream().map(FightPlayer::getUserID).collect(Collectors.toList()).containsAll(redPlayers)) {
Hier bitte stattdessen verunden.
3 Fights in 30 Minuten statt 1 in 10 für ELO Sperre (bei MWG) -> gucken für WG noch nötig
@ -66,6 +73,21 @@ public class FightEndsHandler implements SpigotHandler {
blueResult = 0;
}
Set<Integer> teamsIds = fightEndsPacket.getBluePlayers().stream().map(SteamwarUser::get).map(SteamwarUser::getTeam).collect(Collectors.toSet());
Hier wäre ein Kommentar darüber, was die kommenden Zeilen genau filtern, evtl. noch ganz nett.
@ -69,0 +85,4 @@
return;
}
} finally {
gameModeGames.computeIfAbsent(fightEndsPacket.getGameMode(), s -> new ArrayList<>()).add(new Game(fightEndsPacket.getBluePlayers(), fightEndsPacket.getRedPlayers()));
Da hier häufig Einträge zu Beginn der Liste entfernt werden, wäre eine LinkedList wahrscheinlich die bessere Datenstruktur
Das removeIf sollte ich dann aber auch noch einmal optimieren, weil ich ja die Reihenfolge kenne. Und damit nur immer über den Anfang der List drüber gehen muss.
Kann denke nach Fight-Table-Speedup gemergt werden (oder ggf. auch davor)