package magic.model.target; import magic.model.MagicGame; import magic.model.MagicPermanent; import magic.model.MagicPlayer; public abstract class MagicTapTargetPicker extends MagicTargetPicker<MagicPermanent> { private static final int score(final MagicPermanent permanent) { return 1 + permanent.getPower() + permanent.getActivations().size(); } public static MagicTapTargetPicker Tap = new MagicTapTargetPicker() { @Override protected int getTargetScore(final MagicGame game,final MagicPlayer player,final MagicPermanent permanent) { if (permanent.isTapped()) { return 0; } else { return permanent.isController(player) ? -score(permanent) : score(permanent); } } }; public static MagicTapTargetPicker Untap = new MagicTapTargetPicker() { @Override protected int getTargetScore(final MagicGame game,final MagicPlayer player,final MagicPermanent permanent) { if (permanent.isUntapped()) { return 0; } else { return permanent.isOpponent(player) ? -score(permanent) : score(permanent); } } }; public static MagicTapTargetPicker TapOrUntap = new MagicTapTargetPicker() { @Override protected int getTargetScore(final MagicGame game,final MagicPlayer player,final MagicPermanent permanent) { return score(permanent); } }; }