diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java index d5e2e2a..953f2ef 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java @@ -36,6 +36,12 @@ public class ClientApp { int port = Integer.parseInt(parts[1]); LOGGER.info("You've selected the client. It will connect port {} at host {}", port, host); - Launcher.main(new String[] {}); + // Expose the chosen host/port to the UI via system properties so controllers + // (which read System.getProperty("casono.server.host"/"casono.server.port")) + // can obtain the correct connection information. + System.setProperty("casono.server.host", host); + System.setProperty("casono.server.port", Integer.toString(port)); + // Forward the original address argument to the launcher as well. + Launcher.main(new String[] { arg }); } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinomainui.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinomainui.java index 0088781..04b4366 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinomainui.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinomainui.java @@ -30,13 +30,22 @@ public class Casinomainui extends Application { * @throws IOException If loading the FXML fails. */ public void start(Stage stage) throws IOException { - FXMLLoader fxmlLoader = - new FXMLLoader(getClass().getResource("/ui-structure/Casinomainui.fxml")); + // If the launcher passed an address argument (ip:port), expose it as + // system properties so controllers can read it without embedding defaults. + var raw = getParameters().getRaw(); + if (raw != null && raw.size() > 0) { + String arg = raw.get(0); + String[] parts = arg.split(":", 2); + if (parts.length == 2) { + System.setProperty("casono.server.host", parts[0]); + System.setProperty("casono.server.port", parts[1]); + } + } + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/ui-structure/Casinomainui.fxml")); Scene scene = new Scene(fxmlLoader.load(), SCENE_WIDTH, SCENE_HEIGHT); stage.setTitle("Casono"); - javafx.scene.image.Image icon = - new javafx.scene.image.Image( - getClass().getResource("/images/logoinverted.png").toExternalForm()); + javafx.scene.image.Image icon = new javafx.scene.image.Image( + getClass().getResource("/images/logoinverted.png").toExternalForm()); stage.getIcons().add(icon); stage.setScene(scene); stage.setFullScreen(true); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java index c82a381..565804b 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java @@ -11,8 +11,12 @@ import javafx.scene.layout.VBox; import javafx.scene.shape.Rectangle; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; -/** Controller for the Casono main UI lobby. Handles UI initialization and user actions. */ +/** + * Controller for the Casono main UI lobby. Handles UI initialization and user + * actions. + */ public class CasinomainuiController { private static final Logger LOGGER = LogManager.getLogger(CasinomainuiController.class); @@ -41,8 +45,10 @@ public class CasinomainuiController { logoView.setImage(new Image(getClass().getResource("/images/logo.png").toExternalForm())); translationManager = LobbyButtonTranslationManager.getInstance(); - gridManager = - new LobbyButtonGridManager(new javafx.scene.layout.GridPane(), translationManager); + String host = System.getProperty("casono.server.host"); + int port = Integer.parseInt(System.getProperty("casono.server.port")); + ClientService clientService = new ClientService(host, port); + gridManager = new LobbyButtonGridManager(new javafx.scene.layout.GridPane(), translationManager, clientService); casinoTable.getChildren().clear(); casinoTable.getChildren().add(gridManager.getGridPane()); gridManager.renderLobbyButtons(); @@ -62,13 +68,13 @@ public class CasinomainuiController { return; } int buttonId = nextButtonId++; - int lobbyId = gridManager.createLobby(); try { + int lobbyId = gridManager.createLobby(); translationManager.addLobbyButton(buttonId, lobbyId); LOGGER.info("ButtonID: {}, LobbyID: {}", buttonId, lobbyId); gridManager.renderLobbyButtons(); } catch (Exception e) { - LOGGER.error("Error while adding lobby button: {}", e.getMessage()); + LOGGER.error("Failed to create or add lobby: {}", e.getMessage()); } } }