Add: slot, draw tribe functions implemented

This commit is contained in:
2026-05-06 16:27:00 +02:00
parent 9b206629c0
commit 65b87797e9
4 changed files with 40 additions and 12 deletions
@@ -17,6 +17,7 @@ public class ClientLauncherGUI extends Application {
GUI view = new GUI(stage); GUI view = new GUI(stage);
ClientController controller = new ClientController(view); ClientController controller = new ClientController(view);
view.setController(controller);
loginView.getBtnAccedi().setOnAction(e -> { loginView.getBtnAccedi().setOnAction(e -> {
String nome = loginView.getNome(); String nome = loginView.getNome();
@@ -28,6 +29,7 @@ public class ClientLauncherGUI extends Application {
loginView.setErrore("Compila tutti i campi."); loginView.setErrore("Compila tutti i campi.");
return; return;
} }
view.setUsername(nome);
// Connessione in un thread separato — non bloccare il JavaFX thread! // Connessione in un thread separato — non bloccare il JavaFX thread!
new Thread(() -> { new Thread(() -> {
@@ -12,6 +12,7 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI
private final Stage stage; private final Stage stage;
private final MainView mainView = new MainView(); private final MainView mainView = new MainView();
private Game model; private Game model;
private ClientController controller;
private String username; private String username;
public GUI(Stage stage) { public GUI(Stage stage) {
@@ -21,7 +22,7 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI
@Override @Override
public void setModel(Game model) { public void setModel(Game model) {
this.model = model; this.model = model;
mainView.setModel(model); mainView.setModel(model, controller, username);
Platform.runLater(() -> { Platform.runLater(() -> {
stage.setScene(mainView.getScene()); stage.setScene(mainView.getScene());
@@ -54,6 +55,8 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI
this.username=username; this.username=username;
} }
public void setController(ClientController controller) { this.controller = controller;}
// Getter per il launcher // Getter per il launcher
public Stage getStage() { return stage; } public Stage getStage() { return stage; }
} }
@@ -1,5 +1,6 @@
package it.polimi.ingsw.gc14.View.GUI; 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.Cards.TribeCard;
import it.polimi.ingsw.gc14.Model.Game; import it.polimi.ingsw.gc14.Model.Game;
import it.polimi.ingsw.gc14.Model.Player; import it.polimi.ingsw.gc14.Model.Player;
@@ -11,6 +12,7 @@ import javafx.scene.image.*;
import javafx.scene.layout.*; import javafx.scene.layout.*;
import javafx.scene.shape.*; import javafx.scene.shape.*;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -25,63 +27,79 @@ public class MainFXMLController {
@FXML private Button reload; @FXML private Button reload;
private Game model; private Game model;
private ClientController controller;
private String username;
public void setModel(Game model) { public void setModel(Game model) {
this.model = model; this.model = model;
} }
public void setController(ClientController controller) {this.controller = controller;}
public void setUsername(String username) {this.username = username;}
public void render() { public void render() {
Image placeholder = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-001.png")); Image placeholder = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-001.png"));
// Upper list
upperList.setSpacing(6); upperList.setSpacing(6);
upperList.setAlignment(Pos.CENTER); upperList.setAlignment(Pos.CENTER);
upperList.getChildren().clear(); upperList.getChildren().clear();
int i = 0;
for (TribeCard card : model.getUpperListTribeCards()) { for (TribeCard card : model.getUpperListTribeCards()) {
final int index = i;
ImageView view = new ImageView(placeholder); ImageView view = new ImageView(placeholder);
view.fitHeightProperty().bind(upperList.heightProperty().subtract(10)); view.fitHeightProperty().bind(upperList.heightProperty().subtract(10));
view.setPreserveRatio(true); view.setPreserveRatio(true);
view.setOnMouseClicked(e -> System.out.println(card.toStringBoard())); view.setOnMouseClicked(e -> controller.drawUpperTribeCard(username, index));
upperList.getChildren().add(view); upperList.getChildren().add(view);
i++;
} }
// Board
board.setSpacing(6); board.setSpacing(6);
board.setAlignment(Pos.CENTER); board.setAlignment(Pos.CENTER);
board.getChildren().clear(); board.getChildren().clear();
i = 0;
for (Map.Entry<Slot, Player> entry : model.getSlotMap().entrySet()) { for (Map.Entry<Slot, Player> entry : model.getSlotMap().entrySet()) {
Slot slot = entry.getKey(); Slot slot = entry.getKey();
final int index = i;
Image slotImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-"+slot.getSlotId()+".png")); Image slotImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-"+slot.getSlotId()+".png"));
ImageView view = new ImageView(slotImg); ImageView view = new ImageView(slotImg);
view.fitHeightProperty().bind(board.heightProperty().subtract(10)); view.fitHeightProperty().bind(board.heightProperty().subtract(10));
view.setPreserveRatio(true); view.setPreserveRatio(true);
//view.setOnMouseClicked(e -> System.out.println(card.toStringBoard())); view.setOnMouseClicked(e -> controller.slotChoice(username, index));
board.getChildren().add(view); board.getChildren().add(view);
i++;
} }
// Lower list
lowerList.setSpacing(6); lowerList.setSpacing(6);
lowerList.setAlignment(Pos.CENTER); lowerList.setAlignment(Pos.CENTER);
lowerList.getChildren().clear(); lowerList.getChildren().clear();
lowerList.getChildren().clear(); i = 0;
for (TribeCard card : model.getLowerListTribeCards()) { for (TribeCard card : model.getLowerListTribeCards()) {
final int index = i;
ImageView view = new ImageView(placeholder); ImageView view = new ImageView(placeholder);
view.fitHeightProperty().bind(upperList.heightProperty().subtract(10)); view.fitHeightProperty().bind(lowerList.heightProperty().subtract(10));
view.setPreserveRatio(true); view.setPreserveRatio(true);
view.setOnMouseClicked(e -> System.out.println(card.toStringBoard())); view.setOnMouseClicked(e -> controller.drawLowerTribeCard(username, index));
lowerList.getChildren().add(view); lowerList.getChildren().add(view);
i++;
} }
} }
} }
@@ -1,5 +1,6 @@
package it.polimi.ingsw.gc14.View.GUI; package it.polimi.ingsw.gc14.View.GUI;
import it.polimi.ingsw.gc14.Controller.ClientController;
import it.polimi.ingsw.gc14.Model.Game; import it.polimi.ingsw.gc14.Model.Game;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets; import javafx.geometry.Insets;
@@ -15,6 +16,8 @@ public class MainView {
private final Scene scene; private final Scene scene;
private final MainFXMLController fxmlController; private final MainFXMLController fxmlController;
private Game model; private Game model;
private ClientController controller;
private String username;
public MainView() { public MainView() {
try { try {
@@ -29,15 +32,17 @@ public class MainView {
} }
public Scene getScene() { return scene; } public Scene getScene() { return scene; }
public void setModel(Game model) { public void setModel(Game model, ClientController controller, String username) {
this.model = model; this.model = model;
fxmlController.setModel(model); fxmlController.setModel(model);
this.controller = controller;
fxmlController.setController(controller);
this.username = username;
fxmlController.setUsername(username);
} }
public void render() { public void render() {
fxmlController.render(); fxmlController.render();
} }
public void reload() {
render();
}
} }