From 5d31e6346d6bcdef13271cc10f6c63bb4bac6683 Mon Sep 17 00:00:00 2001 From: AleandroPagani Date: Wed, 6 May 2026 15:48:38 +0200 Subject: [PATCH 01/10] Fix: Improvements to UI --- .../polimi/ingsw/gc14/ClientLauncherGUI.java | 2 +- .../java/it/polimi/ingsw/gc14/Model/Game.java | 1 + .../it/polimi/ingsw/gc14/View/GUI/GUI.java | 6 ++- .../gc14/View/GUI/MainFXMLController.java | 48 ++++++++++++++++++- .../polimi/ingsw/gc14/View/GUI/MainView.java | 4 ++ src/main/resources/GUIScene/main.fxml | 14 ++++-- 6 files changed, 66 insertions(+), 9 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/ClientLauncherGUI.java b/src/main/java/it/polimi/ingsw/gc14/ClientLauncherGUI.java index e94be59..1bd2987 100644 --- a/src/main/java/it/polimi/ingsw/gc14/ClientLauncherGUI.java +++ b/src/main/java/it/polimi/ingsw/gc14/ClientLauncherGUI.java @@ -32,7 +32,7 @@ public class ClientLauncherGUI extends Application { // Connessione in un thread separato — non bloccare il JavaFX thread! new Thread(() -> { if (networkType == 0) { - RMIClient client = new RMIClient(controller, ip, 1099); + RMIClient client = new RMIClient(controller, ip, 1099, "localhost"); if (client.connect(nome, numPlayer)) { controller.setClient(client); // Da qui in poi il server chiamerà onGameInit → render() diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java index 01b43b2..ae851f1 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java @@ -62,6 +62,7 @@ public class Game implements Serializable { * The mapping between slots and the players assigned to them. */ private HashMap slotMap; + public HashMap getSlotMap() {return slotMap;}; /** * The configured number of players for this game. diff --git a/src/main/java/it/polimi/ingsw/gc14/View/GUI/GUI.java b/src/main/java/it/polimi/ingsw/gc14/View/GUI/GUI.java index 9a49330..3d35d5f 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/GUI/GUI.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/GUI/GUI.java @@ -22,6 +22,11 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI public void setModel(Game model) { this.model = model; mainView.setModel(model); + + Platform.runLater(() -> { + stage.setScene(mainView.getScene()); + }); + } /** @@ -32,7 +37,6 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI public void render() { Platform.runLater(() -> { mainView.render(); - stage.setScene(mainView.getScene()); }); } diff --git a/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainFXMLController.java b/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainFXMLController.java index 496245b..181ff5f 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainFXMLController.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainFXMLController.java @@ -2,12 +2,17 @@ package it.polimi.ingsw.gc14.View.GUI; import it.polimi.ingsw.gc14.Model.Cards.TribeCard; import it.polimi.ingsw.gc14.Model.Game; +import it.polimi.ingsw.gc14.Model.Player; +import it.polimi.ingsw.gc14.Model.Slot; import javafx.fxml.FXML; +import javafx.geometry.Pos; +import javafx.scene.control.Button; import javafx.scene.image.*; import javafx.scene.layout.*; import javafx.scene.shape.*; import java.util.List; +import java.util.Map; public class MainFXMLController { @@ -17,6 +22,8 @@ public class MainFXMLController { @FXML private HBox myHand; @FXML private VBox playersHand; + @FXML private Button reload; + private Game model; public void setModel(Game model) { @@ -26,17 +33,54 @@ public class MainFXMLController { public void render() { Image placeholder = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-001.png")); + upperList.setSpacing(6); + upperList.setAlignment(Pos.CENTER); + upperList.getChildren().clear(); + for (TribeCard card : model.getUpperListTribeCards()) { ImageView view = new ImageView(placeholder); - view.setFitHeight(250); + view.fitHeightProperty().bind(upperList.heightProperty().subtract(10)); view.setPreserveRatio(true); + + view.setOnMouseClicked(e -> System.out.println(card.toStringBoard())); + upperList.getChildren().add(view); } + + board.setSpacing(6); + board.setAlignment(Pos.CENTER); + board.getChildren().clear(); + + for (Map.Entry entry : model.getSlotMap().entrySet()) { + Slot slot = entry.getKey(); + Image slotImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-"+slot.getSlotId()+".png")); + ImageView view = new ImageView(slotImg); + + view.fitHeightProperty().bind(board.heightProperty().subtract(10)); + view.setPreserveRatio(true); + + //view.setOnMouseClicked(e -> System.out.println(card.toStringBoard())); + + board.getChildren().add(view); + + } + + + + + lowerList.setSpacing(6); + lowerList.setAlignment(Pos.CENTER); + lowerList.getChildren().clear(); + + lowerList.getChildren().clear(); for (TribeCard card : model.getLowerListTribeCards()) { ImageView view = new ImageView(placeholder); - view.setFitHeight(250); + view.fitHeightProperty().bind(upperList.heightProperty().subtract(10)); view.setPreserveRatio(true); + + view.setOnMouseClicked(e -> System.out.println(card.toStringBoard())); + lowerList.getChildren().add(view); } } diff --git a/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainView.java b/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainView.java index 7df0470..c24ae9c 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainView.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainView.java @@ -36,4 +36,8 @@ public class MainView { public void render() { fxmlController.render(); } + + public void reload() { + render(); + } } \ No newline at end of file diff --git a/src/main/resources/GUIScene/main.fxml b/src/main/resources/GUIScene/main.fxml index 3e7f1cf..6088e2a 100644 --- a/src/main/resources/GUIScene/main.fxml +++ b/src/main/resources/GUIScene/main.fxml @@ -1,5 +1,6 @@ + @@ -7,12 +8,15 @@ - - - - + + + + - + + +