From 90a3aec94f3fc971fa153ef113ab01fa777848f6 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Tue, 20 Sep 2011 15:07:50 +0000 Subject: [PATCH] Discard simultaneously. --- .../effects/DiscardCardsFromPlayEffect.java | 59 ++++++++++++------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java index a588b238f..039122aa1 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardsFromPlayEffect.java @@ -27,9 +27,30 @@ public class DiscardCardsFromPlayEffect extends AbstractEffect { return EffectResult.Type.DISCARD_FROM_PLAY; } + public List getCardsToBeDiscarded(LotroGame game) { + List cardsToDiscard = new LinkedList(); + for (PhysicalCard physicalCard : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), _filter)) { + if (_source == null || game.getModifiersQuerying().canBeDiscardedFromPlay(game.getGameState(), physicalCard, _source)) + cardsToDiscard.add(physicalCard); + } + return cardsToDiscard; + } + @Override public String getText(LotroGame game) { - return "Discard multiple cards from play"; + List cards = getCardsToBeDiscarded(game); + return "Discard - " + getAppendedNames(cards); + } + + private String getAppendedNames(List cards) { + StringBuilder sb = new StringBuilder(); + for (PhysicalCard card : cards) + sb.append(card.getBlueprint().getName() + ", "); + + if (sb.length() == 0) + return "none"; + else + return sb.substring(0, sb.length() - 1); } @Override @@ -39,31 +60,29 @@ public class DiscardCardsFromPlayEffect extends AbstractEffect { @Override public EffectResult playEffect(LotroGame game) { - List cardsToDiscard = Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), _filter); + List cardsToDiscard = getCardsToBeDiscarded(game); List discardedCards = new LinkedList(); for (PhysicalCard card : cardsToDiscard) { - if (_source == null || game.getModifiersQuerying().canBeDiscardedFromPlay(game.getGameState(), card, _source)) { - discardedCards.add(card); + discardedCards.add(card); - GameState gameState = game.getGameState(); - gameState.stopAffecting(card); - gameState.removeCardFromZone(card); - gameState.addCardToZone(card, Zone.DISCARD); + GameState gameState = game.getGameState(); + gameState.stopAffecting(card); + gameState.removeCardFromZone(card); + gameState.addCardToZone(card, Zone.DISCARD); - List attachedCards = gameState.getAttachedCards(card); - for (PhysicalCard attachedCard : attachedCards) { - discardedCards.add(attachedCard); + List attachedCards = gameState.getAttachedCards(card); + for (PhysicalCard attachedCard : attachedCards) { + discardedCards.add(attachedCard); - gameState.stopAffecting(attachedCard); - gameState.removeCardFromZone(attachedCard); - gameState.addCardToZone(attachedCard, Zone.DISCARD); - } + gameState.stopAffecting(attachedCard); + gameState.removeCardFromZone(attachedCard); + gameState.addCardToZone(attachedCard, Zone.DISCARD); + } - List stackedCards = gameState.getStackedCards(card); - for (PhysicalCard stackedCard : stackedCards) { - gameState.removeCardFromZone(stackedCard); - gameState.addCardToZone(stackedCard, Zone.DISCARD); - } + List stackedCards = gameState.getStackedCards(card); + for (PhysicalCard stackedCard : stackedCards) { + gameState.removeCardFromZone(stackedCard); + gameState.addCardToZone(stackedCard, Zone.DISCARD); } }