From 991c9d6da720ac903a60a60f92cb64d7ab9de3ad Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 22 Sep 2011 00:36:59 +0000 Subject: [PATCH] Unified Discarding from play. --- .../effects/DiscardCardFromPlayEffect.java | 68 +------------------ .../effects/DiscardCardsFromPlayEffect.java | 4 +- 2 files changed, 5 insertions(+), 67 deletions(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardFromPlayEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardFromPlayEffect.java index b4dab9665..22d905f1e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardFromPlayEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/DiscardCardFromPlayEffect.java @@ -1,72 +1,10 @@ package com.gempukku.lotro.logic.effects; -import com.gempukku.lotro.common.Zone; +import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.GameState; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.timing.AbstractEffect; -import com.gempukku.lotro.logic.timing.EffectResult; -import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult; - -import java.util.LinkedList; -import java.util.List; - -public class DiscardCardFromPlayEffect extends AbstractEffect { - private PhysicalCard _source; - private PhysicalCard _card; - - private List _discardedCards; +public class DiscardCardFromPlayEffect extends DiscardCardsFromPlayEffect { public DiscardCardFromPlayEffect(PhysicalCard source, PhysicalCard card) { - _source = source; - _card = card; - } - - @Override - public EffectResult.Type getType() { - return EffectResult.Type.DISCARD_FROM_PLAY; - } - - @Override - public String getText(LotroGame game) { - return "Discard " + _card.getBlueprint().getName() + " from play"; - } - - @Override - public boolean canPlayEffect(LotroGame game) { - Zone zone = _card.getZone(); - return zone == Zone.FREE_CHARACTERS || zone == Zone.FREE_SUPPORT || zone == Zone.SHADOW_CHARACTERS || zone == Zone.SHADOW_SUPPORT || zone == Zone.ATTACHED; - } - - @Override - public EffectResult[] playEffect(LotroGame game) { - _discardedCards = new LinkedList(); - - if (_source == null || game.getModifiersQuerying().canBeDiscardedFromPlay(game.getGameState(), _card, _source)) { - _discardedCards.add(_card); - - GameState gameState = game.getGameState(); - if (_source != null) - gameState.sendMessage(_source.getOwner() + " discards " + _card.getBlueprint().getName() + " from play using " + _source.getBlueprint().getName()); - gameState.stopAffecting(_card); - gameState.removeCardFromZone(_card); - gameState.addCardToZone(_card, Zone.DISCARD); - - List attachedCards = gameState.getAttachedCards(_card); - for (PhysicalCard attachedCard : attachedCards) { - _discardedCards.add(attachedCard); - - 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); - } - } - return new EffectResult[]{new DiscardCardsFromPlayResult(_discardedCards)}; + super(source, Filters.sameCard(card)); } } 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 1bc04364e..7bb2cc914 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 @@ -55,7 +55,7 @@ public class DiscardCardsFromPlayEffect extends AbstractEffect { @Override public boolean canPlayEffect(LotroGame game) { - return Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), _filter); + return getCardsToBeDiscarded(game).size() > 0; } @Override @@ -87,7 +87,7 @@ public class DiscardCardsFromPlayEffect extends AbstractEffect { } if (_source != null && discardedCards.size() > 0) - game.getGameState().sendMessage(_source.getOwner() + " discards multiple cards from play using " + _source.getBlueprint().getName()); + game.getGameState().sendMessage(_source.getOwner() + " discards " + getAppendedNames(discardedCards) + " from play using " + _source.getBlueprint().getName()); return new EffectResult[]{new DiscardCardsFromPlayResult(discardedCards)}; } }