package magic.model.action; import magic.ai.ArtificialScoringSystem; import magic.model.MagicCard; import magic.model.MagicCardList; import magic.model.MagicGame; import magic.model.MagicLocationType; import magic.model.MagicPlayer; import java.util.List; import magic.model.MagicMessage; public class MillLibraryAction extends MagicAction { private final MagicPlayer player; private final int amount; private final MagicCardList milledCards = new MagicCardList(); public MillLibraryAction(final MagicPlayer aPlayer,final int aAmount) { player = aPlayer; amount = aAmount; } @Override public void doAction(final MagicGame game) { final MagicCardList topN = player.getLibrary().getCardsFromTop(amount); for (final MagicCard card : topN) { milledCards.add(card); game.doAction(new ShiftCardAction( card, MagicLocationType.OwnersLibrary, MagicLocationType.Graveyard )); } final int count = topN.size(); if (count > 0) { setScore(player,ArtificialScoringSystem.getMillScore(count)); game.logAppendMessage( player, String.format( "%s puts the top %d cards of his or her library into his or her graveyard. (%s)", player, count, count > 5 ? "..." : MagicMessage.getTokenizedCardNames(topN) ) ); } } public List<MagicCard> getMilledCards() { return milledCards; } @Override public void undoAction(final MagicGame game) {} }