Fix Leaderboard

Signed-off-by: Chaoscaot <max@maxsp.de>
This commit is contained in:
2025-12-01 14:49:23 +01:00
parent f535e056c7
commit dfb71594b9
3 changed files with 8 additions and 9 deletions
@@ -55,10 +55,7 @@ class Leaderboard(id: EntityID<CompositeID>) : CompositeEntity(id) {
@JvmStatic
fun getPlayerTime(user: SteamwarUser, name: String) = useDb {
findById(CompositeID {
it[LeaderboardTable.userId] = user.id.value
it[LeaderboardTable.name] = name
})
find { (LeaderboardTable.userId eq user.id.value) and (LeaderboardTable.name eq name) }.firstOrNull()
}
@JvmStatic
@@ -75,8 +72,7 @@ class Leaderboard(id: EntityID<CompositeID>) : CompositeEntity(id) {
@JvmStatic
fun upsert(userId: Int, name: String, time: Long, bestTime: Boolean) = useDb {
LeaderboardTable.upsert(
onUpdateExclude = listOf(LeaderboardTable.updatedAt, LeaderboardTable.userId, LeaderboardTable.name),
where = { (LeaderboardTable.userId eq userId) and (LeaderboardTable.name eq name) }
onUpdateExclude = listOf(LeaderboardTable.updatedAt, LeaderboardTable.userId, LeaderboardTable.name)
) {
it[LeaderboardTable.userId] = userId
it[LeaderboardTable.name] = name
@@ -45,7 +45,7 @@ import java.util.*;
@Linked
public class JumpAndRun implements Listener {
public static final String JUMP_AND_RUN_CONFIG = "jump_and_run";
public static final String JUMP_AND_RUN_CONFIG = "jump_and_run@winter25";
private static final String BAR_EMPTY = "||||||||||||||||||||||||||||||";
@@ -58,7 +58,10 @@ public class LeaderboardManager implements Listener {
entities.forEach(REntity::die);
entities.clear();
List<Leaderboard> leaderboard = getLeaderboard();
if (leaderboard.isEmpty()) return;
if (leaderboard.isEmpty()) {
bestTime = Long.MAX_VALUE;
return;
}
bestTime = leaderboard.get(0).getTime();
for (int i = 0; i < leaderboard.size(); i++) {
Leaderboard entry = leaderboard.get(i);
@@ -143,7 +146,7 @@ public class LeaderboardManager implements Listener {
public long getPlayerTime(SteamwarUser user) {
Leaderboard lb = Leaderboard.getPlayerTime(user, configKey);
if(lb != null) return lb.getTime();
return 0;
return Long.MAX_VALUE;
}
private int getPlayerPlacement(SteamwarUser user) {