Consolidated ShuffleCardsFromPlayAndStackedOnThemIntoDrawDeck into ShuffleCardsFromPlayIntoDrawDeck
This commit is contained in:
@@ -749,7 +749,7 @@
|
||||
type: event
|
||||
effect: [
|
||||
{
|
||||
type: shuffleCardsFromPlayAndStackedOnThemIntoDrawDeck
|
||||
type: ShuffleCardsFromPlayIntoDrawDeck
|
||||
select: choose(culture(dwarven),condition)
|
||||
count: any
|
||||
}
|
||||
@@ -792,9 +792,9 @@
|
||||
},
|
||||
effect: [
|
||||
{
|
||||
type: shuffleCardsFromPlayAndStackedOnThemIntoDrawDeck
|
||||
type: ShuffleCardsFromPlayIntoDrawDeck
|
||||
select: choose(culture(dwarven),condition)
|
||||
memorizeStackedCards: stackedCards
|
||||
memorizeStacked: stackedCards
|
||||
}
|
||||
{
|
||||
type: repeat
|
||||
|
||||
@@ -173,7 +173,6 @@ public class EffectAppenderFactory {
|
||||
effectAppenderProducers.put("shufflecardsfromdiscardintodrawdeck", new ShuffleCardsFromDiscardIntoDrawDeck());
|
||||
effectAppenderProducers.put("shufflecardsfromhandintodrawdeck", new ShuffleCardsFromHandIntoDrawDeck());
|
||||
effectAppenderProducers.put("shufflecardsfromplayintodrawdeck", new ShuffleCardsFromPlayIntoDrawDeck());
|
||||
effectAppenderProducers.put("shufflecardsfromplayandstackedonthemintodrawdeck", new ShuffleCardsFromPlayAndStackedOnThemIntoDrawDeck());
|
||||
effectAppenderProducers.put("shuffledeck", new ShuffleDeck());
|
||||
effectAppenderProducers.put("shufflehandintodrawdeck", new ShuffleHandIntoDrawDeck());
|
||||
effectAppenderProducers.put("spot", new Spot());
|
||||
|
||||
@@ -25,7 +25,7 @@ public class RevealCardsFromAdventureDeck implements EffectAppenderProducer {
|
||||
final String player = FieldUtils.getString(effectObject.get("player"), "player", "you");
|
||||
final String select = FieldUtils.getString(effectObject.get("select"), "select");
|
||||
if (select == null)
|
||||
throw new InvalidCardDefinitionException("Filter is required");
|
||||
throw new InvalidCardDefinitionException("'select' is required for RevealCardsFromAdventureDeck effect.");
|
||||
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp");
|
||||
|
||||
final ValueSource countSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.appender;
|
||||
|
||||
import com.gempukku.lotro.cards.build.*;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
|
||||
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolver;
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.PlayerResolver;
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.ValueResolver;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
||||
import com.gempukku.lotro.logic.effects.ShuffleCardsFromPlayAndStackedOnItIntoDeckEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class ShuffleCardsFromPlayAndStackedOnThemIntoDrawDeck implements EffectAppenderProducer {
|
||||
@Override
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "player", "select", "count", "memorize", "memorizeStackedCards");
|
||||
|
||||
String player = FieldUtils.getString(effectObject.get("player"), "player", "you");
|
||||
final PlayerSource playerSource = PlayerResolver.resolvePlayer(player, environment);
|
||||
final String select = FieldUtils.getString(effectObject.get("select"), "select", "choose(any)");
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
|
||||
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp");
|
||||
final String memorizeStackedCards = FieldUtils.getString(effectObject.get("memorizeStackedCards"), "memorizeStackedCards");
|
||||
|
||||
MultiEffectAppender result = new MultiEffectAppender();
|
||||
|
||||
result.addEffectAppender(
|
||||
CardResolver.resolveCards(select, valueSource, memorize, player, "Choose cards to shuffle into your deck", environment));
|
||||
result.addEffectAppender(
|
||||
new DelayedAppender() {
|
||||
@Override
|
||||
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
|
||||
final Collection<? extends PhysicalCard> cardsInPlay = actionContext.getCardsFromMemory(memorize);
|
||||
|
||||
if (memorizeStackedCards != null) {
|
||||
GameState gameState = actionContext.getGame().getGameState();
|
||||
Set<PhysicalCard> stackedCards = new HashSet<>();
|
||||
cardsInPlay.forEach(card -> stackedCards.addAll(gameState.getStackedCards(card)));
|
||||
actionContext.setCardMemory(memorizeStackedCards, stackedCards);
|
||||
}
|
||||
|
||||
return new ShuffleCardsFromPlayAndStackedOnItIntoDeckEffect(actionContext.getSource(), playerSource.getPlayer(actionContext), cardsInPlay);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,23 +8,29 @@ import com.gempukku.lotro.cards.build.field.effect.appender.resolver.CardResolve
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.PlayerResolver;
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.ValueResolver;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
||||
import com.gempukku.lotro.logic.effects.ShuffleCardsFromPlayAndStackedOnItIntoDeckEffect;
|
||||
import com.gempukku.lotro.logic.effects.ShuffleCardsFromPlayIntoDeckEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class ShuffleCardsFromPlayIntoDrawDeck implements EffectAppenderProducer {
|
||||
@Override
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "player", "select", "count", "memorize");
|
||||
FieldUtils.validateAllowedFields(effectObject, "player", "select", "count", "includeStacked", "memorize", "memorizeStacked");
|
||||
|
||||
String player = FieldUtils.getString(effectObject.get("player"), "player", "you");
|
||||
final PlayerSource playerSource = PlayerResolver.resolvePlayer(player, environment);
|
||||
final String select = FieldUtils.getString(effectObject.get("select"), "select", "choose(any)");
|
||||
final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("count"), 1, environment);
|
||||
final boolean includeStacked = FieldUtils.getBoolean(effectObject.get("includeStacked"), "includeStacked", false);
|
||||
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp");
|
||||
final String memorizeStackedCards = FieldUtils.getString(effectObject.get("memorizeStacked"), "memorizeStacked");
|
||||
|
||||
MultiEffectAppender result = new MultiEffectAppender();
|
||||
|
||||
@@ -36,7 +42,19 @@ public class ShuffleCardsFromPlayIntoDrawDeck implements EffectAppenderProducer
|
||||
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
|
||||
final Collection<? extends PhysicalCard> cardsInPlay = actionContext.getCardsFromMemory(memorize);
|
||||
|
||||
return new ShuffleCardsFromPlayIntoDeckEffect(actionContext.getSource(), playerSource.getPlayer(actionContext), cardsInPlay);
|
||||
if(includeStacked) {
|
||||
if (memorizeStackedCards != null) {
|
||||
GameState gameState = actionContext.getGame().getGameState();
|
||||
Set<PhysicalCard> stackedCards = new HashSet<>();
|
||||
cardsInPlay.forEach(card -> stackedCards.addAll(gameState.getStackedCards(card)));
|
||||
actionContext.setCardMemory(memorizeStackedCards, stackedCards);
|
||||
}
|
||||
|
||||
return new ShuffleCardsFromPlayAndStackedOnItIntoDeckEffect(actionContext.getSource(), playerSource.getPlayer(actionContext), cardsInPlay);
|
||||
}
|
||||
else {
|
||||
return new ShuffleCardsFromPlayIntoDeckEffect(actionContext.getSource(), playerSource.getPlayer(actionContext), cardsInPlay);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user