package magic.model.action; import magic.ai.ArtificialScoringSystem; import magic.model.MagicGame; import magic.model.event.MagicSpellCastEvent; import magic.model.event.MagicStackGetChoicesEvent; import magic.model.stack.MagicItemOnStack; public class PutItemOnStackAction extends MagicAction { private final MagicItemOnStack itemOnStack; public PutItemOnStackAction(final MagicItemOnStack itemOnStack) { this.itemOnStack=itemOnStack; } @Override public void doAction(final MagicGame game) { game.getStack().addToTop(itemOnStack); if (itemOnStack.hasChoice()) { game.addEvent(new MagicStackGetChoicesEvent(itemOnStack)); } if (itemOnStack.isSpell()) { game.addEvent(new MagicSpellCastEvent(itemOnStack)); } // Avoid unnecessary actions on stack by reducing score. setScore(itemOnStack.getController(),ArtificialScoringSystem.ITEM_ON_STACK_SCORE); } @Override public void undoAction(final MagicGame game) { game.getStack().removeFromTop(); } @Override public String toString() { return getClass().getSimpleName()+" ("+itemOnStack.getClass().getSimpleName()+','+itemOnStack.getName()+')'; } }