package magic.model.action; import magic.model.MagicGame; import magic.model.MagicPermanent; import magic.model.MagicPlayer; import magic.model.mstatic.MagicLayer; import magic.model.mstatic.MagicStatic; public class GainControlAction extends MagicAction { private final MagicPlayer player; private final MagicPermanent permanent; private final boolean duration; public GainControlAction(final MagicPlayer player,final MagicPermanent permanent) { this(player,permanent,MagicStatic.Forever); } public GainControlAction(final MagicPlayer player,final MagicPermanent permanent,final boolean duration) { this.player = player; this.permanent = permanent; this.duration = duration; } @Override public void doAction(final MagicGame game) { //insert continuous effect game.doAction(new AddStaticAction( permanent, new MagicStatic(MagicLayer.Control, duration) { @Override public MagicPlayer getController(final MagicPermanent source, final MagicPermanent permanent, final MagicPlayer controller) { final MagicGame game = controller.getGame(); return game.getPlayer(player.getIndex()); } } )); } @Override public void undoAction(final MagicGame game) { } @Override public String toString() { return super.toString() + " (" + player + "," + permanent + ')'; } }