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 15f09ad..2037d26 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java @@ -640,7 +640,7 @@ public class Game implements Serializable { { currentState.GameStageUpdate(GameStages.OPTIONAL_CARD_EFFECT); HashMap optional=new LinkedHashMap<>(); - for (Player p : playersList) { + for (Player p : orderLogicCard.players) { int tempCount=(int)p.buildingCards.stream().filter(x->x.getEffectId()==12).count(); if(tempCount>0) { diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/GamePackage/Board.java b/src/main/java/it/polimi/ingsw/gc14/Model/GamePackage/Board.java index 4fda653..3f16dcc 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/GamePackage/Board.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/GamePackage/Board.java @@ -41,6 +41,8 @@ public class Board implements Serializable { /** Contains all the building cards of the upper list. When a new era starts, the old era's buildings are moved from the upper to the lower list */ public List lowerListBuilding; + + private final ArrayList> buildingCardsAllEras; /** Number of players */ private int nTotem; @@ -88,6 +90,7 @@ public class Board implements Serializable { tribeDeck=generateTribeDeck(nTotem); era=1; + for(int i=0;i buildingDeck = new ArrayList<>(DecksCreator.loadBuildingDeckByEra(1)); Collections.shuffle(buildingDeck); + buildingCardsAllEras= new ArrayList<>(); + buildingCardsAllEras.add(new ArrayList<>()); + buildingCardsAllEras.add(new ArrayList<>()); + buildingCardsAllEras.add(new ArrayList<>()); if(nTotem==2) + { + buildingCardsAllEras.set(0, new ArrayList<>(buildingDeck.subList(0, 1))); upperListBuilding = new ArrayList<>(buildingDeck.subList(0,1)); + } else + { + buildingCardsAllEras.set(0, new ArrayList<>(buildingDeck.subList(0, 2))); upperListBuilding = new ArrayList<>(buildingDeck.subList(0,2)); + } + + buildingDeck=new ArrayList<>(DecksCreator.loadBuildingDeckByEra(2)); + Collections.shuffle(buildingDeck); + if(nTotem<=3) + { + buildingCardsAllEras.set(1, new ArrayList(buildingDeck.subList(0, 2))); + } + else + { + buildingCardsAllEras.set(1, new ArrayList(buildingDeck.subList(0, 3))); + } + buildingDeck=new ArrayList<>(DecksCreator.loadBuildingDeckByEra(3)); + Collections.shuffle(buildingDeck); + if(nTotem==2) + { + buildingCardsAllEras.set(2, new ArrayList(buildingDeck.subList(0, 3))); + }else if(nTotem==5) + { + buildingCardsAllEras.set(2, new ArrayList(buildingDeck.subList(0, 5))); + } + else { + buildingCardsAllEras.set(2, new ArrayList(buildingDeck.subList(0, 4))); + } + } /** @@ -230,27 +267,11 @@ public class Board implements Serializable { Collections.shuffle(buildingCards); if(era==2) { - if(nTotem<=3) - { - upperListBuilding.addAll(buildingCards.subList(0,2)); - } - else - { - upperListBuilding.addAll( buildingCards.subList(0,3)); - } + upperListBuilding.addAll(buildingCardsAllEras.get(1)); } - else // Era 3 + else { - if(nTotem==2) - { - upperListBuilding.addAll( buildingCards.subList(0,3)); - }else if(nTotem==5) - { - upperListBuilding.addAll( buildingCards.subList(0,5)); - } - else { - upperListBuilding.addAll(buildingCards.subList(0,4)); - } + upperListBuilding.addAll(buildingCardsAllEras.get(2)); } } } diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/GamePackage/BoardTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/GamePackage/BoardTest.java index f270740..ce03ea4 100644 --- a/src/test/java/it/polimi/ingsw/gc14/Model/GamePackage/BoardTest.java +++ b/src/test/java/it/polimi/ingsw/gc14/Model/GamePackage/BoardTest.java @@ -149,7 +149,7 @@ class BoardTest { } @Test - @DisplayName("RemgetTribeDeckSizeoving a card from upper row of building cards") + @DisplayName("Removing a card from upper row of building cards") void removeUpperBuildingCard() { Board bd = new Board(3); @@ -214,6 +214,8 @@ class BoardTest { assertEquals(upperListBefore, bd1.lowerListBuilding); assertNotEquals(upperListBefore, bd1.upperListBuilding); assertEquals(2, bd1.upperListBuilding.size()); + assertTrue(bd1.upperListBuilding.stream().allMatch(x->x.getEra()==2)); + assertTrue(bd1.lowerListBuilding.stream().allMatch(x->x.getEra()==1)); // Era 2, nTotem > 3 @@ -227,7 +229,8 @@ class BoardTest { assertEquals(upperListBefore, bd2.lowerListBuilding); assertNotEquals(upperListBefore, bd2.upperListBuilding); assertEquals(3, bd2.upperListBuilding.size()); - + assertTrue(bd2.upperListBuilding.stream().allMatch(x->x.getEra()==2)); + assertTrue(bd2.lowerListBuilding.stream().allMatch(x->x.getEra()==1)); // Era 3, nTotem == 2 numPlayer = 2; @@ -243,6 +246,8 @@ class BoardTest { assertEquals(upperListBefore, bd3.lowerListBuilding); assertNotEquals(upperListBefore, bd3.upperListBuilding); assertEquals(3, bd3.upperListBuilding.size()); + assertTrue(bd3.upperListBuilding.stream().allMatch(x->x.getEra()==3)); + assertTrue(bd3.lowerListBuilding.stream().allMatch(x->x.getEra()==2)); // Era 3, nTotem == 5 @@ -259,6 +264,8 @@ class BoardTest { assertEquals(upperListBefore, bd4.lowerListBuilding); assertNotEquals(upperListBefore, bd4.upperListBuilding); assertEquals(5, bd4.upperListBuilding.size()); + assertTrue(bd4.upperListBuilding.stream().allMatch(x->x.getEra()==3)); + assertTrue(bd4.lowerListBuilding.stream().allMatch(x->x.getEra()==2)); // Era 3, nTotem != 2, 5 @@ -275,6 +282,8 @@ class BoardTest { assertEquals(upperListBefore, bd5.lowerListBuilding); assertNotEquals(upperListBefore, bd5.upperListBuilding); assertEquals(4, bd5.upperListBuilding.size()); + assertTrue(bd5.upperListBuilding.stream().allMatch(x->x.getEra()==3)); + assertTrue(bd5.lowerListBuilding.stream().allMatch(x->x.getEra()==2)); }