package magic.model.action;
import magic.model.MagicGame;
import magic.model.MagicLocationType;
import magic.model.MagicPermanent;
import magic.model.MagicPlayer;
import java.util.Collection;
import java.util.ArrayList;
public class RemoveAllFromPlayAction extends MagicAction {
private final Collection<MagicPermanent> perms = new ArrayList<MagicPermanent>();
private final MagicLocationType toLocation;
public RemoveAllFromPlayAction(final Collection<MagicPermanent> aPerms, final MagicLocationType aToLocation) {
perms.addAll(aPerms);
toLocation = aToLocation;
}
@Override
public void doAction(final MagicGame game) {
final boolean isLibrary = toLocation == MagicLocationType.OwnersLibrary;
final MagicLocationType tempLocation = isLibrary ? MagicLocationType.TopOfOwnersLibrary : toLocation;
final boolean[] shouldShuffle = {false, false};
for (final MagicPermanent perm : perms) {
if (perms.size() > 1) {
game.doAction(RemoveFromPlayAction.NoUpdate(perm, tempLocation));
} else {
game.doAction(new RemoveFromPlayAction(perm, tempLocation));
}
if (isLibrary) {
shouldShuffle[perm.getOwner().getIndex()] = true;
}
}
for (final MagicPlayer player : game.getAPNAP()) {
if (shouldShuffle[player.getIndex()]) {
game.doAction(new ShuffleLibraryAction(player));
}
}
if (perms.size() > 1) {
game.update();
}
}
@Override
public void undoAction(final MagicGame game) {}
}