Add: fonts, background
This commit is contained in:
@@ -10,13 +10,14 @@ import javafx.stage.Stage;
|
||||
public class GUI implements IView { // stessa interfaccia che implementa TUI
|
||||
|
||||
private final Stage stage;
|
||||
private final MainView mainView = new MainView();
|
||||
private final MainView mainView;
|
||||
private Game model;
|
||||
private ClientController controller;
|
||||
private String username;
|
||||
|
||||
public GUI(Stage stage) {
|
||||
this.stage = stage;
|
||||
this.mainView = new MainView();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,6 +2,7 @@ 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.TribeCards.Characters.*;
|
||||
import it.polimi.ingsw.gc14.Model.Game;
|
||||
import it.polimi.ingsw.gc14.Model.Player;
|
||||
import it.polimi.ingsw.gc14.Model.Slot;
|
||||
@@ -9,11 +10,15 @@ import javafx.beans.value.ChangeListener;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.geometry.Bounds;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.image.*;
|
||||
import javafx.scene.layout.*;
|
||||
import javafx.scene.shape.*;
|
||||
import javafx.scene.text.Font;
|
||||
import javafx.stage.Popup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -21,18 +26,25 @@ import java.util.Map;
|
||||
|
||||
public class MainFXMLController {
|
||||
|
||||
@FXML private HBox mainHBox;
|
||||
@FXML private HBox board;
|
||||
@FXML private HBox upperList;
|
||||
@FXML private HBox lowerList;
|
||||
@FXML private HBox myHand;
|
||||
@FXML private VBox playersHand;
|
||||
|
||||
@FXML private Button reload;
|
||||
private Popup popup;
|
||||
private HBox popupCards;
|
||||
|
||||
private Game model;
|
||||
private ClientController controller;
|
||||
private String username;
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
initPopup();
|
||||
}
|
||||
|
||||
public void setModel(Game model) {
|
||||
this.model = model;
|
||||
}
|
||||
@@ -41,7 +53,7 @@ public class MainFXMLController {
|
||||
|
||||
public void render() {
|
||||
|
||||
|
||||
//mainHBox.setBackground(new Background(new BackgroundImage(new Image(getClass().getResourceAsStream("/GUIImages/Background.png")), null, null, null, null)));
|
||||
// Upper list
|
||||
upperList.setSpacing(6);
|
||||
upperList.setAlignment(Pos.CENTER);
|
||||
@@ -51,14 +63,13 @@ public class MainFXMLController {
|
||||
for (TribeCard card : model.getUpperListTribeCards()) {
|
||||
final int index = i;
|
||||
|
||||
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
|
||||
ImageView view = new ImageView(tribeImg);
|
||||
view.fitHeightProperty().bind(upperList.heightProperty().subtract(10));
|
||||
view.setPreserveRatio(true);
|
||||
ImageView img = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png")));
|
||||
img.fitHeightProperty().bind(upperList.heightProperty().subtract(10));
|
||||
img.setPreserveRatio(true);
|
||||
|
||||
view.setOnMouseClicked(e -> controller.drawUpperTribeCard(username, index));
|
||||
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(username, index));
|
||||
|
||||
upperList.getChildren().add(view);
|
||||
upperList.getChildren().add(img);
|
||||
i++;
|
||||
}
|
||||
|
||||
@@ -73,15 +84,14 @@ public class MainFXMLController {
|
||||
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);
|
||||
ImageView img = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-"+slot.getSlotId()+".png")));
|
||||
|
||||
view.fitHeightProperty().bind(board.heightProperty().subtract(10));
|
||||
view.setPreserveRatio(true);
|
||||
img.fitHeightProperty().bind(board.heightProperty().subtract(10));
|
||||
img.setPreserveRatio(true);
|
||||
|
||||
view.setOnMouseClicked(e -> controller.slotChoice(username, index));
|
||||
img.setOnMouseClicked(e -> controller.slotChoice(username, index));
|
||||
|
||||
board.getChildren().add(view);
|
||||
board.getChildren().add(img);
|
||||
i++;
|
||||
}
|
||||
|
||||
@@ -96,14 +106,13 @@ public class MainFXMLController {
|
||||
for (TribeCard card : model.getLowerListTribeCards()) {
|
||||
final int index = i;
|
||||
|
||||
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
|
||||
ImageView view = new ImageView(tribeImg);
|
||||
view.fitHeightProperty().bind(lowerList.heightProperty().subtract(10));
|
||||
view.setPreserveRatio(true);
|
||||
ImageView img = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png")));
|
||||
img.fitHeightProperty().bind(lowerList.heightProperty().subtract(10));
|
||||
img.setPreserveRatio(true);
|
||||
|
||||
view.setOnMouseClicked(e -> controller.drawLowerTribeCard(username, index));
|
||||
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(username, index));
|
||||
|
||||
lowerList.getChildren().add(view);
|
||||
lowerList.getChildren().add(img);
|
||||
i++;
|
||||
}
|
||||
|
||||
@@ -111,159 +120,79 @@ public class MainFXMLController {
|
||||
// My hand
|
||||
myHand.getChildren().clear();
|
||||
myHand.setSpacing(6);
|
||||
//myHand.setAlignment(Pos.CENTER_LEFT);
|
||||
myHand.setAlignment(Pos.CENTER);
|
||||
|
||||
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));
|
||||
drawMyHandCard(myHand, model.getPlayerByUsername(username).artists);
|
||||
drawMyHandCard(myHand, model.getPlayerByUsername(username).gatherers);
|
||||
drawMyHandCard(myHand, model.getPlayerByUsername(username).inventors);
|
||||
drawMyHandCard(myHand, model.getPlayerByUsername(username).builders);
|
||||
drawMyHandCard(myHand, model.getPlayerByUsername(username).shamans);
|
||||
drawMyHandCard(myHand, model.getPlayerByUsername(username).hunters);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
// 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++) {
|
||||
TribeCard card=model.getPlayerByUsername(username).artists.get(j);
|
||||
void drawMyHandCard(HBox myHand, ArrayList<? extends TribeCard> cardList) {
|
||||
if (!cardList.isEmpty()) {
|
||||
ImageView img = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + cardList.getLast().getIdIMG() + ".png")));
|
||||
img.fitHeightProperty().bind(myHand.heightProperty().subtract(10));
|
||||
img.setPreserveRatio(true);
|
||||
|
||||
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
|
||||
ImageView view = new ImageView(tribeImg);
|
||||
view.fitHeightProperty().bind(artists.heightProperty().subtract(10));
|
||||
view.setPreserveRatio(true);
|
||||
view.setLayoutX((model.getPlayerByUsername(username).artists.size() -j ) * 50); // solo X cambia
|
||||
view.setLayoutY(5);
|
||||
artists.getChildren().addLast(view);
|
||||
i++;
|
||||
Label label = new Label(String.valueOf(cardList.size()));
|
||||
label.setTranslateY(-55);
|
||||
label.setTranslateX(10);
|
||||
Font.loadFont(getClass().getResourceAsStream("/Fonts/InknutAntiqua-Regular.ttf"), 16);
|
||||
label.setStyle("-fx-font-family: 'Inknut Antiqua'; -fx-font-size: 50px; -fx-font-weight: bold; -fx-text-fill: black;");
|
||||
StackPane.setAlignment(label, Pos.TOP_RIGHT);
|
||||
|
||||
StackPane stack = new StackPane(img, label);
|
||||
stack.setClip(null);
|
||||
stack.setOnMouseClicked(e -> openPopup(cardList));
|
||||
|
||||
myHand.getChildren().add(stack);
|
||||
}
|
||||
myHand.getChildren().add(artists);
|
||||
|
||||
// Gatherers
|
||||
Pane gatherers=new Pane();
|
||||
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++) {
|
||||
TribeCard card=model.getPlayerByUsername(username).gatherers.get(j);
|
||||
|
||||
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
|
||||
ImageView view = new ImageView(tribeImg);
|
||||
view.fitHeightProperty().bind(artists.heightProperty().subtract(10));
|
||||
view.setPreserveRatio(true);
|
||||
view.setLayoutX((model.getPlayerByUsername(username).gatherers.size() -j ) * 50); // solo X cambia
|
||||
view.setLayoutY(5);
|
||||
gatherers.getChildren().addLast(view);
|
||||
i++;
|
||||
}
|
||||
myHand.getChildren().add(gatherers);
|
||||
|
||||
// Inventors
|
||||
Pane inventors=new Pane();
|
||||
inventors.prefHeightProperty().bind(myHand.heightProperty());
|
||||
for (int j=0;j<model.getPlayerByUsername(username).inventors.size();j++) {
|
||||
TribeCard card=model.getPlayerByUsername(username).inventors.get(j);
|
||||
|
||||
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
|
||||
ImageView view = new ImageView(tribeImg);
|
||||
view.fitHeightProperty().bind(inventors.heightProperty().subtract(10));
|
||||
view.setPreserveRatio(true);
|
||||
view.setLayoutX((model.getPlayerByUsername(username).inventors.size() -j )* 50); // solo X cambia
|
||||
view.setLayoutY(5);
|
||||
inventors.getChildren().addLast(view);
|
||||
i++;
|
||||
}
|
||||
myHand.getChildren().add(inventors);
|
||||
|
||||
// Builders
|
||||
Pane builders=new Pane();
|
||||
builders.prefHeightProperty().bind(myHand.heightProperty());
|
||||
for (int j=0;j<model.getPlayerByUsername(username).builders.size();j++) {
|
||||
TribeCard card=model.getPlayerByUsername(username).builders.get(j);
|
||||
|
||||
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
|
||||
ImageView view = new ImageView(tribeImg);
|
||||
view.fitHeightProperty().bind(builders.heightProperty().subtract(10));
|
||||
view.setPreserveRatio(true);
|
||||
view.setLayoutX((model.getPlayerByUsername(username).builders.size() -j ) * 50); // solo X cambia
|
||||
view.setLayoutY(5);
|
||||
builders.getChildren().addLast(view);
|
||||
i++;
|
||||
}
|
||||
myHand.getChildren().add(builders);
|
||||
|
||||
// Shamans
|
||||
Pane shamans=new Pane();
|
||||
shamans.prefHeightProperty().bind(myHand.heightProperty());
|
||||
for (int j=0;j<model.getPlayerByUsername(username).shamans.size();j++) {
|
||||
TribeCard card=model.getPlayerByUsername(username).shamans.get(j);
|
||||
|
||||
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
|
||||
ImageView view = new ImageView(tribeImg);
|
||||
view.fitHeightProperty().bind(shamans.heightProperty().subtract(10));
|
||||
view.setPreserveRatio(true);
|
||||
view.setLayoutX((model.getPlayerByUsername(username).shamans.size() -j ) * 50); // solo X cambia
|
||||
view.setLayoutY(5);
|
||||
shamans.getChildren().addLast(view);
|
||||
i++;
|
||||
}
|
||||
myHand.getChildren().add(shamans);
|
||||
|
||||
// Hunters
|
||||
Pane hunters=new Pane();
|
||||
hunters.prefHeightProperty().bind(myHand.heightProperty());
|
||||
for (int j=0;j<model.getPlayerByUsername(username).hunters.size();j++) {
|
||||
TribeCard card=model.getPlayerByUsername(username).hunters.get(j);
|
||||
|
||||
Image tribeImg = new Image(getClass().getResourceAsStream("/GUIImages/Fronts/card-" + card.getIdIMG() + ".png"));
|
||||
ImageView view = new ImageView(tribeImg);
|
||||
view.fitHeightProperty().bind(hunters.heightProperty().subtract(10));
|
||||
view.setPreserveRatio(true);
|
||||
view.setLayoutX((model.getPlayerByUsername(username).hunters.size() -j )* 50); // solo X cambia
|
||||
view.setLayoutY(5);
|
||||
hunters.getChildren().addLast(view);
|
||||
i++;
|
||||
}
|
||||
myHand.getChildren().add(hunters);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
private void initPopup() {
|
||||
popupCards = new HBox(10);
|
||||
popupCards.setAlignment(Pos.CENTER);
|
||||
popupCards.setPadding(new Insets(10));
|
||||
|
||||
Button closeBtn = new Button("X");
|
||||
closeBtn.setOnAction(e -> popup.hide());
|
||||
|
||||
VBox content = new VBox(10, closeBtn, popupCards);
|
||||
content.setPadding(new Insets(20));
|
||||
content.setStyle("-fx-background-color: #222; -fx-border-color: white; -fx-border-width: 2; -fx-border-radius: 10; -fx-background-radius: 10;");
|
||||
|
||||
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;
|
||||
popup = new Popup();
|
||||
popup.getContent().add(content);
|
||||
popup.setAutoHide(true); // si chiude anche cliccando fuori
|
||||
}
|
||||
|
||||
private void openPopup(ArrayList<? extends TribeCard> cardList) {
|
||||
popupCards.getChildren().clear();
|
||||
|
||||
for (TribeCard card : cardList) {
|
||||
ImageView img = new ImageView(new Image(getClass().getResourceAsStream(
|
||||
"/GUIImages/Fronts/card-" + card.getIdIMG() + ".png")));
|
||||
img.setFitHeight(200);
|
||||
img.setPreserveRatio(true);
|
||||
popupCards.getChildren().add(img);
|
||||
}
|
||||
|
||||
javafx.stage.Window window = myHand.getScene().getWindow();
|
||||
|
||||
// Mostralo prima fuori schermo
|
||||
popup.show(window, 0, 0);
|
||||
|
||||
// Poi centralo con le dimensioni reali
|
||||
double x = window.getX() + (window.getWidth() - popup.getWidth()) / 2;
|
||||
double y = window.getY() + (window.getHeight() - popup.getHeight()) / 2;
|
||||
popup.setX(x);
|
||||
popup.setY(y);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user