ShamanicRitual fixed

This commit is contained in:
2026-03-19 16:15:00 +01:00
parent 91be6bddc0
commit d183479d82
@@ -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 <Player> playerList){
int maxPrestige = playerList.get(0).getPrestigeValue();
int minPrestige = playerList.get(0).getPrestigeValue();
ArrayList <Player> maxPrestigePlayer = new ArrayList<>();
ArrayList <Player> minPrestigePlayer = new ArrayList<>();
Map<Player, Integer> 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<Player> maxIconsPlayer = playerMap.entrySet().stream().filter(e -> e.getValue() == maxIcon).map(Map.Entry::getKey).collect(Collectors.toList());
List<Player> 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);
}
}
}