From 948f44c1dd77d3dcf9f63c6b61e46e6b901f494e Mon Sep 17 00:00:00 2001 From: MatteoPellegrino05 Date: Tue, 24 Mar 2026 15:09:20 +0100 Subject: [PATCH] Add: DrawCard implementations, fix: CurrentState nUpper&nLower management --- .../java/it/polimi/ingsw/gc14/Model/Game.java | 61 ++++++++++++++----- .../gc14/Model/GamePackage/CurrentState.java | 8 +-- 2 files changed, 49 insertions(+), 20 deletions(-) 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 289ad1c..680a854 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java @@ -2,6 +2,7 @@ package it.polimi.ingsw.gc14.Model; import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; import it.polimi.ingsw.gc14.Model.Cards.TribeCard; +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events.ShamanicRitual; @@ -96,11 +97,24 @@ public class Game { { return false; } - if(player.equals(currentState.getCurrentPlayer())) + if(!player.equals(currentState.getCurrentPlayer())) { - + return false; } - return false; + if(!board.containsUpperTribeCard(tribeCard)) + return false; + if(currentState.getNUpper() <1) + return false; + if(!tribeCard.IsEventCard()) + return false; + + Character tempCard = (Character) tribeCard; + tempCard.insert(player); + board.removeUpperTribeCard(tempCard); + currentState.UpperDrawn(); + if(currentState.getNUpper() ==0 && currentState.getNLower() ==0) + nextPlayerSetup(); + return true; } public boolean DrawLowerTribeCard(Player player,TribeCard tribeCard) { @@ -108,11 +122,24 @@ public class Game { { return false; } - if(player.equals(currentState.getCurrentPlayer())) + if(!player.equals(currentState.getCurrentPlayer())) { - + return false; } - return false; + if(!board.containsLowerTribeCard(tribeCard)) + return false; + if(currentState.getNLower() <1) + return false; + if(!tribeCard.IsEventCard()) + return false; + + Character tempCard = (Character) tribeCard; + tempCard.insert(player); + board.removeLowerTribeCard(tempCard); + currentState.LowerDrawn(); + if(currentState.getNLower() ==0 && currentState.getNUpper() ==0) + nextPlayerSetup(); + return true; } @@ -129,6 +156,8 @@ public class Game { { return false; } + if(currentState.getNUpper() <1) + return false; if(buildingCard.buy(player)) { currentState.UpperDrawn(); @@ -136,11 +165,10 @@ public class Game { } else return false; - if(currentState.getNUpper()==currentState.getSlot().getNUpper()&& currentState.getNLower()==currentState.getSlot().getNLower()) - { + if(currentState.getNLower() ==0 && currentState.getNUpper() ==0) + nextPlayerSetup(); - } - return false; + return true; } public boolean DrawLowerBuildingCard(Player player,BuildingCard buildingCard) { if(currentState.getGameStage()!= GameStages.RESOLVING_ACTIONS) @@ -155,23 +183,24 @@ public class Game { { return false; } + if(currentState.getNLower() <1) + return false; if(buildingCard.buy(player)) { - currentState.UpperDrawn(); + currentState.LowerDrawn(); board.removeLowerBuildingCard(buildingCard); } else return false; - if(currentState.getNUpper()==currentState.getSlot().getNUpper()&& currentState.getNLower()==currentState.getSlot().getNLower()) - { + if(currentState.getNLower() ==0 && currentState.getNUpper() ==0) + nextPlayerSetup(); + + return true; - } - return false; } //endregion - private void EraUpdate(){} private void nextPlayerSetup() { if(GameStages.RESOLVING_ACTIONS==currentState.getGameStage()) { orderLogicCard.push(currentState.getCurrentPlayer()); diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/GamePackage/CurrentState.java b/src/main/java/it/polimi/ingsw/gc14/Model/GamePackage/CurrentState.java index e1e7a2b..78d1444 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/GamePackage/CurrentState.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/GamePackage/CurrentState.java @@ -53,11 +53,11 @@ public class CurrentState { } public void UpperDrawn(){ - NUpper++; + NUpper--; } public void LowerDrawn(){ - NLower++; + NLower--; } public void GameStageUpdate(GameStages GameStage){ @@ -80,8 +80,8 @@ public class CurrentState { public void PlayerUpdate(Player player, Slot slot){ this.player = player; this.slot = slot; - this.NUpper = 0; - this.NLower = 0; + this.NUpper = slot.getNUpper(); + this.NLower = slot.getNLower(); } // End functions }