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