From b53d58528dd691998549bb1df07a2119d03d0c14 Mon Sep 17 00:00:00 2001 From: AleandroPagani Date: Thu, 14 May 2026 18:11:53 +0200 Subject: [PATCH] Modular rendering based on game stage --- .../gc14/View/GUI/MainFXMLController.java | 46 ++++++++++++++++--- 1 file changed, 39 insertions(+), 7 deletions(-) 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 7e359cd..d12ec6f 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 @@ -6,6 +6,7 @@ import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Cards.TribeCard; import it.polimi.ingsw.gc14.Model.GamePackage.Board; import it.polimi.ingsw.gc14.Model.GamePackage.CurrentState; +import it.polimi.ingsw.gc14.Model.GamePackage.GameStages; import it.polimi.ingsw.gc14.Model.Orders.OrderPlayer; import javafx.animation.ScaleTransition; import javafx.application.Platform; @@ -31,6 +32,9 @@ import javafx.util.Duration; import java.util.*; import java.util.stream.Collectors; +import static it.polimi.ingsw.gc14.Model.GamePackage.GameStages.RES_ACTIONS; +import static it.polimi.ingsw.gc14.Model.GamePackage.GameStages.SLOT_CHOICE; + public class MainFXMLController { @FXML private HBox mainHBox; @@ -51,6 +55,9 @@ public class MainFXMLController { private HBox popupCards; private ClientController controller; + private CurrentState old_state; + private CurrentState new_state; + public void setController(ClientController controller) { this.controller = controller; @@ -61,6 +68,9 @@ public class MainFXMLController { @FXML public void initialize() { + old_state=null; + new_state=null; + // Import font and apply CSS Font.loadFont(getClass().getResourceAsStream("/Fonts/InknutAntiqua-Regular.ttf"), 14); mainHBox.sceneProperty().addListener((obs, oldScene, newScene) -> { @@ -76,12 +86,34 @@ public class MainFXMLController { public void render() { - renderBackground(); - renderUpper(); - renderBoard(); - renderLower(); - renderMyHand(); - renderSidePanel(); + new_state=controller.miniModel.currentState; + + System.out.println("OLD: "+old_state+", NEW: "+new_state); + if (old_state==null) { + renderBackground(); + renderUpper(); + renderBoard(); + renderLower(); + renderMyHand(); + renderSidePanel(); + } else if (old_state.getGameStage()==SLOT_CHOICE) { + System.out.println("RIDISEGNO BOARD\n"); + renderBoard(); + } else if (old_state.getGameStage()==RES_ACTIONS) { + System.out.println("RIDISEGNO TUTTO"); + renderUpper(); + renderBoard(); + renderLower(); + renderSidePanel(); + renderMyHand(); + // TODO: se sono io a pescare renderizzo myHand, altrimenti no (non รจ scontato) + } else { + System.out.println("NON GESTITO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + } + + old_state=new_state; + // TODO: le info in sidepanel non vengono aggiornate sempre aggiornate, bisogna prima capire dove metterle + } @@ -233,7 +265,7 @@ public class MainFXMLController { upperList.getChildren().clear(); int i = 0; - for (TribeCard card : controller.miniModel.board.upperListTribe) { + for (TribeCard card : new ArrayList<>(controller.miniModel.board.upperListTribe)) { final int index = i; StackPane img = createCard(card, true, true); img.setOnMouseClicked(e -> controller.drawUpperTribeCard(controller.myUsername, index));