diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building0.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building0.java index 61671f8..b7c5fc4 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building0.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building0.java @@ -25,18 +25,22 @@ public class Building0 extends BuildingCard { } - public void setSetCards(Player player) + public void initialize(Player player) { if(purchased) { return; } HashMap map = new HashMap(); - for(CharacterType type : CharacterType.values()) + for(CharacterType t : CharacterType.values()) { - map.merge(type, 1, Integer::sum); + map.put(t, 0); } - + for(Character c : player.getCharacterCards()) + { + map.merge(c.getType(), 1, Integer::sum); + } + numSet= map.values().stream().min(Integer::compareTo).get(); purchased = true; } @@ -45,10 +49,23 @@ public class Building0 extends BuildingCard { return new Building0(getEra(),getPrice()); } @Override - public void applyEffect(ArrayList players) { - for (Player p : players) { - p.addFood(3); + public void applyEffect(Player player) { + HashMap map = new HashMap(); + + for(CharacterType t : CharacterType.values()) + { + map.put(t, 0); } + for(Character c : player.getCharacterCards()) + { + map.merge(c.getType(), 1, Integer::sum); + } + int temp = map.values().stream().min(Integer::compareTo).get(); + if(temp<=numSet) + { + return; + } + player.addFood(5*(temp-numSet)); }; } diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java new file mode 100644 index 0000000..4eddc47 --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building1.java @@ -0,0 +1,29 @@ +package it.polimi.ingsw.gc14.Model.Cards.Building.Effects; + +import it.polimi.ingsw.gc14.Model.Cards.Building.EffectType; +import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character; +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; +import it.polimi.ingsw.gc14.Model.Player; + +import java.util.HashMap; + +public class Building1 extends BuildingCard { + private CharacterType icon ; + public CharacterType getIcon() {return icon;} + + public Building1(int era, int price, CharacterType icon) { + super(era,price); + effectType= EffectType.ON_EVENT; + effectId=1; + this.icon=icon; + } + @Override + public BuildingCard clone() { + return new Building1(getEra(),getPrice(),getIcon()); + } + @Override + public void applyEffect(Player player) { + }; + +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java new file mode 100644 index 0000000..bd3ffea --- /dev/null +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/Building/Effects/Building4.java @@ -0,0 +1,78 @@ +package it.polimi.ingsw.gc14.Model.Cards.Building.Effects; + +import it.polimi.ingsw.gc14.Model.Cards.Building.EffectType; +import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character; +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Characters.Inventor; +import it.polimi.ingsw.gc14.Model.Player; + +import java.util.HashMap; + +public class Building4 extends BuildingCard { + + boolean purchased ; + int numPair; + public Building4(int era, int price) { + super(era,price); + effectType= EffectType.INVENTORPAIR; + effectId=4; + } + + public void initialize(Player player) + { + if(purchased) + { + return; + } + HashMap map = new HashMap<>(); + for(int i=0;i<10;i++) + { + map.put(i,0); + } + + for(Character c : player.getCharacterCards()) + { + if(c instanceof Inventor inv) + { + map.merge(inv.Icon(),1,Integer::sum); + } + } + numPair=0; + for(Integer i : map.values()) + { + numPair+=(i%2); + } + purchased = true; + + } + @Override + public BuildingCard clone() { + return new Building4(getEra(),getPrice()); + } + @Override + public void applyEffect(Player player) { + HashMap map = new HashMap<>(); + for(int i=0;i<10;i++) + { + map.put(i,0); + } + + for(Character c : player.getCharacterCards()) + { + if(c instanceof Inventor inv) + { + map.merge(inv.Icon(),1,Integer::sum); + } + } + int temp=0; + for(Integer i : map.values()) + { + temp+=(i%2); + } + if(temp<= numPair) + { + return; + } + player.addFood(3*(temp-numPair)); + }; +} diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/BuildingCard.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/BuildingCard.java index bde9def..056c7bb 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/BuildingCard.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/BuildingCard.java @@ -30,5 +30,5 @@ public abstract class BuildingCard extends PlayableCard implements Cloneable { @Override public abstract BuildingCard clone() ; - public abstract void applyEffect(ArrayList players); + public abstract void applyEffect(Player player); } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index af19c11..99faaf9 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -5,6 +5,7 @@ module it.polimi.ingsw.gc14 { requires org.controlsfx.controls; requires java.rmi; requires java.smartcardio; + requires it.polimi.ingsw.gc14; opens it.polimi.ingsw.gc14 to javafx.fxml; exports it.polimi.ingsw.gc14;