diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java index 33a8e0b..c5f1b24 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/ShamanicRitual.java @@ -4,61 +4,56 @@ import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventType; import it.polimi.ingsw.gc14.Model.Cards.TribeCards.EventCard; import it.polimi.ingsw.gc14.Model.Player; import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; public class ShamanicRitual extends EventCard { int prestigeToAdd; - int getPrestigeToRemove; - public ShamanicRitual(int Era, int prestigeToAdd, int getPrestigeToRemove) { + int prestigeToRemove; + public ShamanicRitual(int Era, int prestigeToAdd, int prestigeToRemove) { super(Era, EventType.SHAMANIC_RITUAL); this.prestigeToAdd = prestigeToAdd; - this.getPrestigeToRemove = getPrestigeToRemove; + this.prestigeToRemove = prestigeToRemove; } // TODO รจ completamente scorretto... da controllare numero icone sciamani @Override public void activateEvent (ArrayList playerList){ - int maxPrestige = playerList.get(0).getPrestigeValue(); - int minPrestige = playerList.get(0).getPrestigeValue(); - ArrayList maxPrestigePlayer = new ArrayList<>(); - ArrayList minPrestigePlayer = new ArrayList<>(); + Map playerMap = new HashMap<>(); + int tmpIcons = 0; for (Player player : playerList) { - if (player.getPrestigeValue() > maxPrestige) { - maxPrestige = player.getPrestigeValue(); - } - if (player.getPrestigeValue() < minPrestige) { - minPrestige = player.getPrestigeValue(); + tmpIcons = player.shamans.stream().mapToInt(sh -> sh.getIcon()).sum(); + if (player.getBuildingCards().stream().anyMatch(b -> b.getEffectId() == 5)) { + tmpIcons = tmpIcons+3; } + playerMap.put(player, tmpIcons); } - for (Player player : playerList) { - int count = (int) player.getBuildingCards().stream().filter(b -> b.getEffectId() == 1).count(); - player.addPrestige(3 * count); + int maxIcon = playerMap.values().stream().mapToInt(Integer::intValue).max().orElse(0); + int minIcon = playerMap.values().stream().mapToInt(Integer::intValue).min().orElse(0); - if (player.getPrestigeValue() == maxPrestige) { - maxPrestigePlayer.add(player); - } - if (player.getPrestigeValue() == minPrestige) { - minPrestigePlayer.add(player); - } + List maxIconsPlayer = playerMap.entrySet().stream().filter(e -> e.getValue() == maxIcon).map(Map.Entry::getKey).collect(Collectors.toList()); + List minIconsPlayer = playerMap.entrySet().stream().filter(e -> e.getValue() == minIcon).map(Map.Entry::getKey).collect(Collectors.toList()); - player.removePrestige(3 * count); - } - for (Player player : maxPrestigePlayer) { - player.addPrestige(prestigeToAdd); + for (Player player : maxIconsPlayer) { if (player.getBuildingCards().stream().anyMatch(b -> b.getEffectId() == 6)) { + player.addPrestige(prestigeToAdd *2); + } else { player.addPrestige(prestigeToAdd); } } - for (Player player : minPrestigePlayer) { - if (!(player.getBuildingCards().stream().anyMatch(b -> b.getEffectId() == 2))){ - player.removePrestige(getPrestigeToRemove); + + for (Player player : minIconsPlayer) { + if (!(player.getBuildingCards().stream().anyMatch(b -> b.getEffectId() == 2))) { + player.removePrestige(prestigeToRemove); } } - }