From ccb6264f4279d2d543dcd14846facfacfa745d8b Mon Sep 17 00:00:00 2001 From: GabrieleRadice <265572328+GabrieleRadice@users.noreply.github.com> Date: Sun, 15 Mar 2026 19:34:21 +0100 Subject: [PATCH] Sustenance Event Added --- .../Cards/TribeCards/Events/Sustenance.java | 45 +++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java index b08828c..bb33837 100644 --- a/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java +++ b/src/main/java/it/polimi/ingsw/gc14/Model/Cards/TribeCards/Events/Sustenance.java @@ -1,18 +1,57 @@ package it.polimi.ingsw.gc14.Model.Cards.TribeCards.Events; +import it.polimi.ingsw.gc14.Model.Cards.Building.Effects.Building1; +import it.polimi.ingsw.gc14.Model.Cards.BuildingCard; +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.Character; +import it.polimi.ingsw.gc14.Model.Cards.TribeCards.CharacterType; 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.stream.Collectors; public class Sustenance extends EventCard { - public Sustenance(int Era) { + int PrestigeDebt; + + public Sustenance(int Era, int PrestigeDebt) { super(Era, EventType.SUSTENANCE); + this.PrestigeDebt = PrestigeDebt; } - // TODO @Override - public void activateEvent (ArrayList playerList){ + public void activateEvent (ArrayList playerList) { + for(Player player : playerList){ + int NChar = player.getCharacterCards().size(); + int NGatherers = + (int) player.getCharacterCards().stream().filter(x -> x.getType().equals(CharacterType.GATHERERS)).count(); + int NCharDiscount = 0; + for(Player p : playerList){ + ArrayList characters = player.getCharacterCards(); + for(BuildingCard b : player.getBuildingCards()){ + if(b instanceof Building1 b1){ + NCharDiscount += (int) characters.stream().filter(x -> x.getType().equals(b1.getIcon())).count(); + } + } + } + + int FoodDebt = NChar - (3 * NGatherers + NCharDiscount); + + if(FoodDebt <= 0){ + continue; + } + if(player.getFoodValue() >= FoodDebt){ + player.removeFood(FoodDebt); + } + else{ + while(player.getFoodValue() > 0 && FoodDebt > 0){ + player.removeFood(1); + FoodDebt--; + } + if(FoodDebt > 0){ + player.removePrestige(FoodDebt * PrestigeDebt); + } + } + } } }