diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCard.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCard.java index d8576c6..0135454 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCard.java @@ -12,11 +12,12 @@ public abstract class TribeCard extends PlayableCard { public int getNMin() { return nMin; } - public TribeCard(int Era,boolean IsEventCard) { - super(Era); + public TribeCard(int Era,boolean isEventCard) { + this(Era,isEventCard,0); } - public TribeCard(int Era,boolean IsEventCard,int nMin) { + public TribeCard(int Era,boolean isEventCard,int nMin) { super(Era); this.nMin=nMin; + this.isEventCard=isEventCard; } } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/DecksCreator.java b/src/main/java/it/polimi/ingsw/gc14/Model/DecksCreator.java index 2d8ee1a..c7ba9b4 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/DecksCreator.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/DecksCreator.java @@ -19,6 +19,15 @@ import java.util.*; public class DecksCreator { + public static List loadTribeDeckByEra(int era) throws IllegalArgumentException + { + return switch (era) { + case 1 -> loadTribeDeck("/Cards/cards_era1.json"); + case 2 -> loadTribeDeck("/Cards/cards_era2.json"); + case 3 -> loadTribeDeck("/Cards/cards_era3.json"); + default -> throw new IllegalArgumentException(); + }; + } public static List loadTribeDeck(String resourcePath) { Gson gson = new Gson(); Type listType = new com.google.gson.reflect.TypeToken>(){}.getType(); @@ -39,7 +48,11 @@ public class DecksCreator { throw new RuntimeException("Errore caricamento mazzo: " + resourcePath, e); } } - + public static List loadBuildingDeckByEra(int era) throws IllegalArgumentException + { + if(era<=0 || era>3) throw new IllegalArgumentException(); + return loadBuildingDeck("/Cards/buildingCards.json").stream().filter(x->x.getEra()==era).toList(); + } public static List loadBuildingDeck(String resourcePath) { Gson gson = new Gson(); Type listType = new com.google.gson.reflect.TypeToken>(){}.getType(); 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 861211a..b5f1462 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Game.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Game.java @@ -2,18 +2,19 @@ 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.Events.ShamanicRitual; +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events.Sustenance; import it.polimi.ingsw.gc14.Model.Orders.Order2; import it.polimi.ingsw.gc14.Model.Orders.Order3; import it.polimi.ingsw.gc14.Model.Orders.Order4; import it.polimi.ingsw.gc14.Model.Orders.Order5; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; public class Game { private List slotList; - private List tribeDeck; - private List buildingDeck; + private Queue tribeDeck; private List upperListTribe; private List lowerListTribe; private List upperListBuilding; @@ -25,12 +26,17 @@ public class Game { private OrderLogicCard orderLogicCard; public Game(int nPlayers) { this.nPlayers = nPlayers; - - //Manca generazione slot ->this.slotList = slotList.stream().filter(slot -> slot.getNMinPlayer()>= nPlayers).toList(); + this.slotList = DecksCreator.loadSlotDeck().stream().filter(x->x.getNMinPlayer()<=nPlayers).sorted().toList(); + this.tribeDeck= getTribeDeck(nPlayers); + ArrayList buildingDeck = new ArrayList<>(DecksCreator.loadBuildingDeckByEra(1)); + Collections.shuffle(buildingDeck); + if(nPlayers==2) + this.upperListBuilding= buildingDeck.subList(0,1); + else + this.upperListBuilding= buildingDeck.subList(0,2); upperListTribe = new ArrayList<>(); lowerListTribe = new ArrayList<>(); - upperListBuilding = new ArrayList<>(); lowerListBuilding = new ArrayList<>(); playersList = new ArrayList<>(); } @@ -51,7 +57,42 @@ public class Game { break; } + for(int i=0;i getTribeDeck(int nPlayers) + { + ArrayList era1= DecksCreator.loadTribeDeckByEra(1).stream().filter(x->x.getNMin()<=nPlayers).collect(Collectors.toCollection(ArrayList::new)); + List era2= DecksCreator.loadTribeDeckByEra(2).stream().filter(x->x.getNMin()<=nPlayers).collect(Collectors.toCollection(ArrayList::new)); + List era3= DecksCreator.loadTribeDeckByEra(3).stream().filter(x->x.getNMin()<=nPlayers).collect(Collectors.toCollection(ArrayList::new)); + Collections.shuffle(era1); + Collections.shuffle(era2); + Collections.shuffle(era3); + Queue tribeDeck_temp=new LinkedList<>(); + tribeDeck_temp.addAll(era1); + tribeDeck_temp.addAll(era2); + tribeDeck_temp.addAll(era3); + tribeDeck_temp.add(new Sustenance(3,3)); + tribeDeck_temp.add(new ShamanicRitual(3,15,7)); + return tribeDeck_temp; } public void addPlayer(Player player) { diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Main.java b/src/main/java/it/polimi/ingsw/gc14/Model/Main.java index d37ebc4..2d87898 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Main.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Main.java @@ -11,6 +11,6 @@ public class Main { Inventor inventor= new Inventor(1,0); System.out.println(inventor); Listcards= DecksCreator.loadTribeDeck("/Cards/tribe_era1.json"); - List buildingCards = DecksCreator.loadBuildingDeck("/Cards/buildingcards.json"); + List buildingCards = DecksCreator.loadBuildingDeck("/Cards/buildingCards.json"); } }