From fe8b29a4426865984e014417dbb5171f96ca97dc Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 29 Aug 2011 13:29:18 +0000 Subject: [PATCH] Simplifying choice effect --- ...hoiceCostEffect.java => ChoiceEffect.java} | 19 ++++--- .../lotro/cards/set1/elven/Card1_047.java | 51 +++++++++---------- 2 files changed, 32 insertions(+), 38 deletions(-) rename gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/effects/{ChoiceCostEffect.java => ChoiceEffect.java} (75%) diff --git a/gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/effects/ChoiceCostEffect.java b/gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/effects/ChoiceEffect.java similarity index 75% rename from gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/effects/ChoiceCostEffect.java rename to gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/effects/ChoiceEffect.java index bbd658606..9ace1d13b 100644 --- a/gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/effects/ChoiceCostEffect.java +++ b/gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/effects/ChoiceEffect.java @@ -8,25 +8,24 @@ import com.gempukku.lotro.logic.timing.UnrespondableEffect; import java.util.LinkedList; import java.util.List; -import java.util.Map; -public class ChoiceCostEffect extends UnrespondableEffect { +public class ChoiceEffect extends UnrespondableEffect { private CostToEffectAction _action; private String _choicePlayerId; - private Map _preConditions; + private List _possibleEffects; private boolean _addedAsCost; - public ChoiceCostEffect(CostToEffectAction action, String choicePlayerId, Map preConditions, boolean addedAsCost) { + public ChoiceEffect(CostToEffectAction action, String choicePlayerId, List possibleEffects, boolean addedAsCost) { _action = action; _choicePlayerId = choicePlayerId; - _preConditions = preConditions; + _possibleEffects = possibleEffects; _addedAsCost = addedAsCost; } @Override public boolean canPlayEffect(LotroGame game) { - for (EffectPreCondition effectPreCondition : _preConditions.keySet()) { - boolean result = effectPreCondition.getResult(game); + for (Effect effect : _possibleEffects) { + boolean result = effect.canPlayEffect(game); if (result) return true; } @@ -37,9 +36,9 @@ public class ChoiceCostEffect extends UnrespondableEffect { @Override public void playEffect(LotroGame game) { final List possibleEffects = new LinkedList(); - for (Map.Entry entry : _preConditions.entrySet()) { - if (entry.getKey().getResult(game)) - possibleEffects.add(entry.getValue()); + for (Effect effect : _possibleEffects) { + if (effect.canPlayEffect(game)) + possibleEffects.add(effect); } if (possibleEffects.size() > 1) { diff --git a/gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_047.java b/gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_047.java index 8a878d370..e40c41e78 100644 --- a/gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_047.java +++ b/gemp-lotr/lotro-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_047.java @@ -2,7 +2,10 @@ package com.gempukku.lotro.cards.set1.elven; import com.gempukku.lotro.cards.AbstractAttachableFPPossession; import com.gempukku.lotro.cards.PlayConditions; -import com.gempukku.lotro.cards.effects.*; +import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; +import com.gempukku.lotro.cards.effects.ChoiceEffect; +import com.gempukku.lotro.cards.effects.ChooseAndDiscardCardFromHandEffect; +import com.gempukku.lotro.cards.effects.ExertCharacterEffect; import com.gempukku.lotro.cards.modifiers.StrengthModifier; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; @@ -18,10 +21,8 @@ import com.gempukku.lotro.logic.timing.Action; import com.gempukku.lotro.logic.timing.Effect; import com.gempukku.lotro.logic.timing.UnrespondableEffect; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; /** * Set: The Fellowship of the Ring @@ -57,36 +58,30 @@ public class Card1_047 extends AbstractAttachableFPPossession { || game.getGameState().getHand(playerId).size() >= 2)) { final CostToEffectAction action = new CostToEffectAction(self, "Exert Arwen or discard 2 cards from hand to make her Strength +1"); - Map possibleCosts = new HashMap(); - possibleCosts.put( - new EffectPreCondition() { + List possibleCosts = new LinkedList(); + possibleCosts.add( + new ExertCharacterEffect(self.getAttachedTo())); + possibleCosts.add( + new UnrespondableEffect() { @Override - public boolean getResult(LotroGame game) { - return PlayConditions.canExert(game.getGameState(), game.getModifiersQuerying(), self.getAttachedTo()); + public String getText() { + return "Discard 2 cards"; } - }, new ExertCharacterEffect(self.getAttachedTo())); - possibleCosts.put( - new EffectPreCondition() { - @Override - public boolean getResult(LotroGame game) { - return (game.getGameState().getHand(playerId).size() >= 2); - } - }, new UnrespondableEffect() { - @Override - public String getText() { - return "Discard 2 cards from hand"; - } - @Override - public void playEffect(LotroGame game) { - action.addCost(new ChooseAndDiscardCardFromHandEffect(action, playerId, true)); - action.addCost(new ChooseAndDiscardCardFromHandEffect(action, playerId, true)); - } - } - ); + @Override + public boolean canPlayEffect(LotroGame game) { + return game.getGameState().getHand(playerId).size() >= 2; + } + + @Override + public void playEffect(LotroGame game) { + action.addCost(new ChooseAndDiscardCardFromHandEffect(action, playerId, true)); + action.addCost(new ChooseAndDiscardCardFromHandEffect(action, playerId, true)); + } + }); action.addCost( - new ChoiceCostEffect(action, playerId, possibleCosts, true)); + new ChoiceEffect(action, playerId, possibleCosts, true)); action.addEffect( new AddUntilEndOfPhaseModifierEffect( new StrengthModifier(self, "Strength +1", Filters.sameCard(self.getAttachedTo()), 1),