ShamanicRitual fixed
This commit is contained in:
+25
-30
@@ -4,60 +4,55 @@ 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user