Add: Controller \n Updated:GameTest \n Fix:Game

This commit is contained in:
rubenpirreram
2026-04-12 19:51:16 +02:00
parent ec7ee064e2
commit 6763f7e630
4 changed files with 146 additions and 41 deletions
@@ -40,7 +40,7 @@ public class Game {
}
public List<BuildingCard>getUpperListBuilding() {
List<BuildingCard> cards = new ArrayList<>();
board.lowerListBuilding.forEach(x->cards.add(x.clone()));
board.upperListBuilding.forEach(x->cards.add(x.clone()));
return cards;
}
public List<BuildingCard>getLowerListBuilding() {
@@ -51,15 +51,9 @@ public class Game {
public CurrentState getCurrentState() {
return currentState;
};
public Player getPlayerByIndex(int playerIndex) throws IndexOutOfBoundsException {
if(playerIndex >= playersList.size())
throw new IndexOutOfBoundsException("Player index out of bounds");
return playersList.get(playerIndex);
}
public Player getPlayerByUsername(int playerIndex) throws IndexOutOfBoundsException {
if(playerIndex >= playersList.size())
throw new IndexOutOfBoundsException("Player index out of bounds");
return playersList.get(playerIndex);
public Player getPlayerByUsername(String Username) throws IndexOutOfBoundsException {
return playersList.stream().filter(x->x.getUserName().equals(Username)).findFirst().orElse(null);
}
@@ -248,36 +242,38 @@ public class Game {
//endregion
//region Optional Card Methods
public boolean PickOptionalTribeCard(Player player,TribeCard tribeCard) {
public boolean PickOptionalTribeCardByIndex(Player player,int cardIndex) {
if(currentState.getGameStage() != GameStages.OPTIONAL_CARD_EFFECT){
return false;
}
if(!player.equals(currentState.getCurrentPlayer())){
return false;
}
if(!board.upperListTribe.contains(tribeCard)){
if( cardIndex<0 || cardIndex >=board.upperListTribe.size())
return false;
}
if(tribeCard.IsEventCard()){
TribeCard tribeCard = board.upperListTribe.get(cardIndex);
if(tribeCard.IsEventCard())
return false;
}
Character tempCard = (Character) tribeCard;
tempCard.insert(player);
board.removeUpperTribeCard(tempCard);
OptionalCardQueue.removeIf(x->x.equals(player));
nextPlayerSetup();
return true;
}
public boolean PickOptionalBuildingCard(Player player, BuildingCard buildingCard) {
public boolean PickOptionalBuildingCard(Player player, int cardIndex) {
if(currentState.getGameStage() != GameStages.OPTIONAL_CARD_EFFECT){
return false;
}
if(!player.equals(currentState.getCurrentPlayer())){
return false;
}
if(!board.upperListBuilding.contains(buildingCard)){
if( cardIndex<0 || cardIndex >=board.upperListBuilding.size())
return false;
}
BuildingCard buildingCard = board.upperListBuilding.get(cardIndex);
if(buildingCard.buy(player)) {
board.removeUpperBuildingCard(buildingCard);
}
@@ -285,7 +281,7 @@ public class Game {
return false;
}
nextPlayerSetup();
OptionalCardQueue.removeIf(x->x.equals(player));
return true;
}
@@ -3,7 +3,6 @@ package it.polimi.ingsw.gc14.Model.Orders;
import it.polimi.ingsw.gc14.Model.Cards.BuildingCard;
import it.polimi.ingsw.gc14.Model.OrderLogicCard;
import it.polimi.ingsw.gc14.Model.Player;
import jdk.jshell.spi.ExecutionControl;
import java.util.*;