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 1d2fa3d..ac8a59c 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 @@ -84,6 +84,7 @@ public class GUI extends Application implements IView { }); } else { Platform.runLater(() -> { + controllerMain.render(); primaryStage.setScene(mainScene); }); } 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 608e885..0eb6867 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 @@ -47,14 +47,12 @@ public class MainFXMLController { private Popup popup; private HBox popupCards; - private MiniModel model; private ClientController controller; - private String username; private final Map cardCache = new HashMap<>(); - public void setModel(MiniModel model) {this.model = model;} - public void setController(ClientController controller) {this.controller = controller;} - public void setUsername(String username) {this.username = username;} + public void setController(ClientController controller) { + this.controller = controller; + } @@ -116,10 +114,10 @@ public class MainFXMLController { img.setClip(clip); StackPane wrapper = new StackPane(img); - Player player = model.slotPlayerMap.get(slot); - if (player != null && model.getPositionByUsername(player.getUserName())!=-1) { - int index = model.getPositionByUsername(player.getUserName()); - ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + index + ".png"))); + Player player = controller.miniModel.slotPlayerMap.get(slot); + if (player != null && controller.miniModel.getPositionByUsername(player.getUserName())!=-1) { + int index = controller.miniModel.getPositionByUsername(player.getUserName()); + ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + "blue" + ".png"))); totem.setFitHeight(70); totem.setPreserveRatio(true); StackPane.setAlignment(totem, Pos.TOP_LEFT); @@ -221,24 +219,24 @@ public class MainFXMLController { upperList.getChildren().clear(); int i = 0; - for (TribeCard card : model.board.upperListTribe) { + for (TribeCard card : controller.miniModel.board.upperListTribe) { final int index = i; StackPane img = createCard(card, true, true); - img.setOnMouseClicked(e -> controller.drawUpperTribeCard(username, index)); + img.setOnMouseClicked(e -> controller.drawUpperTribeCard(controller.myUsername, index)); upperList.getChildren().add(img); i++; } i = 0; - for (BuildingCard card : model.board.upperListBuilding) { + for (BuildingCard card : controller.miniModel.board.upperListBuilding) { final int index = i; StackPane img = createCard(card, true, true); - img.setOnMouseClicked(e -> controller.drawUpperBuildingCard(username, index)); + img.setOnMouseClicked(e -> controller.drawUpperBuildingCard(controller.myUsername, index)); upperList.getChildren().add(img); i++; } } private void renderOrder() { - StackPane card = createOrder(Integer.toString(model.players.size()), false, false); + StackPane card = createOrder(Integer.toString(controller.miniModel.players.size()), false, false); VBox overlay = new VBox(-20); overlay.setPickOnBounds(false); @@ -246,13 +244,13 @@ public class MainFXMLController { StackPane.setMargin(overlay, new Insets(9, 0, 0, 57)); int i = 0; - for (Player player : model.players.values()) { + for (Player player : controller.miniModel.players.values()) { final int index = i; - ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + index + ".png"))); + ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + "blue" + ".png"))); totem.setFitHeight(70); totem.setPreserveRatio(true); - if (!(model.orderLogicCard.getPosition(player.getUserName()) != -1 && !model.slotPlayerMap.containsValue(player))) { + if (!(controller.miniModel.orderLogicCard.getPosition(player.getUserName()) != -1 && !controller.miniModel.slotPlayerMap.containsValue(player))) { totem.setOpacity(0.0); } overlay.getChildren().add(totem); @@ -267,7 +265,7 @@ public class MainFXMLController { board.getChildren().clear(); String path = ""; - switch (model.currentState.getEra()) { + switch (controller.miniModel.currentState.getEra()) { case 1 -> path = "/GUIImages/Backs/back-001.png"; case 2 -> path = "/GUIImages/Backs/back-030.png"; case 3 -> path = "/GUIImages/Backs/back-058.png"; @@ -289,11 +287,11 @@ public class MainFXMLController { renderOrder(); int i = 0; - for (Map.Entry entry : model.slotPlayerMap.entrySet()) { + for (Map.Entry entry : controller.miniModel.slotPlayerMap.entrySet()) { Slot slot = entry.getKey(); final int index = i; StackPane img = createSlot(slot, true, true); - img.setOnMouseClicked(e -> controller.slotChoice(username, index)); + img.setOnMouseClicked(e -> controller.slotChoice(controller.myUsername, index)); board.getChildren().add(img); i++; } @@ -304,18 +302,18 @@ public class MainFXMLController { lowerList.getChildren().clear(); int i = 0; - for (TribeCard card : model.board.lowerListTribe) { + for (TribeCard card : controller.miniModel.board.lowerListTribe) { final int index = i; StackPane img = createCard(card, true, true); - img.setOnMouseClicked(e -> controller.drawLowerTribeCard(username, index)); + img.setOnMouseClicked(e -> controller.drawLowerTribeCard(controller.myUsername, index)); lowerList.getChildren().add(img); i++; } i = 0; - for (BuildingCard card : model.board.lowerListBuilding) { + for (BuildingCard card : controller.miniModel.board.lowerListBuilding) { final int index = i; StackPane img = createCard(card, true, true); - img.setOnMouseClicked(e -> controller.drawLowerBuildingCard(username, index)); + img.setOnMouseClicked(e -> controller.drawLowerBuildingCard(controller.myUsername, index)); lowerList.getChildren().add(img); i++; } @@ -327,13 +325,13 @@ public class MainFXMLController { myHand.setSpacing(14); myHand.setAlignment(Pos.CENTER); - drawMyHandList(myHand, model.players.get(username).artists); - drawMyHandList(myHand, model.players.get(username).gatherers); - drawMyHandList(myHand, model.players.get(username).inventors); - drawMyHandList(myHand, model.players.get(username).builders); - drawMyHandList(myHand, model.players.get(username).shamans); - drawMyHandList(myHand, model.players.get(username).hunters); - drawMyHandList(myHand, model.players.get(username).buildingCards); + drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).artists); + drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).gatherers); + drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).inventors); + drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).builders); + drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).shamans); + drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).hunters); + drawMyHandList(myHand, controller.miniModel.players.get(controller.myUsername).buildingCards); } private void drawMyHandList(HBox myHand, ArrayList cardList) { if (!cardList.isEmpty()) { @@ -361,16 +359,16 @@ public class MainFXMLController { sidePanel.getChildren().clear(); sidePanel.setSpacing(6); - era.setText(Integer.toString(model.currentState.getEra())); - round.setText(Integer.toString(model.currentState.getRound())); - player.setText(model.currentState.getCurrentPlayer().getUserName()); + era.setText(Integer.toString(controller.miniModel.currentState.getEra())); + round.setText(Integer.toString(controller.miniModel.currentState.getRound())); + player.setText(controller.miniModel.currentState.getCurrentPlayer().getUserName()); VBox.setMargin(info, new Insets(5, 5, 5, 5)); sidePanel.getChildren().add(info); renderPlayers(sidePanel); } private void renderPlayers(VBox playersHand) { - for (Player player : model.players.values()) { + for (Player player : controller.miniModel.players.values()) { // Card container VBox card = new VBox(3); VBox.setMargin(card, new Insets(5)); @@ -382,13 +380,13 @@ public class MainFXMLController { // Riga 1: icona totem + nome HBox headerRow = new HBox(8); headerRow.setAlignment(Pos.CENTER); - int index = new ArrayList<>(model.players.values()).indexOf(player); - ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + index + ".png"))); + int index = new ArrayList<>(controller.miniModel.players.values()).indexOf(player); + ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + "blue" + ".png"))); totem.setFitHeight(20); totem.setPreserveRatio(true); Label usernameLabel = new Label(player.getUserName()); usernameLabel.getStyleClass().add("label-medium"); - if (player.getUserName().equals(username)) { + if (player.getUserName().equals(controller.myUsername)) { usernameLabel.setStyle("-fx-text-fill: #9d0208"); } headerRow.getChildren().addAll(totem, usernameLabel); @@ -465,7 +463,7 @@ public class MainFXMLController { } } private ArrayList getPlayerCards(String username, String type) { - Player p = model.players.get(username); + Player p = controller.miniModel.players.get(username); return switch (type) { case "artists" -> new ArrayList<>(p.artists); case "gatherers" -> new ArrayList<>(p.gatherers); 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 deleted file mode 100644 index bc5bb86..0000000 --- a/src/main/java/it/polimi/ingsw/gc14/View/GUI/MainView.java +++ /dev/null @@ -1,49 +0,0 @@ -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.MiniModel; -import javafx.fxml.FXMLLoader; -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.Scene; -import javafx.scene.control.Label; -import javafx.scene.layout.VBox; - -import java.io.IOException; - -public class MainView { - - private final Scene scene; - private final MainFXMLController fxmlController; - private MiniModel model; - private ClientController controller; - private String username; - - public MainView() { - try { - FXMLLoader loader = new FXMLLoader( - getClass().getResource("/GUIScene/main.fxml") - ); - scene = new Scene(loader.load(), 1920, 1080); - fxmlController = loader.getController(); - } catch (IOException e) { - throw new RuntimeException("Impossibile caricare login.fxml", e); - } - } - - public Scene getScene() { return scene; } - public void setModel(MiniModel 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(); - } - -} \ No newline at end of file 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 index c794026..5b606b3 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/GUI/TotemFXMLController.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/GUI/TotemFXMLController.java @@ -25,11 +25,12 @@ public class TotemFXMLController { } public void render() { + mainHBox.getChildren().clear(); 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)); + img.setOnMouseClicked(e -> controller.totemChoice(controller.myUsername, controller.miniModel.availableTotems.indexOf(totem))); mainHBox.getChildren().add(img); } }