From 65b87797e9cbabf6574efc326471b7532150a66c Mon Sep 17 00:00:00 2001 From: AleandroPagani Date: Wed, 6 May 2026 16:27:00 +0200 Subject: [PATCH] Add: slot, draw tribe functions implemented --- .../polimi/ingsw/gc14/ClientLauncherGUI.java | 2 ++ .../it/polimi/ingsw/gc14/View/GUI/GUI.java | 5 ++- .../gc14/View/GUI/MainFXMLController.java | 32 +++++++++++++++---- .../polimi/ingsw/gc14/View/GUI/MainView.java | 13 +++++--- 4 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/ClientLauncherGUI.java b/src/main/java/it/polimi/ingsw/gc14/ClientLauncherGUI.java index e37587a..dfec71d 100644 --- a/src/main/java/it/polimi/ingsw/gc14/ClientLauncherGUI.java +++ b/src/main/java/it/polimi/ingsw/gc14/ClientLauncherGUI.java @@ -17,6 +17,7 @@ public class ClientLauncherGUI extends Application { GUI view = new GUI(stage); ClientController controller = new ClientController(view); + view.setController(controller); loginView.getBtnAccedi().setOnAction(e -> { String nome = loginView.getNome(); @@ -28,6 +29,7 @@ public class ClientLauncherGUI extends Application { loginView.setErrore("Compila tutti i campi."); return; } + view.setUsername(nome); // Connessione in un thread separato — non bloccare il JavaFX thread! new Thread(() -> { 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 3d35d5f..7c32b35 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 @@ -12,6 +12,7 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI private final Stage stage; private final MainView mainView = new MainView(); private Game model; + private ClientController controller; private String username; public GUI(Stage stage) { @@ -21,7 +22,7 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI @Override public void setModel(Game model) { this.model = model; - mainView.setModel(model); + mainView.setModel(model, controller, username); Platform.runLater(() -> { stage.setScene(mainView.getScene()); @@ -54,6 +55,8 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI this.username=username; } + public void setController(ClientController controller) { this.controller = controller;} + // Getter per il launcher public Stage getStage() { return stage; } } \ No newline at end of file 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 181ff5f..50cdc76 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 @@ -1,5 +1,6 @@ package it.polimi.ingsw.gc14.View.GUI; +import it.polimi.ingsw.gc14.Controller.ClientController; import it.polimi.ingsw.gc14.Model.Cards.TribeCard; import it.polimi.ingsw.gc14.Model.Game; import it.polimi.ingsw.gc14.Model.Player; @@ -11,6 +12,7 @@ import javafx.scene.image.*; import javafx.scene.layout.*; import javafx.scene.shape.*; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -25,63 +27,79 @@ public class MainFXMLController { @FXML private Button reload; private Game model; + private ClientController controller; + private String username; public void setModel(Game model) { this.model = model; } + public void setController(ClientController controller) {this.controller = controller;} + public void setUsername(String username) {this.username = username;} public void render() { Image placeholder = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-001.png")); + // Upper list upperList.setSpacing(6); upperList.setAlignment(Pos.CENTER); upperList.getChildren().clear(); + int i = 0; for (TribeCard card : model.getUpperListTribeCards()) { + final int index = i; + ImageView view = new ImageView(placeholder); view.fitHeightProperty().bind(upperList.heightProperty().subtract(10)); view.setPreserveRatio(true); - view.setOnMouseClicked(e -> System.out.println(card.toStringBoard())); + view.setOnMouseClicked(e -> controller.drawUpperTribeCard(username, index)); upperList.getChildren().add(view); + i++; } + // Board board.setSpacing(6); board.setAlignment(Pos.CENTER); board.getChildren().clear(); + i = 0; for (Map.Entry entry : model.getSlotMap().entrySet()) { Slot slot = entry.getKey(); + final int index = i; + 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())); + view.setOnMouseClicked(e -> controller.slotChoice(username, index)); board.getChildren().add(view); - + i++; } - + // Lower list lowerList.setSpacing(6); lowerList.setAlignment(Pos.CENTER); lowerList.getChildren().clear(); - lowerList.getChildren().clear(); + i = 0; for (TribeCard card : model.getLowerListTribeCards()) { + final int index = i; + ImageView view = new ImageView(placeholder); - view.fitHeightProperty().bind(upperList.heightProperty().subtract(10)); + view.fitHeightProperty().bind(lowerList.heightProperty().subtract(10)); view.setPreserveRatio(true); - view.setOnMouseClicked(e -> System.out.println(card.toStringBoard())); + view.setOnMouseClicked(e -> controller.drawLowerTribeCard(username, index)); lowerList.getChildren().add(view); + i++; } } } 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 c24ae9c..50f8d08 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 @@ -1,5 +1,6 @@ package it.polimi.ingsw.gc14.View.GUI; +import it.polimi.ingsw.gc14.Controller.ClientController; import it.polimi.ingsw.gc14.Model.Game; import javafx.fxml.FXMLLoader; import javafx.geometry.Insets; @@ -15,6 +16,8 @@ public class MainView { private final Scene scene; private final MainFXMLController fxmlController; private Game model; + private ClientController controller; + private String username; public MainView() { try { @@ -29,15 +32,17 @@ public class MainView { } public Scene getScene() { return scene; } - public void setModel(Game model) { + public void setModel(Game model, ClientController controller, String username) { this.model = model; fxmlController.setModel(model); + this.controller = controller; + fxmlController.setController(controller); + this.username = username; + fxmlController.setUsername(username); + } public void render() { fxmlController.render(); } - public void reload() { - render(); - } } \ No newline at end of file