Add: createCardPanel method

This commit is contained in:
2026-05-06 20:18:40 +02:00
parent 44643bd05c
commit 51b345709f
@@ -5,7 +5,10 @@ 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;
import it.polimi.ingsw.gc14.Model.Slot; import it.polimi.ingsw.gc14.Model.Slot;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.geometry.Bounds;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.image.*; import javafx.scene.image.*;
@@ -103,100 +106,164 @@ public class MainFXMLController {
lowerList.getChildren().add(view); lowerList.getChildren().add(view);
i++; i++;
} }
// My hand
myHand.getChildren().clear(); myHand.getChildren().clear();
myHand.setSpacing(6); myHand.setSpacing(6);
myHand.setAlignment(Pos.CENTER); //myHand.setAlignment(Pos.CENTER_LEFT);
Pane artists=new Pane();
artists.setPrefHeight(270); myHand.getChildren().add(createCardPane(model.getPlayerByUsername(username).artists.stream().map(x -> (TribeCard) x).toList(), myHand));
myHand.getChildren().add(createCardPane(model.getPlayerByUsername(username).gatherers.stream().map(x -> (TribeCard) x).toList(), myHand));
myHand.getChildren().add(createCardPane(model.getPlayerByUsername(username).inventors.stream().map(x -> (TribeCard) x).toList(), myHand));
myHand.getChildren().add(createCardPane(model.getPlayerByUsername(username).builders.stream().map(x -> (TribeCard) x).toList(), myHand));
myHand.getChildren().add(createCardPane(model.getPlayerByUsername(username).shamans.stream().map(x -> (TribeCard) x).toList(), myHand));
myHand.getChildren().add(createCardPane(model.getPlayerByUsername(username).hunters.stream().map(x -> (TribeCard) x).toList(), myHand));
/**
// Artists
Pane artists = new Pane();
artists.prefHeightProperty().bind(myHand.heightProperty());
artists.prefWidthProperty().bind(
artists.heightProperty().multiply(0.63).add((model.getPlayerByUsername(username).artists.size() - 1) * 50)
);
for (int j=0;j<model.getPlayerByUsername(username).artists.size();j++) { for (int j=0;j<model.getPlayerByUsername(username).artists.size();j++) {
TribeCard card=model.getPlayerByUsername(username).artists.get(j); TribeCard card=model.getPlayerByUsername(username).artists.get(j);
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png")); Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
ImageView view = new ImageView(tribeImg); ImageView view = new ImageView(tribeImg);
view.fitHeightProperty().bind(myHand.heightProperty().subtract(10)); view.fitHeightProperty().bind(artists.heightProperty().subtract(10));
view.setPreserveRatio(true); view.setPreserveRatio(true);
view.setLayoutX((model.getPlayerByUsername(username).artists.size() -j ) * 50); // solo X cambia view.setLayoutX((model.getPlayerByUsername(username).artists.size() -j ) * 50); // solo X cambia
view.setLayoutY(5);
artists.getChildren().addLast(view); artists.getChildren().addLast(view);
i++; i++;
} }
myHand.getChildren().add(artists); myHand.getChildren().add(artists);
// Gatherers
Pane gatherers=new Pane(); Pane gatherers=new Pane();
gatherers.setPrefHeight(270); gatherers.prefHeightProperty().bind(myHand.heightProperty());
gatherers.prefWidthProperty().bind(
gatherers.heightProperty().multiply(0.63).add((model.getPlayerByUsername(username).gatherers.size() - 1) * 50)
);
for (int j=0;j<model.getPlayerByUsername(username).gatherers.size();j++) { for (int j=0;j<model.getPlayerByUsername(username).gatherers.size();j++) {
TribeCard card=model.getPlayerByUsername(username).gatherers.get(j); TribeCard card=model.getPlayerByUsername(username).gatherers.get(j);
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png")); Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
ImageView view = new ImageView(tribeImg); ImageView view = new ImageView(tribeImg);
view.fitHeightProperty().bind(myHand.heightProperty().subtract(10)); view.fitHeightProperty().bind(artists.heightProperty().subtract(10));
view.setPreserveRatio(true); view.setPreserveRatio(true);
view.setLayoutX((model.getPlayerByUsername(username).gatherers.size() -j ) * 50); // solo X cambia view.setLayoutX((model.getPlayerByUsername(username).gatherers.size() -j ) * 50); // solo X cambia
view.setLayoutY(5);
gatherers.getChildren().addLast(view); gatherers.getChildren().addLast(view);
i++; i++;
} }
myHand.getChildren().add(gatherers); myHand.getChildren().add(gatherers);
// Inventors
Pane inventors=new Pane(); Pane inventors=new Pane();
gatherers.setPrefHeight(270); inventors.prefHeightProperty().bind(myHand.heightProperty());
for (int j=0;j<model.getPlayerByUsername(username).inventors.size();j++) { for (int j=0;j<model.getPlayerByUsername(username).inventors.size();j++) {
TribeCard card=model.getPlayerByUsername(username).inventors.get(j); TribeCard card=model.getPlayerByUsername(username).inventors.get(j);
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png")); Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
ImageView view = new ImageView(tribeImg); ImageView view = new ImageView(tribeImg);
view.fitHeightProperty().bind(myHand.heightProperty().subtract(10)); view.fitHeightProperty().bind(inventors.heightProperty().subtract(10));
view.setPreserveRatio(true); view.setPreserveRatio(true);
view.setLayoutX((model.getPlayerByUsername(username).inventors.size() -j )* 50); // solo X cambia view.setLayoutX((model.getPlayerByUsername(username).inventors.size() -j )* 50); // solo X cambia
view.setLayoutY(5);
inventors.getChildren().addLast(view); inventors.getChildren().addLast(view);
i++; i++;
} }
myHand.getChildren().add(inventors); myHand.getChildren().add(inventors);
// Builders
Pane builders=new Pane(); Pane builders=new Pane();
gatherers.setPrefHeight(270); builders.prefHeightProperty().bind(myHand.heightProperty());
for (int j=0;j<model.getPlayerByUsername(username).builders.size();j++) { for (int j=0;j<model.getPlayerByUsername(username).builders.size();j++) {
TribeCard card=model.getPlayerByUsername(username).builders.get(j); TribeCard card=model.getPlayerByUsername(username).builders.get(j);
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png")); Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
ImageView view = new ImageView(tribeImg); ImageView view = new ImageView(tribeImg);
view.fitHeightProperty().bind(myHand.heightProperty().subtract(10)); view.fitHeightProperty().bind(builders.heightProperty().subtract(10));
view.setPreserveRatio(true); view.setPreserveRatio(true);
view.setLayoutX((model.getPlayerByUsername(username).builders.size() -j ) * 50); // solo X cambia view.setLayoutX((model.getPlayerByUsername(username).builders.size() -j ) * 50); // solo X cambia
view.setLayoutY(5);
builders.getChildren().addLast(view); builders.getChildren().addLast(view);
i++; i++;
} }
myHand.getChildren().add(builders); myHand.getChildren().add(builders);
// Shamans
Pane shamans=new Pane(); Pane shamans=new Pane();
shamans.setPrefHeight(270); shamans.prefHeightProperty().bind(myHand.heightProperty());
for (int j=0;j<model.getPlayerByUsername(username).shamans.size();j++) { for (int j=0;j<model.getPlayerByUsername(username).shamans.size();j++) {
TribeCard card=model.getPlayerByUsername(username).shamans.get(j); TribeCard card=model.getPlayerByUsername(username).shamans.get(j);
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png")); Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
ImageView view = new ImageView(tribeImg); ImageView view = new ImageView(tribeImg);
view.fitHeightProperty().bind(myHand.heightProperty().subtract(10)); view.fitHeightProperty().bind(shamans.heightProperty().subtract(10));
view.setPreserveRatio(true); view.setPreserveRatio(true);
view.setLayoutX((model.getPlayerByUsername(username).shamans.size() -j ) * 50); // solo X cambia view.setLayoutX((model.getPlayerByUsername(username).shamans.size() -j ) * 50); // solo X cambia
view.setLayoutY(5);
shamans.getChildren().addLast(view); shamans.getChildren().addLast(view);
i++; i++;
} }
myHand.getChildren().add(shamans); myHand.getChildren().add(shamans);
// Hunters
Pane hunters=new Pane(); Pane hunters=new Pane();
hunters.setPrefHeight(myHand.heightProperty().get()); hunters.prefHeightProperty().bind(myHand.heightProperty());
for (int j=0;j<model.getPlayerByUsername(username).hunters.size();j++) { for (int j=0;j<model.getPlayerByUsername(username).hunters.size();j++) {
TribeCard card=model.getPlayerByUsername(username).hunters.get(j); TribeCard card=model.getPlayerByUsername(username).hunters.get(j);
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png")); Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
ImageView view = new ImageView(tribeImg); ImageView view = new ImageView(tribeImg);
view.fitHeightProperty().bind(myHand.heightProperty().subtract(10)); view.fitHeightProperty().bind(hunters.heightProperty().subtract(10));
view.setPreserveRatio(true); view.setPreserveRatio(true);
view.setLayoutX((model.getPlayerByUsername(username).hunters.size() -j )* 50); // solo X cambia view.setLayoutX((model.getPlayerByUsername(username).hunters.size() -j )* 50); // solo X cambia
view.setLayoutY(5);
hunters.getChildren().addLast(view); hunters.getChildren().addLast(view);
i++; i++;
} }
myHand.getChildren().add(hunters); myHand.getChildren().add(hunters);
*/
}
private Pane createCardPane(List<TribeCard> cards, HBox container) {
Pane pane = new Pane();
int n = cards.size();
pane.prefHeightProperty().bind(container.heightProperty());
for (int j = 0; j < n; j++) {
TribeCard card = cards.get(j);
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
ImageView view = new ImageView(tribeImg);
view.fitHeightProperty().bind(pane.heightProperty().subtract(10));
view.setPreserveRatio(true);
view.setLayoutX(j * 50);
view.setLayoutY(5);
pane.getChildren().add(view);
if (j == 0) {
view.layoutBoundsProperty().addListener(new ChangeListener<Bounds>() {
@Override
public void changed(ObservableValue<? extends Bounds> obs, Bounds old, Bounds bounds) {
if (bounds.getWidth() > 0) {
pane.setPrefWidth(bounds.getWidth() + (n - 1) * 50);
view.layoutBoundsProperty().removeListener(this);
}
}
});
}
}
return pane;
} }
} }