package magic.model.event; import magic.model.MagicCard; import magic.model.MagicCardList; import magic.model.MagicGame; import magic.model.MagicPlayer; import magic.model.MagicSource; import magic.model.action.ScryComplAction; import magic.model.choice.MagicFromCardListChoice; public class MagicScryXEvent extends MagicEvent { public MagicScryXEvent(final MagicSource source, final MagicPlayer player, final int X) { super( source, player, X, StartScrying, "" ); } private static final MagicEventAction TopAction = (final MagicGame game, final MagicEvent event) -> event.processChosenCards(game, (final MagicCard card) -> { game.doAction(new ScryComplAction(event.getPlayer(), card, false)); game.logAppendMessage(event.getPlayer(), event.getPlayer() + " puts back a card to the top of his or her library."); }); private static final MagicEventAction BottomAction = (final MagicGame game, final MagicEvent event) -> { final MagicCardList processedCards = new MagicCardList(); event.processChosenCards(game, (final MagicCard card) -> { processedCards.add(card); game.doAction(new ScryComplAction(event.getPlayer(), card, true)); game.logAppendMessage(event.getPlayer(), event.getPlayer() + " moves a card from top of his or her library to the bottom."); }); final int X = event.getRefInt() - processedCards.size(); final MagicCardList choiceList = event.getPlayer().getLibrary().getCardsFromTop(X); if (choiceList.size() > 1) { game.addFirstEvent(new MagicEvent( event.getSource(), event.getPlayer(), new MagicFromCardListChoice(choiceList, choiceList.size(), "to be put on the top of your library"), TopAction, "" )); } }; private static final MagicEventAction StartScrying = (final MagicGame game, final MagicEvent event) -> { final int X = event.getRefInt(); final MagicCardList choiceList = event.getPlayer().getLibrary().getCardsFromTop(X); game.addFirstEvent(new MagicEvent( event.getSource(), event.getPlayer(), new MagicFromCardListChoice(choiceList, choiceList.size(), true, "to be put on the bottom of your library"), choiceList.size(), BottomAction, "" )); }; }