From 6da5670dfff96518e351ee98534e7332b13fc955 Mon Sep 17 00:00:00 2001 From: rubenpirreram Date: Tue, 19 May 2026 18:28:05 +0200 Subject: [PATCH] Removed: Board in ApplyNextRound, MiniModel constructor Added: upperListTribe,lowerListTribe,upperListBuilding,lowerListBuilding in MiniModel constructor --- .../gc14/Controller/ClientController.java | 7 +------ .../java/it/polimi/ingsw/gc14/Model/Game.java | 16 +++++++-------- .../it/polimi/ingsw/gc14/Model/MiniModel.java | 13 +++++++----- .../Network/NetworkEvents/ApplyNextRound.java | 19 ++++++++++++++++-- .../gc14/Network/RMI/Server/RMIServer.java | 4 ++-- .../gc14/Network/TCP/Server/TCPServer.java | 9 +++++---- .../it/polimi/ingsw/gc14/ServerLauncher.java | 4 ++-- .../View/GUI/LeaderboardFXMLController.java | 2 +- .../gc14/View/GUI/MainFXMLController.java | 8 ++++---- .../it/polimi/ingsw/gc14/View/TUI/TUI.java | 20 +++++++++---------- 10 files changed, 58 insertions(+), 44 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java b/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java index 8e39e4a..dd1ce2a 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java +++ b/src/main/java/it/polimi/ingsw/gc14/Controller/ClientController.java @@ -59,12 +59,7 @@ public class ClientController { * @param model the model to set */ public void setModel(MiniModel model) { - this.miniModel.currentState=model.currentState; - this.miniModel.availableTotems=model.availableTotems; - this.miniModel.board=model.board; - this.miniModel.orderLogicCard= model.orderLogicCard; - this.miniModel.players=model.players; - this.miniModel.slotPlayerMap=model.slotPlayerMap; + this.miniModel = model; view.setModel(miniModel); } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java index 5fd6418..0b200b4 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java @@ -265,8 +265,8 @@ public class Game implements Serializable { * * @return a list containing clones of the upper tribe cards currently available on the board. */ - public ListgetUpperListTribeCards() { - List cards = new ArrayList<>(); + public ArrayListgetUpperListTribeCards() { + ArrayList cards = new ArrayList<>(); board.upperListTribe.forEach(x->cards.add(x.clone())); return cards; } @@ -276,8 +276,8 @@ public class Game implements Serializable { * * @return a list containing clones of the lower tribe cards currently available on the board. */ - public ListgetLowerListTribeCards() { - List cards = new ArrayList<>(); + public ArrayListgetLowerListTribeCards() { + ArrayList cards = new ArrayList<>(); board.lowerListTribe.forEach(x->cards.add(x.clone())); return cards; } @@ -287,8 +287,8 @@ public class Game implements Serializable { * * @return a list containing clones of the upper building cards currently available on the board. */ - public ListgetUpperListBuilding() { - List cards = new ArrayList<>(); + public ArrayListgetUpperListBuilding() { + ArrayList cards = new ArrayList<>(); board.upperListBuilding.forEach(x->cards.add(x.clone())); return cards; } @@ -298,8 +298,8 @@ public class Game implements Serializable { * * @return a list containing clones of the lower building cards currently available on the board. */ - public ListgetLowerListBuilding() { - List cards = new ArrayList<>(); + public ArrayListgetLowerListBuilding() { + ArrayList cards = new ArrayList<>(); board.lowerListBuilding.forEach(x->cards.add(x.clone())); return cards; } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/MiniModel.java b/src/main/java/it/polimi/ingsw/gc14/Model/MiniModel.java index 138b9e7..297bef1 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/MiniModel.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/MiniModel.java @@ -69,26 +69,29 @@ public class MiniModel implements Serializable { /** * Constructs a complete mini model from the current server-side game data. * - * @param board the current game board. + *TODO * @param slotPlayerMap the map associating occupied slots with players. * @param orderLogicCard the card managing player turn order. * @param currentState the current state of the game. * @param players the list of players in the match. * @param availableTotems the list of totems still available for selection. */ - public MiniModel(Board board, - Map slotPlayerMap, + public MiniModel(Map slotPlayerMap, OrderLogicCard orderLogicCard, CurrentState currentState, List players, - List availableTotems) { - this.board = board; + List availableTotems,ArrayList upperListTribeCards,ArrayListlowerListTribeCards,ArrayList upperListBuildingCards,ArrayListlowerListBuildingCards) { + this.slotPlayerMap = slotPlayerMap; this.orderLogicCard = orderLogicCard; this.currentState = currentState; this.players = new HashMap<>(); this.availableTotems = availableTotems; this.standingPlayers = new ArrayList<>(); + this.upperListTribeCards = upperListTribeCards; + this.lowerListTribeCards = lowerListTribeCards; + this.upperListBuildingCards = upperListBuildingCards; + this.lowerListBuildingCards = lowerListBuildingCards; setPlayers(players); } diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/ApplyNextRound.java b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/ApplyNextRound.java index 901f529..9760b4e 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/ApplyNextRound.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/NetworkEvents/ApplyNextRound.java @@ -1,6 +1,8 @@ package it.polimi.ingsw.gc14.Network.NetworkEvents; import it.polimi.ingsw.gc14.Controller.GameController; +import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; +import it.polimi.ingsw.gc14.Model.Cards.TribeCard; import it.polimi.ingsw.gc14.Model.GamePackage.CurrentState; import it.polimi.ingsw.gc14.Model.MiniModel; import it.polimi.ingsw.gc14.Model.OrderLogicCard; @@ -11,6 +13,7 @@ import it.polimi.ingsw.gc14.Network.NetworkEvent; import it.polimi.ingsw.gc14.View.IView; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -20,6 +23,11 @@ import java.util.Map; public class ApplyNextRound extends NetworkEvent implements Serializable{ List players; + ArrayList upperListTribeCards; + ArrayList lowerListTribeCards; + ArrayList upperListBuildingCards; + ArrayList lowerListBuildingCards; + /** * Constructs an event that updates the game state for the next round. @@ -29,8 +37,12 @@ public class ApplyNextRound extends NetworkEvent implements Serializable{ * @param currentState the current state of the game. * @param players the list of players in the game. */ - public ApplyNextRound(Map slotPlayerMap, OrderLogicCard orderLogicCard, CurrentState currentState, List players){ + public ApplyNextRound(Map slotPlayerMap, OrderLogicCard orderLogicCard, CurrentState currentState, List players, ArrayList upperListTribeCards, ArrayListlowerListTribeCards, ArrayList upperListBuildingCards, ArrayListlowerListBuildingCards) { super("SERVER",EventType.NEXT_ROUND,false); + this.upperListBuildingCards = upperListBuildingCards; + this.lowerListBuildingCards = lowerListBuildingCards; + this.upperListTribeCards = upperListTribeCards; + this.lowerListTribeCards = lowerListTribeCards; this.slotPlayerMap = slotPlayerMap; this.orderLogicCard = orderLogicCard; this.currentState = currentState; @@ -51,7 +63,10 @@ public class ApplyNextRound extends NetworkEvent implements Serializable{ miniModel.setOrderLogicCard(orderLogicCard); miniModel.setCurrentState(currentState); miniModel.setPlayers(players); - miniModel.board.nextRound(); + miniModel.upperListTribeCards=upperListTribeCards; + miniModel.lowerListTribeCards=lowerListTribeCards; + miniModel.upperListBuildingCards=upperListBuildingCards; + miniModel.lowerListBuildingCards=lowerListBuildingCards; return true; } diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java index 5c10a9a..cc3e337 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/RMI/Server/RMIServer.java @@ -111,7 +111,7 @@ public class RMIServer extends UnicastRemoteObject implements IGameServer { System.out.println("Reconnected player: " + username); startWatchdog(username); Game game = controller.getModel(); - callback.onGameInit(new MiniModel(game.getBoard(),game.getSlotMap(), game.orderLogicCard,game.getCurrentState(),game.getPlayers(),game.getAvailableTotems())); + callback.onGameInit(new MiniModel(game.getSlotMap(), game.orderLogicCard,game.getCurrentState(),game.getPlayers(),game.getAvailableTotems(),game.getUpperListTribeCards(),game.getLowerListTribeCards(),game.getUpperListBuilding(),game.getLowerListBuilding())); System.out.println("Model sent: " + username); actionQueue.add(new ReconnectPlayer(username)); return true; @@ -137,7 +137,7 @@ public class RMIServer extends UnicastRemoteObject implements IGameServer { System.out.println("Reconnected player: " + username); startWatchdog(username); Game game = controller.getModel(); - callback.onGameInit(new MiniModel(game.getBoard(),game.getSlotMap(), game.orderLogicCard,game.getCurrentState(),game.getPlayers(),game.getAvailableTotems())); + callback.onGameInit(new MiniModel(game.getSlotMap(), game.orderLogicCard,game.getCurrentState(),game.getPlayers(),game.getAvailableTotems(),game.getUpperListTribeCards(),game.getLowerListTribeCards(),game.getUpperListBuilding(),game.getLowerListBuilding())); System.out.println("Model sent: " + username); actionQueue.add(new ReconnectPlayer(username)); return true; diff --git a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java index f5ff513..fd73764 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java +++ b/src/main/java/it/polimi/ingsw/gc14/Network/TCP/Server/TCPServer.java @@ -228,12 +228,12 @@ public class TCPServer { Game game = controller.getModel(); handler.notifyMiniModel(new MiniModel( - game.getBoard(), game.getSlotMap(), game.orderLogicCard, game.getCurrentState(), game.getPlayers(), - game.getAvailableTotems() + game.getAvailableTotems(), + game.getUpperListTribeCards(),game.getLowerListTribeCards(),game.getUpperListBuilding(),game.getLowerListBuilding() )); Thread thread = new Thread(handler); @@ -300,12 +300,13 @@ public class TCPServer { Game game = controller.getModel(); handler.notifyMiniModel(new MiniModel( - game.getBoard(), game.getSlotMap(), game.orderLogicCard, game.getCurrentState(), game.getPlayers(), - game.getAvailableTotems() + game.getAvailableTotems(), + game.getUpperListTribeCards(),game.getLowerListTribeCards(),game.getUpperListBuilding(),game.getLowerListBuilding() + )); Thread thread = new Thread(handler); diff --git a/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java b/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java index 25b1f5e..3f13fe5 100644 --- a/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java +++ b/src/main/java/it/polimi/ingsw/gc14/ServerLauncher.java @@ -150,7 +150,7 @@ public class ServerLauncher { serverTCP.notifyAll(event); if(game.getCurrentState().getRound()!=roundPrev) { - ApplyNextRound nextRound=new ApplyNextRound(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),game.getPlayers()); + ApplyNextRound nextRound=new ApplyNextRound(game.getSlotMap(), game.orderLogicCard, game.getCurrentState(),game.getPlayers(),game.getUpperListTribeCards(),game.getLowerListTribeCards(),game.getUpperListBuilding(),game.getLowerListBuilding()); serverRMI.notifyAll(nextRound); serverTCP.notifyAll(nextRound); } @@ -247,7 +247,7 @@ public class ServerLauncher { MiniModel miniModel; synchronized (gameController) { Game game = gameController.getModel(); - miniModel= new MiniModel(game.getBoard(),game.getSlotMap(), game.orderLogicCard,game.getCurrentState(),game.getPlayers(), new ArrayList<>(List.of(Totems.values()))); + miniModel= new MiniModel(game.getSlotMap(), game.orderLogicCard,game.getCurrentState(),game.getPlayers(), new ArrayList<>(List.of(Totems.values())),game.getUpperListTribeCards(),game.getLowerListTribeCards(),game.getUpperListBuilding(),game.getLowerListBuilding()); } serverRMI.notifyAll(miniModel); serverTCP.notifyAll(miniModel); diff --git a/src/main/java/it/polimi/ingsw/gc14/View/GUI/LeaderboardFXMLController.java b/src/main/java/it/polimi/ingsw/gc14/View/GUI/LeaderboardFXMLController.java index 548f459..62d3f4a 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/GUI/LeaderboardFXMLController.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/GUI/LeaderboardFXMLController.java @@ -67,7 +67,7 @@ public class LeaderboardFXMLController { public void render() { rankingList.getChildren().clear(); - if(controller.miniModel.standingPlayers!=null) + if(!controller.miniModel.standingPlayers.isEmpty()) { List sorted = controller.miniModel.standingPlayers; 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 3998fbb..fccdeea 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 @@ -272,7 +272,7 @@ public class MainFXMLController { upperList.getChildren().clear(); int i = 0; - for (TribeCard card : controller.miniModel.board.upperListTribe) { + for (TribeCard card : controller.miniModel.upperListTribeCards) { final int index = i; StackPane img = createCard(card, true, true, upperList); img.setOnMouseClicked(e -> controller.drawUpperTribeCard(controller.myUsername, index)); @@ -288,7 +288,7 @@ public class MainFXMLController { lowerList.getChildren().clear(); int i = 0; - for (TribeCard card : controller.miniModel.board.lowerListTribe) { + for (TribeCard card : controller.miniModel.lowerListTribeCards) { final int index = i; StackPane img = createCard(card, true, true, lowerList); img.setOnMouseClicked(e -> controller.drawLowerTribeCard(controller.myUsername, index)); @@ -299,7 +299,7 @@ public class MainFXMLController { } private void drawUpperBuilding() { - ArrayList cardList = new ArrayList<>(controller.miniModel.board.upperListBuilding); + ArrayList cardList = new ArrayList<>(controller.miniModel.upperListBuildingCards); if (!cardList.isEmpty()) { StackPane img = createCard(cardList.getLast(), true, true, upperList); Label label = new Label(String.valueOf(cardList.size())); @@ -314,7 +314,7 @@ public class MainFXMLController { } private void drawLowerBuilding() { - ArrayList cardList = new ArrayList<>(controller.miniModel.board.lowerListBuilding); + ArrayList cardList = new ArrayList<>(controller.miniModel.lowerListBuildingCards); if (!cardList.isEmpty()) { StackPane img = createCard(cardList.getLast(), true, true, lowerList); Label label = new Label(String.valueOf(cardList.size())); diff --git a/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java b/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java index 504ee6e..c79faa7 100644 --- a/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java +++ b/src/main/java/it/polimi/ingsw/gc14/View/TUI/TUI.java @@ -333,15 +333,15 @@ public class TUI implements IView { List stringLowerListTribe=new ArrayList<>(); stringUpperListTribe.add("Char/Events"); stringLowerListTribe.add("Char/Events"); - for(int i=0;iTribeTableUpper.addRow(x));