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 304c414..554e6b1 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java @@ -33,6 +33,21 @@ public class Game { board.upperListTribe.forEach(x->cards.add(x.clone())); return cards; } + public ListgetLowerListTribeCards() { + List cards = new ArrayList<>(); + board.lowerListTribe.forEach(x->cards.add(x.clone())); + return cards; + } + public ListgetUpperListBuilding() { + List cards = new ArrayList<>(); + board.lowerListBuilding.forEach(x->cards.add(x.clone())); + return cards; + } + public ListgetLowerListBuilding() { + List cards = new ArrayList<>(); + board.lowerListBuilding.forEach(x->cards.add(x.clone())); + return cards; + } public CurrentState getCurrentState() { return currentState; }; @@ -41,6 +56,11 @@ public class Game { 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 int getNPlayers() { @@ -157,7 +177,7 @@ public class Game { if(currentState.getNLower() <1) return false; TribeCard tribeCard = board.lowerListTribe.get(cardIndex); - if(!tribeCard.IsEventCard()) + if(tribeCard.IsEventCard()) return false; Character tempCard = (Character) tribeCard; @@ -305,9 +325,10 @@ public class Game { if(GameStages.RESOLVING_ACTIONS==currentState.getGameStage()) { orderLogicCard.push(currentState.getCurrentPlayer()); slotMap.put(currentState.getSlot(), null); - for (Slot s : board.getSlotList()) { + for (Slot s : slotMap.keySet()) { if (slotMap.get(s) != null) { currentState.PlayerUpdate(slotMap.get(s), s); + break; } } if(slotMap.values().stream().allMatch(v -> v == null)) diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java index 5c8d096..7c31a2e 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/GameTest.java @@ -1,8 +1,14 @@ package it.polimi.ingsw.gc14.Model; +import it.polimi.ingsw.gc14.Model.Cards.TribeCard; import it.polimi.ingsw.gc14.Model.GamePackage.GameStages; import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Queue; + import static org.junit.jupiter.api.Assertions.*; class GameTest { @@ -28,6 +34,7 @@ class GameTest { @Test void getNPlayers() { + } @Test @@ -60,7 +67,55 @@ class GameTest { } @Test - void drawUpperTribeCardByIndex() { + void drawingTribeCardByIndex() { + Game game=new Game(3); + Player p1=new Player("p1"); + Player p2=new Player("p2"); + Player p3=new Player("p3"); + Player p4=new Player("p3"); + + assertTrue(game.addPlayer(p1)); + assertTrue(game.addPlayer(p2)); + assertFalse(game.addPlayer(p2)); + assertTrue(game.addPlayer(p3)); + + + + Queueplayers=new LinkedList<>(); + for(int i=0;i<3;i++) { + players.add( game.getCurrentState().getCurrentPlayer()); + assertTrue(game.SlotChoiceByIndex(game.getCurrentState().getCurrentPlayer(), i)); + } + Player temp_player; + + temp_player=players.poll(); + assertEquals(temp_player,game.getCurrentState().getCurrentPlayer()); + + int index; + List cards=game.getLowerListTribeCards(); + + index=cards.indexOf(cards.stream().filter(x->!x.IsEventCard()).findFirst().get()); + assertTrue(game.DrawLowerTribeCardByIndex(temp_player,index)); + + temp_player=players.poll(); + assertEquals(temp_player,game.getCurrentState().getCurrentPlayer()); + + while(game.getCurrentState().getNUpper()>1) { + cards=game.getUpperListTribeCards(); + index=cards.indexOf(cards.stream().filter(x->!x.IsEventCard()).findFirst().get()); + assertTrue(game.DrawUpperTribeCardByIndex(temp_player,index)); + } + cards=game.getUpperListTribeCards(); + + index=cards.indexOf(cards.stream().filter(TribeCard::IsEventCard).findFirst().get()); + assertFalse(game.DrawUpperTribeCardByIndex(temp_player,index)); + index=cards.indexOf(cards.stream().filter(x->!x.IsEventCard()).findFirst().get()); + assertTrue(game.DrawUpperTribeCardByIndex(temp_player,index)); + index=cards.indexOf(cards.stream().filter(x->!x.IsEventCard()).findFirst().get()); + assertFalse(game.DrawUpperTribeCardByIndex(temp_player,index)); + + + } @Test