package forge.card.mana; import forge.Card; import forge.Constant; import forge.gui.input.Input_PayManaCostUtil; /** * <p>Mana class.</p> * * @author Forge * @version $Id: $ */ public class Mana { private String color; private int amount = 0; private Card sourceCard = null; /** * <p>Constructor for Mana.</p> * * @param col a {@link java.lang.String} object. * @param amt a int. * @param source a {@link forge.Card} object. */ public Mana(String col, int amt, Card source) { color = col; amount = amt; if (source == null) return; sourceCard = source; } /** * <p>toString.</p> * * @return a {@link java.lang.String} object. */ public String toString() { if (color.equals(Constant.Color.Colorless)) return Integer.toString(amount); String manaString = ""; StringBuilder sbMana = new StringBuilder(); manaString = Input_PayManaCostUtil.getShortColorString(color); for (int i = 0; i < amount; i++) sbMana.append(manaString); return sbMana.toString(); } /** * <p>toDescriptiveString.</p> * * @return a {@link java.lang.String} object. */ public String toDescriptiveString() { // this will be used for advanced choice box if (color.equals(Constant.Color.Colorless)) return Integer.toString(amount); String manaString = ""; StringBuilder sbMana = new StringBuilder(); manaString = Input_PayManaCostUtil.getShortColorString(color); for (int i = 0; i < amount; i++) sbMana.append(manaString); if (isSnow()) sbMana.append("(S)"); sbMana.append(" From "); sbMana.append(sourceCard.getName()); return sbMana.toString(); } /** * <p>toSingleArray.</p> * * @return an array of {@link forge.card.mana.Mana} objects. */ public Mana[] toSingleArray() { Mana[] normalize = new Mana[amount]; for (int i = 0; i < normalize.length; i++) { normalize[i] = new Mana(this.color, 1, this.sourceCard); } return normalize; } /** * <p>isSnow.</p> * * @return a boolean. */ public boolean isSnow() { return sourceCard.isSnow(); } /** * <p>fromBasicLand.</p> * * @return a boolean. */ public boolean fromBasicLand() { return sourceCard.isBasicLand(); } // for Imperiosaur /** * <p>getColorlessAmount.</p> * * @return a int. */ public int getColorlessAmount() { return color.equals(Constant.Color.Colorless) ? amount : 0; } /** * <p>Getter for the field <code>amount</code>.</p> * * @return a int. */ public int getAmount() { return amount; } /** * <p>isColor.</p> * * @param col a {@link java.lang.String} object. * @return a boolean. */ public boolean isColor(String col) { return color.equals(col); } /** * <p>isColor.</p> * * @param colors an array of {@link java.lang.String} objects. * @return a boolean. */ public boolean isColor(String[] colors) { for (String col : colors) if (color.equals(col)) return true; return false; } /** * <p>Getter for the field <code>color</code>.</p> * * @return a {@link java.lang.String} object. */ public String getColor() { return color; } /** * <p>Getter for the field <code>sourceCard</code>.</p> * * @return a {@link forge.Card} object. */ public Card getSourceCard() { return sourceCard; } /** * <p>fromSourceCard.</p> * * @param c a {@link forge.Card} object. * @return a boolean. */ public boolean fromSourceCard(Card c) { return sourceCard.equals(c); } /** * <p>decrementAmount.</p> */ public void decrementAmount() { amount--; } }