Feat: Add chat box into game ui

This commit is contained in:
Mathis Ginkel
2026-04-22 15:04:10 +02:00
parent 69fc00a3b2
commit 7eafaba65a
2 changed files with 21 additions and 9 deletions
@@ -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();
}
}
@@ -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()");
}