From 38bfcacbb589b2aca7ad51f5796f56048603efa6 Mon Sep 17 00:00:00 2001 From: AleandroPagani Date: Wed, 13 May 2026 18:51:23 +0200 Subject: [PATCH] WIP Totem --- .../gc14/Controller/ClientController.java | 6 +++ .../it/polimi/ingsw/gc14/View/GUI/GUI.java | 24 +++++++++-- .../gc14/View/GUI/LoginFXMLController.java | 2 +- .../gc14/View/GUI/TotemFXMLController.java | 39 ++++++++++++++++++ .../Totems/{totem_1.png => totem_blue.png} | Bin .../Totems/{totem_2.png => totem_orange.png} | Bin .../Totems/{totem_4.png => totem_purple.png} | Bin .../Totems/{totem_3.png => totem_white.png} | Bin .../Totems/{totem_0.png => totem_yellow.png} | Bin src/main/resources/GUIScene/totem.fxml | 7 +--- 10 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 src/main/java/it/polimi/ingsw/gc14/View/GUI/TotemFXMLController.java rename src/main/resources/GUIImages/Totems/{totem_1.png => totem_blue.png} (100%) rename src/main/resources/GUIImages/Totems/{totem_2.png => totem_orange.png} (100%) rename src/main/resources/GUIImages/Totems/{totem_4.png => totem_purple.png} (100%) rename src/main/resources/GUIImages/Totems/{totem_3.png => totem_white.png} (100%) rename src/main/resources/GUIImages/Totems/{totem_0.png => totem_yellow.png} (100%) diff --git a/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java b/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java index c429758..0322b97 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java +++ b/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java @@ -26,6 +26,8 @@ public class ClientController { /** Network client (either TCP or RMI) */ private IClient client; + public String myUsername; + /** * Constructs the ClientController. @@ -56,6 +58,10 @@ public class ClientController { view.setModel(miniModel); } + public void setMyUsername (String username) { + this.myUsername=username; + } + /** * Displays an error message in the view. 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 448b5bf..1d2fa3d 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 @@ -17,9 +17,18 @@ import static it.polimi.ingsw.gc14.Model.GamePackage.GameStages.TOTEM_CHOICE; public class GUI extends Application implements IView { private Stage primaryStage; + + FXMLLoader loaderLogin; Scene loginScene; + LoginFXMLController controllerLogin; + + FXMLLoader loaderTotem; Scene totemScene; + TotemFXMLController controllerTotem; + + FXMLLoader loaderMain; Scene mainScene; + MainFXMLController controllerMain; private ClientController controller; private MiniModel model; @@ -30,17 +39,23 @@ public class GUI extends Application implements IView { @Override public void start(Stage stage) throws Exception { - FXMLLoader loaderLogin = new FXMLLoader(getClass().getResource("/GUIScene/login.fxml")); + loaderLogin = new FXMLLoader(getClass().getResource("/GUIScene/login.fxml")); loginScene = new Scene(loaderLogin.load()); - LoginFXMLController controllerLogin = loaderLogin.getController(); + controllerLogin = loaderLogin.getController(); controllerLogin.setController(controller); - FXMLLoader loaderTotem = new FXMLLoader(getClass().getResource("/GUIScene/totem.fxml")); + loaderTotem = new FXMLLoader(getClass().getResource("/GUIScene/totem.fxml")); totemScene = new Scene(loaderTotem.load()); - FXMLLoader loaderMain = new FXMLLoader(getClass().getResource("/GUIScene/main.fxml")); + controllerTotem = loaderTotem.getController(); + controllerTotem.setController(controller); + + + loaderMain = new FXMLLoader(getClass().getResource("/GUIScene/main.fxml")); mainScene = new Scene(loaderMain.load()); + controllerMain = loaderMain.getController(); + controllerMain.setController(controller); showLogin(); stage.setTitle("Mesos"); @@ -64,6 +79,7 @@ public class GUI extends Application implements IView { public void render() { if(controller.miniModel.currentState.getGameStage()==TOTEM_CHOICE) { Platform.runLater(() -> { + controllerTotem.render(); primaryStage.setScene(totemScene); }); } else { diff --git a/src/main/java/it/polimi/ingsw/gc14/View/GUI/LoginFXMLController.java b/src/main/java/it/polimi/ingsw/gc14/View/GUI/LoginFXMLController.java index 16410a4..d9a659e 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/GUI/LoginFXMLController.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/GUI/LoginFXMLController.java @@ -65,6 +65,7 @@ public class LoginFXMLController { @FXML private void onAccediClick() { String nome = campoNome.getText().trim(); + controller.setMyUsername(nome); String ip = campoIP.getText().trim(); int numPlayers; try { @@ -88,7 +89,6 @@ public class LoginFXMLController { RMIClient client = new RMIClient(controller, ip, 1099, interfaccia); if (client.connect(nome, numPlayers)) { controller.setClient(client); - // Da qui il server chiamerà gui.render() → cambio scena } else { Platform.runLater(() -> labelErrore.setText("Connessione RMI fallita.")); } diff --git a/src/main/java/it/polimi/ingsw/gc14/View/GUI/TotemFXMLController.java b/src/main/java/it/polimi/ingsw/gc14/View/GUI/TotemFXMLController.java new file mode 100644 index 0000000..c794026 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/View/GUI/TotemFXMLController.java @@ -0,0 +1,39 @@ +package it.polimi.ingsw.gc14.View.GUI; + +import it.polimi.ingsw.gc14.Controller.ClientController; +import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Model.Totems; +import javafx.fxml.FXML; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; + +import java.util.Locale; + +public class TotemFXMLController { + @FXML private HBox mainHBox; + + private ClientController controller; + + public void setController(ClientController controller) { + this.controller=controller; + } + + @FXML + public void initialize() { + + } + + public void render() { + for (Totems totem : controller.miniModel.availableTotems) { + ImageView img = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_"+ String.valueOf(totem).toLowerCase(Locale.ROOT) +".png"))); + img.setFitHeight(240); + img.setPreserveRatio(true); + img.setOnMouseClicked(e -> controller.totemChoice(controller.myUsername)); + mainHBox.getChildren().add(img); + } + } + + + +} diff --git a/src/main/resources/GUIImages/Totems/totem_1.png b/src/main/resources/GUIImages/Totems/totem_blue.png similarity index 100% rename from src/main/resources/GUIImages/Totems/totem_1.png rename to src/main/resources/GUIImages/Totems/totem_blue.png diff --git a/src/main/resources/GUIImages/Totems/totem_2.png b/src/main/resources/GUIImages/Totems/totem_orange.png similarity index 100% rename from src/main/resources/GUIImages/Totems/totem_2.png rename to src/main/resources/GUIImages/Totems/totem_orange.png diff --git a/src/main/resources/GUIImages/Totems/totem_4.png b/src/main/resources/GUIImages/Totems/totem_purple.png similarity index 100% rename from src/main/resources/GUIImages/Totems/totem_4.png rename to src/main/resources/GUIImages/Totems/totem_purple.png diff --git a/src/main/resources/GUIImages/Totems/totem_3.png b/src/main/resources/GUIImages/Totems/totem_white.png similarity index 100% rename from src/main/resources/GUIImages/Totems/totem_3.png rename to src/main/resources/GUIImages/Totems/totem_white.png diff --git a/src/main/resources/GUIImages/Totems/totem_0.png b/src/main/resources/GUIImages/Totems/totem_yellow.png similarity index 100% rename from src/main/resources/GUIImages/Totems/totem_0.png rename to src/main/resources/GUIImages/Totems/totem_yellow.png diff --git a/src/main/resources/GUIScene/totem.fxml b/src/main/resources/GUIScene/totem.fxml index 30d5139..9e41caa 100644 --- a/src/main/resources/GUIScene/totem.fxml +++ b/src/main/resources/GUIScene/totem.fxml @@ -1,11 +1,6 @@ - - - - - - +