Ranked #306
@ -1,52 +0,0 @@
|
||||
/*
|
||||
This file is a part of the SteamWar software.
|
||||
|
||||
Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.bungeecore.sql;
|
||||
|
||||
public class Elo {
|
||||
|
||||
private static final Statement elo = new Statement("SELECT Elo FROM Elo WHERE UserID = ? AND GameMode = ? AND Season = ?");
|
||||
private static final Statement place = new Statement("SELECT COUNT(*) AS Place FROM Elo WHERE GameMode = ? AND Elo > ? AND Season = ?");
|
||||
|
||||
private Elo(){}
|
||||
|
||||
public static int getElo(int userID, String gameMode){
|
||||
return getElo(Season.getSeason(), userID, gameMode);
|
||||
}
|
||||
|
||||
public static int getElo(int season, int userID, String gameMode){
|
||||
return elo.select(rs -> {
|
||||
if(rs.next())
|
||||
return rs.getInt("Elo");
|
||||
return 1000;
|
||||
}, userID, gameMode, season);
|
||||
}
|
||||
|
||||
public static int getPlacement(int elo, String gameMode){
|
||||
return getPlacement(Season.getSeason(), elo, gameMode);
|
||||
}
|
||||
|
||||
public static int getPlacement(int season, int elo, String gameMode){
|
||||
return place.select(rs -> {
|
||||
if(rs.next())
|
||||
return rs.getInt("Place");
|
||||
return -1;
|
||||
}, gameMode, elo, season);
|
||||
}
|
||||
}
|
48
src/de/steamwar/bungeecore/sql/SchemElo.java
Normale Datei
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* This file is a part of the SteamWar software.
|
||||
*
|
||||
* Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.bungeecore.sql;
|
||||
|
||||
public class SchemElo {
|
||||
private SchemElo() {}
|
||||
|
||||
private static final Statement elo = new Statement("SELECT SchemElo FROM Elo WHERE SchemID = ? AND Season = ?");
|
||||
private static final Statement setElo = new Statement("UPDATE SchemElo SET Elo = ? WHERE Season = ? AND SchemID = ?");
|
||||
// private static final Statement place = new Statement("SELECT COUNT(*) AS Place FROM SchemElo WHERE Elo > ? AND Season = ?");
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
|
||||
|
||||
public static int getElo(int schemID) {
|
||||
return getElo(Season.getSeason(), schemID);
|
||||
}
|
||||
|
||||
public static int getElo(int season, int schemID) {
|
||||
return elo.select(rs -> {
|
||||
if (rs.next())
|
||||
return rs.getInt("Elo");
|
||||
return 1000;
|
||||
}, schemID, season);
|
||||
}
|
||||
|
||||
public static void setElo(int schemID, int elo) {
|
||||
setElo(Season.getSeason(), schemID, elo);
|
||||
}
|
||||
|
||||
public static void setElo(int season, int schemID, int elo) {
|
||||
setElo.update(elo, season, schemID);
|
||||
}
|
||||
}
|
61
src/de/steamwar/bungeecore/sql/UserElo.java
Normale Datei
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* This file is a part of the SteamWar software.
|
||||
*
|
||||
* Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.bungeecore.sql;
|
||||
|
||||
public class UserElo {
|
||||
private UserElo() {
|
||||
}
|
||||
|
||||
private static final Statement elo = new Statement("SELECT UserElo FROM Elo WHERE UserID = ? AND GameMode = ? AND Season = ?");
|
||||
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) {
|
||||
return getElo(Season.getSeason(), userID, gameMode);
|
||||
}
|
||||
|
||||
public static int getElo(int season, int userID, String 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, >>
|
||||
return elo.select(rs -> {
|
||||
if (rs.next())
|
||||
return rs.getInt("Elo");
|
||||
return 1000;
|
||||
}, userID, gameMode, season);
|
||||
}
|
||||
|
||||
public static void setElo(int userId, String gameMode, int elo) {
|
||||
setElo(Season.getSeason(), userId, gameMode, elo);
|
||||
}
|
||||
Lixfel markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
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 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
YoyoNow
hat
Ist das so in Ordnung wie ich das gemacht habe? Ist das so in Ordnung wie ich das gemacht habe?
|
||||
|
||||
public static void setElo(int season, int userId, String gameMode, int elo) {
|
||||
setElo.update(elo, season, userId, gameMode);
|
||||
}
|
||||
|
||||
public static int getPlacement(int elo, String gameMode) {
|
||||
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.
|
||||
return getPlacement(Season.getSeason(), elo, gameMode);
|
||||
}
|
||||
|
||||
public static int getPlacement(int season, int elo, String gameMode) {
|
||||
return place.select(rs -> {
|
||||
if (rs.next())
|
||||
return rs.getInt("Place");
|
||||
return -1;
|
||||
}, gameMode, elo, season);
|
||||
}
|
||||
}
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Wenn hier eh schon mit Integer gearbeitet wird, kann man das Optional auch weglassen... Wenn hier eh schon mit Integer gearbeitet wird, kann man das Optional auch weglassen...
YoyoNow
hat
Würde ich ungern, weil so kann man darauf mit Würde ich ungern, weil so kann man darauf mit `.orElse()` ziemlich gut einen default direkt auswählen.
YoyoNow
hat
Und halt Optional.empty() als es gibt keinen wert in der db wählen, macht es für die emblem berechnung angenehmer, als mit einem spezial value zu arbeiten. Und halt Optional.empty() als es gibt keinen wert in der db wählen, macht es für die emblem berechnung angenehmer, als mit einem spezial value zu arbeiten.
|
Wird vorrausichtlich Ingame nie benötigt (MC Chat ist nicht unbedingt praktisch zum Anzeigen von Bestenlisten)