package magic.model.target; import magic.model.MagicGame; import magic.model.MagicPermanent; import magic.model.MagicPlayer; import magic.model.stack.MagicCardOnStack; /** Creatures or spells from both players. */ public class MagicBounceTargetPicker extends MagicTargetPicker<MagicTarget> { private static final MagicBounceTargetPicker INSTANCE = new MagicBounceTargetPicker(); private MagicBounceTargetPicker() {} public static MagicBounceTargetPicker create() { return INSTANCE; } @Override protected int getTargetScore(final MagicGame game,final MagicPlayer player,final MagicTarget target) { if (target.isPermanent()) { final MagicPermanent permanent=(MagicPermanent)target; int score=permanent.getScore(); if (permanent.getComeIntoPlayTriggers().size()>0) { score-=1000; } return permanent.getController()==player?-score:score; } else { //target is MagicCardOnStack final MagicCardOnStack cardOnStack=(MagicCardOnStack)target; final int converted=1+cardOnStack.getCardDefinition().getConvertedCost(); return cardOnStack.getController()==player?-converted:converted; } } }