package forge.card.mana; /** * <p>Mana_PartSnow class.</p> * * @author Forge * @version $Id: $ */ public class Mana_PartSnow extends Mana_Part { private boolean isPaid = false; /** {@inheritDoc} */ @Override public boolean isNeeded(String mana) { return !isPaid && mana.equals("S"); } /** {@inheritDoc} */ public boolean isNeeded(Mana mana) { return !isPaid && mana.isSnow(); } /** {@inheritDoc} */ @Override public boolean isColor(String mana) { //ManaPart method return mana.indexOf("S") != -1; } /** {@inheritDoc} */ @Override public boolean isColor(Mana mana) { return mana.isSnow(); } /** {@inheritDoc} */ @Override public boolean isPaid() { return isPaid; } /** {@inheritDoc} */ @Override public boolean isEasierToPay(Mana_Part mp) { if (mp instanceof Mana_PartColorless) return false; return toString().length() >= mp.toString().length(); } /** {@inheritDoc} */ @Override public void reduce(String mana) { if (!mana.equals("S")) throw new RuntimeException("Mana_PartSnow: reduce() error, " + mana + " is not snow mana"); isPaid = true; } /** {@inheritDoc} */ @Override public void reduce(Mana mana) { if (!mana.isSnow()) throw new RuntimeException("Mana_PartSnow: reduce() error, " + mana + " is not snow mana"); isPaid = true; } /** {@inheritDoc} */ @Override public String toString() { return (isPaid ? "" : "S"); } /** {@inheritDoc} */ @Override public int getConvertedManaCost() { return 1; } }