package forge; import forge.card.mana.ManaCost; import java.util.ArrayList; import java.util.EnumSet; /** * <p>Card_Color class.</p> * * @author Forge * @version $Id: $ */ public class Card_Color { // takes care of individual card color, for global color change effects use AllZone.getGameInfo().getColorChanges() private EnumSet<Color> col; private boolean additional; /** * <p>Getter for the field <code>additional</code>.</p> * * @return a boolean. */ public boolean getAdditional() { return additional; } private Card effectingCard = null; private long stamp = 0; /** * <p>Getter for the field <code>stamp</code>.</p> * * @return a long. */ public long getStamp() { return stamp; } /** * Constant <code>timeStamp=0</code> */ private static long timeStamp = 0; /** * <p>getTimestamp.</p> * * @return a long. */ public static long getTimestamp() { return timeStamp; } /** * <p>Constructor for Card_Color.</p> * * @param mc a {@link forge.card.mana.ManaCost} object. * @param c a {@link forge.Card} object. * @param addToColors a boolean. * @param baseColor a boolean. */ Card_Color(ManaCost mc, Card c, boolean addToColors, boolean baseColor) { additional = addToColors; col = Color.ConvertManaCostToColor(mc); effectingCard = c; if (baseColor) stamp = 0; else stamp = timeStamp; } /** * <p>Constructor for Card_Color.</p> * * @param c a {@link forge.Card} object. */ public Card_Color(Card c) { col = Color.Colorless(); additional = false; stamp = 0; effectingCard = c; } /** * <p>addToCardColor.</p> * * @param s a {@link java.lang.String} object. * @return a boolean. */ boolean addToCardColor(String s) { Color c = Color.ConvertFromString(s); if (!col.contains(c)) { col.add(c); return true; } return false; } /** * <p>fixColorless.</p> */ void fixColorless() { if (col.size() > 1 && col.contains(Color.Colorless)) col.remove(Color.Colorless); } /** * <p>increaseTimestamp.</p> */ static void increaseTimestamp() { timeStamp++; } /** * <p>equals.</p> * * @param cost a {@link java.lang.String} object. * @param c a {@link forge.Card} object. * @param addToColors a boolean. * @param time a long. * @return a boolean. */ public boolean equals(String cost, Card c, boolean addToColors, long time) { return effectingCard == c && addToColors == additional && stamp == time; } /** * <p>toStringArray.</p> * * @return a {@link java.util.ArrayList} object. */ public ArrayList<String> toStringArray() { ArrayList<String> list = new ArrayList<String>(); for (Color c : col) list.add(c.toString()); return list; } }