package magic.model.action; import magic.model.MagicCard; import magic.model.MagicGame; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Arrays; public class AIRevealAction extends MagicAction { private final List<MagicCard> cards = new ArrayList<MagicCard>(); private final List<Boolean> known = new ArrayList<Boolean>(); private final boolean newValue; public AIRevealAction(final MagicCard... aCards) { this(Arrays.asList(aCards), true); } public AIRevealAction(final Collection<MagicCard> aCards) { this(aCards, true); } public static AIRevealAction Hide(final Collection<MagicCard> aCards) { return new AIRevealAction(aCards, false); } private AIRevealAction(final Collection<MagicCard> aCards, final boolean aNewValue) { cards.addAll(aCards); newValue = aNewValue; } public void doAction(final MagicGame game) { for (final MagicCard card : cards) { known.add(card.isGameKnown()); card.setGameKnown(newValue); } } public void undoAction(final MagicGame game) { for (int i = 0; i < cards.size(); i++) { cards.get(i).setGameKnown(known.get(i)); } } }