From 28791fcc8a9e6d13393692f5e699a2baa5646955 Mon Sep 17 00:00:00 2001 From: Bas de Jong Date: Sat, 10 Jan 2026 22:47:53 +0100 Subject: [PATCH] Tournament is now without admins --- .../org/toop/app/widget/view/ServerView.java | 46 +++++++++---------- .../handlers/NetworkingGameClientHandler.java | 29 ++++++++---- .../framework/networking/server/Server.java | 7 ++- 3 files changed, 49 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/org/toop/app/widget/view/ServerView.java b/app/src/main/java/org/toop/app/widget/view/ServerView.java index 2c4989f..25cd0da 100644 --- a/app/src/main/java/org/toop/app/widget/view/ServerView.java +++ b/app/src/main/java/org/toop/app/widget/view/ServerView.java @@ -45,24 +45,6 @@ public final class ServerView extends ViewWidget { private void setupLayout(String userName) { var playerHeader = Primitive.header(user, false); - subscribeButton = Primitive.button( - "subscribe", - () -> new EventFlow().addPostEvent(new NetworkEvents.SendSubscribe(clientId, gameListSub.getValue())).postEvent(), - false, - true - ); // TODO localize - - var subscribe = Primitive.hbox(gameListSub, subscribeButton); - - var playerListSection = Primitive.vbox( - playerHeader, - Primitive.separator(), - subscribe, - listView - ); - - add(Pos.CENTER, playerListSection); - if (userName.equals("host")) { var tournamentButton = Primitive.hbox( gameListTour, @@ -75,12 +57,30 @@ public final class ServerView extends ViewWidget { ); add(Pos.BOTTOM_CENTER, tournamentButton); + } else { + subscribeButton = Primitive.button( + "subscribe", + () -> new EventFlow().addPostEvent(new NetworkEvents.SendSubscribe(clientId, gameListSub.getValue())).postEvent(), + false, + true + ); // TODO localize + + var subscribe = Primitive.hbox(gameListSub, subscribeButton); + + var playerListSection = Primitive.vbox( + playerHeader, + Primitive.separator(), + subscribe, + listView + ); + + add(Pos.CENTER, playerListSection); + + var disconnectButton = Primitive.button( + "disconnect", () -> transitionPrevious(), false); + + add(Pos.BOTTOM_LEFT, Primitive.vbox(disconnectButton)); } - - var disconnectButton = Primitive.button( - "disconnect", () -> transitionPrevious(), false); - - add(Pos.BOTTOM_LEFT, Primitive.vbox(disconnectButton)); } public void update(List players) { diff --git a/framework/src/main/java/org/toop/framework/networking/connection/handlers/NetworkingGameClientHandler.java b/framework/src/main/java/org/toop/framework/networking/connection/handlers/NetworkingGameClientHandler.java index 486a19b..9f6a02f 100644 --- a/framework/src/main/java/org/toop/framework/networking/connection/handlers/NetworkingGameClientHandler.java +++ b/framework/src/main/java/org/toop/framework/networking/connection/handlers/NetworkingGameClientHandler.java @@ -120,19 +120,32 @@ public class NetworkingGameClientHandler extends ChannelInboundHandlerAdapter { IO.println(rec); String gameTypeRaw = extract(rec, "GAMETYPE"); - String usersRaw = extract(rec, "USERS"); - String scoresRaw = extract(rec, "SCORES"); + String usersRaw = extract(rec, "USERS"); + String scoresRaw = extract(rec, "SCORES"); - String[] users = Arrays.stream(usersRaw.substring(1, usersRaw.length() - 1).split(",")) + if (usersRaw == null) return; + + String[] users; + if (usersRaw.length() > 2) { + users = Arrays.stream(usersRaw.substring(1, usersRaw.length() - 1).split(",")) .map(s -> s.trim().replace("\"", "")) .toArray(String[]::new); + } else { + users = new String[]{}; + } - Integer[] scores = Arrays.stream(scoresRaw.substring(1, scoresRaw.length() - 1).split(",")) - .map(String::trim) - .map(Integer::parseInt) - .toArray(Integer[]::new); + if (scoresRaw == null) return; + if (scoresRaw.length() > 2) { + Integer[] scores = Arrays.stream(scoresRaw.substring(1, scoresRaw.length() - 1).split(",")) + .map(String::trim) + .map(Integer::parseInt) + .toArray(Integer[]::new); + + eventBus.post(new NetworkEvents.TournamentResultResponse(this.connectionId, gameTypeRaw, users, scores)); + } else { + eventBus.post(new NetworkEvents.TournamentResultResponse(this.connectionId, gameTypeRaw, users, new Integer[]{})); + } - eventBus.post(new NetworkEvents.TournamentResultResponse(this.connectionId, gameTypeRaw, users, scores)); } private void gameMoveHandler(String rec) { 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 88d18c4..df362ed 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 @@ -279,11 +279,14 @@ public class Server implements GameServer { return; } + var tournamentUsers = new ArrayList<>(onlineUsers()); + tournamentUsers.removeIf(admins::contains); + Tournament tournament = new BasicTournament(new TournamentBuilder( this, new BasicTournamentRunner(), - new RoundRobinMatchMaker(onlineUsers()), - new BasicScoreSystem(onlineUsers()) + new RoundRobinMatchMaker(tournamentUsers), + new BasicScoreSystem(tournamentUsers) )); try {