package net.demilich.metastone.game.actions; import net.demilich.metastone.game.GameContext; import net.demilich.metastone.game.Player; import net.demilich.metastone.game.cards.MinionCard; import net.demilich.metastone.game.entities.Actor; import net.demilich.metastone.game.entities.minions.Minion; import net.demilich.metastone.game.targeting.CardReference; import net.demilich.metastone.game.targeting.TargetSelection; public class PlayMinionCardAction extends PlayCardAction { private final BattlecryAction battlecry; public PlayMinionCardAction(CardReference cardReference) { this(cardReference, null); } public PlayMinionCardAction(CardReference cardReference, BattlecryAction battlecry) { super(cardReference); this.battlecry = battlecry; setTargetRequirement(TargetSelection.FRIENDLY_MINIONS); setActionType(ActionType.SUMMON); } @Override public String getPromptText() { return "[Summon minion]"; } @Override protected void play(GameContext context, int playerId) { MinionCard minionCard = (MinionCard) context.getPendingCard(); Actor nextTo = (Actor) (getTargetKey() != null ? context.resolveSingleTarget(getTargetKey()) : null); Minion minion = minionCard.summon(); if (battlecry != null) { minion.setBattlecry(battlecry); } Player player = context.getPlayer(playerId); int index = player.getSummons().indexOf(nextTo); context.getLogic().summon(playerId, minion, minionCard, index, true); } }