package magic.model.mstatic; import magic.model.MagicAbility; import magic.model.MagicGame; import magic.model.MagicPermanent; import magic.model.MagicPlayer; import magic.model.MagicCard; import magic.model.MagicPowerToughness; import magic.model.MagicSubType; import magic.model.MagicManaCost; import java.util.Set; // Determines variable power, toughness, abilities, sub types and colors for a single creature permanent. public interface MagicModifier { MagicPlayer getController(final MagicPermanent source, final MagicPermanent permanent, final MagicPlayer controller); void modPowerToughness(final MagicPermanent source, final MagicPermanent permanent, final MagicPowerToughness pt); void modAbilityFlags(final MagicPermanent source, final MagicPermanent permanent, final Set<MagicAbility> flags); void modSubTypeFlags(final MagicPermanent permanent, final Set<MagicSubType> flags); int getTypeFlags(final MagicPermanent permanent, final int flags); int getColorFlags(final MagicPermanent permanent, final int flags); void modPlayer(final MagicPermanent source, final MagicPlayer player); void modGame(final MagicPermanent source, final MagicGame game); MagicManaCost reduceCost(final MagicPermanent source, final MagicCard card, final MagicManaCost cost); MagicManaCost increaseCost(final MagicPermanent source, final MagicCard card, final MagicManaCost cost); }