SteamWar/BungeeCore
Archiviert
13
2

Ranked #306

Zusammengeführt
Lixfel hat 25 Commits von Ranked nach master 2022-03-13 20:26:16 +01:00 zusammengeführt
Nur Änderungen aus Commit 64cb91a454 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -20,17 +20,28 @@
package de.steamwar.bungeecore.comms.handlers;
import com.google.common.io.ByteArrayDataInput;
import de.steamwar.bungeecore.ArenaMode;
import de.steamwar.bungeecore.comms.SpigotHandler;
import de.steamwar.bungeecore.comms.packets.FightEndsPacket;
import de.steamwar.bungeecore.sql.SchemElo;
import de.steamwar.bungeecore.sql.SchemNode;
import de.steamwar.bungeecore.sql.SchematicType;
import de.steamwar.bungeecore.sql.UserElo;
import net.md_5.bungee.api.config.ServerInfo;
public class FightEndsHandler implements SpigotHandler {
private int K = 20;
Lixfel markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Bitte überall mal deine Imports aufräumen! (Warum hast du das nicht autoaktiviert?)

Bitte überall mal deine Imports aufräumen! (Warum hast du das nicht autoaktiviert?)
Veraltet
Review

Keine ahnung

Keine ahnung
@Override
public void handle(ByteArrayDataInput in, ServerInfo info) {
FightEndsPacket fightEndsPacket = new FightEndsPacket(in);
Lixfel markierte diese Unterhaltung als gelöst Veraltet
Veraltet
Review

Man könnte überlegen, ob man den K-Wert nicht vom Seasonstatus abhängig macht... Am Anfang der Season deutlich größer und dann kleiner werdend...

Man könnte überlegen, ob man den K-Wert nicht vom Seasonstatus abhängig macht... Am Anfang der Season deutlich größer und dann kleiner werdend...
Veraltet
Review

Klingt interessant. Jedoch weiß ich nicht ob wir das wirklich am Anfang machen wollen, ich würde es erstmal so lassen, aber vllt in einer Überarbeitung dann ändern ok?

Klingt interessant. Jedoch weiß ich nicht ob wir das wirklich am Anfang machen wollen, ich würde es erstmal so lassen, aber vllt in einer Überarbeitung dann ändern ok?
double playerRatio = Math.min(fightEndsPacket.getBluePlayers().size(), fightEndsPacket.getRedPlayers().size()) / (double )Math.max(fightEndsPacket.getBluePlayers().size(), fightEndsPacket.getRedPlayers().size());
if (!ArenaMode.getBySchemType(SchematicType.fromDB(fightEndsPacket.getGameMode())).isRanked()) {
return;
}
double playerRatio = 1 - (Math.min(fightEndsPacket.getBluePlayers().size(), fightEndsPacket.getRedPlayers().size()) / (double )Math.max(fightEndsPacket.getBluePlayers().size(), fightEndsPacket.getRedPlayers().size()));
YoyoNow markierte diese Unterhaltung als gelöst
Review

Diese Ratio-Berechnung finde ich komplexer als nötig, sollte sich einfacher formulieren lassen

Diese Ratio-Berechnung finde ich komplexer als nötig, sollte sich einfacher formulieren lassen
Review

Hast du eine Idee, ich wüsste nicht wie außer das ich das 1- rausnehmen kann

Hast du eine Idee, ich wüsste nicht wie außer das ich das 1- rausnehmen kann
Review

ratio = bluePlayerSize > redPlayerSize ? redPlayerSize / bluePlayerSize : bluePlayerSize / redPlayerSize

if ratio < 0.6 return;

ratio = bluePlayerSize > redPlayerSize ? redPlayerSize / bluePlayerSize : bluePlayerSize / redPlayerSize if ratio < 0.6 return;
if (playerRatio >= 0.4) {
return;
}
@ -44,5 +55,31 @@ public class FightEndsHandler implements SpigotHandler {
blueResult = 0;
}
int blueSchemOwner = SchemNode.getSchematicOwner(fightEndsPacket.getBlueSchem());
int redSchemOwner = SchemNode.getSchematicOwner(fightEndsPacket.getRedSchem());
if ((blueSchemOwner == 0 && redSchemOwner != 0) || (blueSchemOwner != 0 && redSchemOwner == 0)) {
return;
}
int blueSchemElo = SchemElo.getElo(fightEndsPacket.getBlueSchem());
int redSchemElo = SchemElo.getElo(fightEndsPacket.getRedSchem());
double blueWinExpectation = 1 / (1 + Math.pow(10, (redSchemElo - blueSchemElo) / 600f));
double redWinExpectation = 1 / (1 + Math.pow(10, (blueSchemElo - redSchemElo) / 600f));
SchemElo.setElo(fightEndsPacket.getBlueSchem(), (int) Math.round(blueSchemElo + K * (blueResult - blueWinExpectation)));
SchemElo.setElo(fightEndsPacket.getRedSchem(), (int) Math.round(redSchemElo + K * (1 - blueResult - redWinExpectation)));
if (blueSchemOwner != 0 && redSchemOwner != 0) {
for (int bluePlayer : fightEndsPacket.getBluePlayers()) {
int playerElo = UserElo.getElo(bluePlayer, fightEndsPacket.getGameMode());
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
Veraltet
Review

Du hast hier sehr viel Codedopplung drin, würde mir eine teamunabhängige Abstrahierung wünschen.

Du hast hier sehr viel Codedopplung drin, würde mir eine teamunabhängige Abstrahierung wünschen.
int playerElo = UserElo.getElo(redPlayer, fightEndsPacket.getGameMode());
UserElo.setElo(redPlayer, fightEndsPacket.getGameMode(), (int) Math.round(playerElo + K * (1 - blueResult - redWinExpectation)));
}
}
}
}