Fix: Replaced Model With MiniModel in the client implementation and in the view

This commit is contained in:
rubenpirreram
2026-05-12 23:21:06 +02:00
parent 40aa62e3d0
commit 779b72275c
16 changed files with 224 additions and 217 deletions
@@ -2,6 +2,7 @@ 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 it.polimi.ingsw.gc14.View.GUI.MainView;
import it.polimi.ingsw.gc14.View.IView;
import javafx.application.Platform;
@@ -11,7 +12,7 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI
private final Stage stage;
private final MainView mainView;
private Game model;
private MiniModel model;
private ClientController controller;
private String username;
@@ -21,9 +22,9 @@ public class GUI implements IView { // stessa interfaccia che implementa TUI
}
@Override
public void setModel(Game model) {
public void setModel(MiniModel model) {
this.model = model;
mainView.setModel(model, controller, username);
mainView.setModel(model,controller, username);
Platform.runLater(() -> {
stage.setScene(mainView.getScene());
@@ -47,12 +47,12 @@ public class MainFXMLController {
private Popup popup;
private HBox popupCards;
private Game model;
private MiniModel model;
private ClientController controller;
private String username;
private final Map<String, ImageView> cardCache = new HashMap<>();
public void setModel(Game model) {this.model = model;}
public void setModel(MiniModel model) {this.model = model;}
public void setController(ClientController controller) {this.controller = controller;}
public void setUsername(String username) {this.username = username;}
@@ -116,9 +116,9 @@ public class MainFXMLController {
img.setClip(clip);
StackPane wrapper = new StackPane(img);
Player player = model.getSlotMap().get(slot);
Player player = model.slotPlayerMap.get(slot);
if (player != null) {
int index = model.getPlayers().indexOf(player);
int index = new ArrayList<>(model.players.values()).indexOf(player);
ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + index + ".png")));
totem.setFitHeight(70);
totem.setPreserveRatio(true);
@@ -221,7 +221,7 @@ public class MainFXMLController {
upperList.getChildren().clear();
int i = 0;
for (TribeCard card : model.getUpperListTribeCards()) {
for (TribeCard card : model.board.upperListTribe) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawUpperTribeCard(username, index));
@@ -229,7 +229,7 @@ public class MainFXMLController {
i++;
}
i = 0;
for (BuildingCard card : model.getUpperListBuilding()) {
for (BuildingCard card : model.board.upperListBuilding) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawUpperBuildingCard(username, index));
@@ -238,7 +238,7 @@ public class MainFXMLController {
}
}
private void renderOrder() {
StackPane card = createOrder(Integer.toString(model.getNPlayers()), false, false);
StackPane card = createOrder(Integer.toString(model.players.size()), false, false);
VBox overlay = new VBox(-20);
overlay.setPickOnBounds(false);
@@ -246,13 +246,13 @@ public class MainFXMLController {
StackPane.setMargin(overlay, new Insets(9, 0, 0, 57));
int i = 0;
for (Player player : model.getPlayers()) {
for (Player player : model.players.values()) {
final int index = i;
ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + index + ".png")));
totem.setFitHeight(70);
totem.setPreserveRatio(true);
if (!(model.orderLogicCard.getPosition(player.getUserName()) != -1 && !model.getSlotMap().containsValue(player))) {
if (!(model.orderLogicCard.getPosition(player.getUserName()) != -1 && !model.slotPlayerMap.containsValue(player))) {
totem.setOpacity(0.0);
}
overlay.getChildren().add(totem);
@@ -267,7 +267,7 @@ public class MainFXMLController {
board.getChildren().clear();
String path = "";
switch (model.getCurrentState().getEra()) {
switch (model.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,7 +289,7 @@ public class MainFXMLController {
renderOrder();
int i = 0;
for (Map.Entry<Slot, Player> entry : model.getSlotMap().entrySet()) {
for (Map.Entry<Slot, Player> entry : model.slotPlayerMap.entrySet()) {
Slot slot = entry.getKey();
final int index = i;
StackPane img = createSlot(slot, true, true);
@@ -304,7 +304,7 @@ public class MainFXMLController {
lowerList.getChildren().clear();
int i = 0;
for (TribeCard card : model.getLowerListTribeCards()) {
for (TribeCard card : model.board.lowerListTribe) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawLowerTribeCard(username, index));
@@ -312,7 +312,7 @@ public class MainFXMLController {
i++;
}
i = 0;
for (BuildingCard card : model.getLowerListBuilding()) {
for (BuildingCard card : model.board.lowerListBuilding) {
final int index = i;
StackPane img = createCard(card, true, true);
img.setOnMouseClicked(e -> controller.drawLowerBuildingCard(username, index));
@@ -327,13 +327,13 @@ public class MainFXMLController {
myHand.setSpacing(14);
myHand.setAlignment(Pos.CENTER);
drawMyHandList(myHand, model.getPlayerByUsername(username).artists);
drawMyHandList(myHand, model.getPlayerByUsername(username).gatherers);
drawMyHandList(myHand, model.getPlayerByUsername(username).inventors);
drawMyHandList(myHand, model.getPlayerByUsername(username).builders);
drawMyHandList(myHand, model.getPlayerByUsername(username).shamans);
drawMyHandList(myHand, model.getPlayerByUsername(username).hunters);
drawMyHandList(myHand, model.getPlayerByUsername(username).buildingCards);
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);
}
private void drawMyHandList(HBox myHand, ArrayList<? extends PlayableCard> cardList) {
if (!cardList.isEmpty()) {
@@ -361,16 +361,16 @@ public class MainFXMLController {
sidePanel.getChildren().clear();
sidePanel.setSpacing(6);
era.setText(Integer.toString(model.getCurrentState().getEra()));
round.setText(Integer.toString(model.getCurrentState().getRound()));
player.setText(model.getCurrentState().getCurrentPlayer().getUserName());
era.setText(Integer.toString(model.currentState.getEra()));
round.setText(Integer.toString(model.currentState.getRound()));
player.setText(model.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.getPlayers()) {
for (Player player : model.players.values()) {
// Card container
VBox card = new VBox(3);
VBox.setMargin(card, new Insets(5));
@@ -382,7 +382,7 @@ public class MainFXMLController {
// Riga 1: icona totem + nome
HBox headerRow = new HBox(8);
headerRow.setAlignment(Pos.CENTER);
int index = model.getPlayers().indexOf(player);
int index = new ArrayList<>(model.players.values()).indexOf(player);
ImageView totem = new ImageView(new Image(getClass().getResourceAsStream("/GUIImages/Totems/totem_" + index + ".png")));
totem.setFitHeight(20);
totem.setPreserveRatio(true);
@@ -465,7 +465,7 @@ public class MainFXMLController {
}
}
private ArrayList<PlayableCard> getPlayerCards(String username, String type) {
Player p = model.getPlayerByUsername(username);
Player p = model.players.get(username);
return switch (type) {
case "artists" -> new ArrayList<>(p.artists);
case "gatherers" -> new ArrayList<>(p.gatherers);
@@ -2,6 +2,7 @@ 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;
@@ -15,7 +16,7 @@ public class MainView {
private final Scene scene;
private final MainFXMLController fxmlController;
private Game model;
private MiniModel model;
private ClientController controller;
private String username;
@@ -32,7 +33,7 @@ public class MainView {
}
public Scene getScene() { return scene; }
public void setModel(Game model, ClientController controller, String username) {
public void setModel(MiniModel model, ClientController controller, String username) {
this.model = model;
fxmlController.setModel(model);
this.controller = controller;