49 lines
1.3 KiB
Java
49 lines
1.3 KiB
Java
package magic.model.action;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Collection;
|
|
import java.util.List;
|
|
|
|
import magic.model.MagicCard;
|
|
import magic.model.MagicGame;
|
|
|
|
public class AIRevealAction extends MagicAction {
|
|
|
|
private final List<MagicCard> cards = new ArrayList<>();
|
|
private final List<Boolean> known = new ArrayList<>();
|
|
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;
|
|
}
|
|
|
|
@Override
|
|
public void doAction(final MagicGame game) {
|
|
for (final MagicCard card : cards) {
|
|
known.add(card.isGameKnown());
|
|
card.setGameKnown(newValue);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void undoAction(final MagicGame game) {
|
|
for (int i = 0; i < cards.size(); i++) {
|
|
cards.get(i).setGameKnown(known.get(i));
|
|
}
|
|
}
|
|
}
|