Modular rendering based on game stage

This commit is contained in:
2026-05-14 18:11:53 +02:00
parent 711d57e4cd
commit b53d58528d
@@ -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));