From 955cb6109cc86a92ae8e482cae0f05b59d520ba4 Mon Sep 17 00:00:00 2001 From: Bas de Jong Date: Sun, 11 Jan 2026 01:54:40 +0100 Subject: [PATCH] Added back ability to shuffle matchmaker --- .../org/toop/framework/networking/server/Server.java | 10 ++++++++-- .../networking/server/handlers/MessageHandler.java | 2 +- .../server/tournaments/matchmakers/MatchMaker.java | 2 ++ .../tournaments/matchmakers/RoundRobinMatchMaker.java | 6 ++++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/framework/src/main/java/org/toop/framework/networking/server/Server.java b/framework/src/main/java/org/toop/framework/networking/server/Server.java index 795c2d9..68e411f 100644 --- a/framework/src/main/java/org/toop/framework/networking/server/Server.java +++ b/framework/src/main/java/org/toop/framework/networking/server/Server.java @@ -13,6 +13,7 @@ import org.toop.framework.networking.server.stores.TurnBasedGameTypeStore; import org.toop.framework.networking.server.tournaments.*; import org.toop.framework.networking.server.tournaments.matchmakers.RoundRobinMatchMaker; import org.toop.framework.networking.server.tournaments.scoresystems.BasicScoreSystem; +import org.toop.framework.networking.server.tournaments.shufflers.RandomShuffle; import org.toop.framework.utils.ImmutablePair; import java.util.*; @@ -284,7 +285,7 @@ public class Server implements GameServer { return true; } - public void startTournament(String gameType, NettyClient requestor) { + public void startTournament(String gameType, NettyClient requestor, boolean shuffle) { if (!admins.contains(requestor)) { requestor.send("ERR you do not have the privileges to start a tournament"); return; @@ -293,10 +294,15 @@ public class Server implements GameServer { var tournamentUsers = new ArrayList<>(onlineUsers()); tournamentUsers.removeIf(admins::contains); + var matchMaker = new RoundRobinMatchMaker(tournamentUsers); + if (shuffle) { + matchMaker.shuffle(new RandomShuffle()); // Remove if not wanting to shuffle + } + Tournament tournament = new BasicTournament(new TournamentBuilder( this, new AsyncTournamentRunner(), - new RoundRobinMatchMaker(tournamentUsers), + matchMaker, new BasicScoreSystem(tournamentUsers) )); diff --git a/framework/src/main/java/org/toop/framework/networking/server/handlers/MessageHandler.java b/framework/src/main/java/org/toop/framework/networking/server/handlers/MessageHandler.java index fd559a9..de1e4c2 100644 --- a/framework/src/main/java/org/toop/framework/networking/server/handlers/MessageHandler.java +++ b/framework/src/main/java/org/toop/framework/networking/server/handlers/MessageHandler.java @@ -119,7 +119,7 @@ public class MessageHandler implements Handler { if(!hasArgs(p.args())) return; if (p.args()[0].equalsIgnoreCase("start") && p.args().length > 1) { - server.startTournament(p.args()[1], client); + server.startTournament(p.args()[1], client, false); // TODO add shuffle to msg } } } diff --git a/framework/src/main/java/org/toop/framework/networking/server/tournaments/matchmakers/MatchMaker.java b/framework/src/main/java/org/toop/framework/networking/server/tournaments/matchmakers/MatchMaker.java index 1638c73..6aba783 100644 --- a/framework/src/main/java/org/toop/framework/networking/server/tournaments/matchmakers/MatchMaker.java +++ b/framework/src/main/java/org/toop/framework/networking/server/tournaments/matchmakers/MatchMaker.java @@ -2,9 +2,11 @@ package org.toop.framework.networking.server.tournaments.matchmakers; import org.toop.framework.networking.server.client.NettyClient; import org.toop.framework.networking.server.tournaments.TournamentMatch; +import org.toop.framework.networking.server.tournaments.shufflers.Shuffler; import java.util.List; public interface MatchMaker extends Iterable { List getPlayers(); + void shuffle(Shuffler shuffler); } diff --git a/framework/src/main/java/org/toop/framework/networking/server/tournaments/matchmakers/RoundRobinMatchMaker.java b/framework/src/main/java/org/toop/framework/networking/server/tournaments/matchmakers/RoundRobinMatchMaker.java index 3fdb593..5ef3e10 100644 --- a/framework/src/main/java/org/toop/framework/networking/server/tournaments/matchmakers/RoundRobinMatchMaker.java +++ b/framework/src/main/java/org/toop/framework/networking/server/tournaments/matchmakers/RoundRobinMatchMaker.java @@ -2,6 +2,7 @@ package org.toop.framework.networking.server.tournaments.matchmakers; import org.toop.framework.networking.server.client.NettyClient; import org.toop.framework.networking.server.tournaments.TournamentMatch; +import org.toop.framework.networking.server.tournaments.shufflers.Shuffler; import java.util.Iterator; import java.util.List; @@ -15,6 +16,11 @@ public class RoundRobinMatchMaker implements MatchMaker { this.players = players; } + @Override + public void shuffle(Shuffler shuffler) { + shuffler.shuffle(players); + } + @Override public List getPlayers() { return players;