diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Hunt.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Hunt.java index 9b61dce..5bd3b0d 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Hunt.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Hunt.java @@ -17,7 +17,6 @@ public class Hunt extends EventCard { this.prestigeMoltiplicator = prestigeMoltiplicator; } - // TODO @Override public void activateEvent (ArrayList playerList){ for (Player player : playerList) { 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 55e3502..7ddef82 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 @@ -6,13 +6,60 @@ import it.polimi.ingsw.gc14.Model.Player; import java.util.ArrayList; public class ShamanicRitual extends EventCard { - public ShamanicRitual(int Era) { + int prestigeToAdd; + int getPrestigeToRemove; + public ShamanicRitual(int Era, int prestigeToAdd, int getPrestigeToRemove) { super(Era, EventType.SHAMANIC_RITUAL); + this.prestigeToAdd = prestigeToAdd; + this.getPrestigeToRemove = getPrestigeToRemove; + } // TODO @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<>(); + + for (Player player : playerList) { + if (player.getPrestigeValue() > maxPrestige) { + maxPrestige = player.getPrestigeValue(); + } + if (player.getPrestigeValue() < minPrestige) { + minPrestige = player.getPrestigeValue(); + } + } + + for (Player player : playerList) { + int count = (int) player.getBuildingCards().stream().filter(b -> b.getEffectId() == 1).count(); + player.addPrestige(3 * count); + + if (player.getPrestigeValue() == maxPrestige) { + maxPrestigePlayer.add(player); + } + if (player.getPrestigeValue() == minPrestige) { + minPrestigePlayer.add(player); + } + + player.removePrestige(3 * count); + } + + for (Player player : maxPrestigePlayer) { + player.addPrestige(prestigeToAdd); + if (player.getBuildingCards().stream().anyMatch(b -> b.getEffectId() == 6)) { + player.addPrestige(prestigeToAdd); + } + } + for (Player player : minPrestigePlayer) { + if (!(player.getBuildingCards().stream().anyMatch(b -> b.getEffectId() == 2))){ + player.removePrestige(getPrestigeToRemove); + } + } + } + + } diff --git a/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/HuntEventTest.java b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/HuntEventTest.java new file mode 100644 index 0000000..8112d34 --- /dev/null +++ b/src/test/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/HuntEventTest.java @@ -0,0 +1,47 @@ +package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events; + +import it.polimi.ingsw.gc14.Model.Player; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.Arrays; + +import static org.junit.jupiter.api.Assertions.*; + +class HuntEventTest { + + @Test + void activateEvent() { + Player p1 = new Player("Giacomo"); + Player p2 = new Player("xiaomi"); + Player p3 = new Player("intellij"); + Player p4 = new Player("mesos"); + + + ArrayList players = new ArrayList<>(Arrays.asList(p1,p2,p3,p4)); + Hunt h1 = new Hunt(1, 1, 3); + h1.activateEvent(players); + + assertEquals(0, p1.getPrestigeValue()); + assertEquals(1, p1.getFoodValue()); + assertEquals(0, p2.getPrestigeValue()); + assertEquals(1, p2.getFoodValue()); + assertEquals(0, p3.getPrestigeValue()); + assertEquals(1, p3.getFoodValue()); + assertEquals(0, p4.getPrestigeValue()); + assertEquals(1, p4.getFoodValue()); + + Hunt h2 = new Hunt(1, -11, 0); + h2.activateEvent(players); + assertEquals(0, p1.getPrestigeValue()); + assertEquals(-10, p1.getFoodValue()); + assertEquals(0, p2.getPrestigeValue()); + assertEquals(-10, p2.getFoodValue()); + assertEquals(0, p3.getPrestigeValue()); + assertEquals(-10, p3.getFoodValue()); + assertEquals(0, p4.getPrestigeValue()); + assertEquals(-10, p4.getFoodValue()); + + + } +} \ No newline at end of file