From 7eafaba65a703bdd7e282bf8bfccc6f36f6eb377 Mon Sep 17 00:00:00 2001 From: Mathis Ginkel Date: Wed, 22 Apr 2026 15:04:10 +0200 Subject: [PATCH] Feat: Add chat box into game ui --- .../ui/gameui/CasinoGameController.java | 22 +++++++++++-------- .../casono/client/ui/gameui/CasinoGameUI.java | 8 +++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameController.java index 1a65be2..5ef57da 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameController.java @@ -7,6 +7,7 @@ import ch.unibas.dmi.dbis.cs108.casono.client.game.GameState; import ch.unibas.dmi.dbis.cs108.casono.client.game.Player; import ch.unibas.dmi.dbis.cs108.casono.client.game.PlayerId; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; +import ch.unibas.dmi.dbis.cs108.casono.client.ui.chatui.ChatBoxController; import ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.gameuicomponents.PlayerStatusController; import ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.gameuicomponents.TaskbarController; import java.io.IOException; @@ -18,6 +19,7 @@ import java.util.concurrent.CompletableFuture; import java.util.logging.Logger; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; +import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Label; @@ -239,7 +241,6 @@ public class CasinoGameController { // empty display only (optional) renderCommunityCards(List.of()); renderPlayerCards(List.of()); - initializeChatIfPossible(); } /** @@ -257,7 +258,7 @@ public class CasinoGameController { this.chatUsername = username; this.chatClientService = clientService; this.chatLobbyId = lobbyId; - initializeChatIfPossible(); + //initializeChatIfPossible(); } /** @@ -270,16 +271,14 @@ public class CasinoGameController { } try { - chatController = new ChatController(chatUsername, chatClientService); - + ChatBoxController chatBoxController = new ChatBoxController(chatUsername, chatController); URL resource = getClass().getResource("/ui-structure/components/chatui/chatbox.fxml"); FXMLLoader loader = new FXMLLoader(resource); - loader.setController(chatController.getChatBoxController()); + loader.setController(chatBoxController); - Parent root = loader.load(); - - Stage chatStage = new Stage(); + chatContainer.getChildren().add(loader.load()); + /* chatStage.setTitle("Casono"); String iconPath = getClass().getResource("/images/logoinverted.png").toExternalForm(); @@ -294,7 +293,7 @@ public class CasinoGameController { chatStage.setOnCloseRequest(event -> chatInitialized = false); chatStage.show(); - + */ if (chatLobbyId >= 0) { chatController.setLobbyChat(chatLobbyId); } @@ -1340,4 +1339,9 @@ public class CasinoGameController { } return null; } + + public void startChat(ChatController chatController) { + this.chatController = chatController; + initializeChatIfPossible(); + } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameUI.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameUI.java index d6908c1..15f7d27 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameUI.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameUI.java @@ -1,5 +1,6 @@ package ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui; +import ch.unibas.dmi.dbis.cs108.casono.client.chat.ChatController; import ch.unibas.dmi.dbis.cs108.casono.client.ClientApp; import ch.unibas.dmi.dbis.cs108.casono.client.game.GameService; import ch.unibas.dmi.dbis.cs108.casono.client.game.PlayerId; @@ -25,6 +26,7 @@ public class CasinoGameUI extends Application { private static final Logger LOG = Logger.getLogger(CasinoGameUI.class.getName()); private static ClientService clientService; + private static ChatController chatController; private static String username; private static int lobbyId = -1; @@ -65,6 +67,10 @@ public class CasinoGameUI extends Application { CasinoGameUI.lobbyId = lobbyId; } + public static void setChatController(ChatController chatController) { + CasinoGameUI.chatController = chatController; + } + /** * The main entry point for the JavaFX application. This method is called after the application * is @@ -113,6 +119,8 @@ public class CasinoGameUI extends Application { Parent root = fxmlLoader.load(); CasinoGameController controller = fxmlLoader.getController(); + controller.startChat(chatController); + if (lobbyId <= 0) { throw new IllegalStateException("CasinoGameUI: lobbyId must be set before start()"); }