mirror of
https://github.com/correl/mage.git
synced 2025-04-12 17:00:08 -09:00
* Started adding the new colorless mana {C}. Not finished yet but the exception is removed.
This commit is contained in:
parent
aa07fcecd5
commit
131d3af759
4 changed files with 230 additions and 137 deletions
Mage.Tests/src/test/java/org/mage/test/utils
Mage/src/main/java/mage
|
@ -89,6 +89,7 @@ public class ManaUtilTest extends CardTestPlayerBase {
|
|||
Assert.assertEquals("{U}", ManaUtil.condenseManaCostString("{U}"));
|
||||
Assert.assertEquals("{2}", ManaUtil.condenseManaCostString("{2}"));
|
||||
Assert.assertEquals("", ManaUtil.condenseManaCostString("{}"));
|
||||
Assert.assertEquals("{5}{C}{R}{R}{R}{U}", ManaUtil.condenseManaCostString("{R}{C}{R}{2}{R}{3}{U}"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -37,7 +37,6 @@ import static mage.constants.ManaType.COLORLESS;
|
|||
|
||||
import mage.filter.FilterMana;
|
||||
import mage.util.Copyable;
|
||||
import mage.util.ThreadLocalStringBuilder;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
/**
|
||||
|
@ -56,29 +55,26 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
protected int any;
|
||||
protected boolean flag;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Default constructor. Creates a {@link Mana} object with 0 values.
|
||||
*/
|
||||
public Mana() {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link Mana} object with the passed in values. Values can
|
||||
* not be less than 0. Any values less than 0 will be logged and set to 0.
|
||||
* Creates a {@link Mana} object with the passed in values. Values can not
|
||||
* be less than 0. Any values less than 0 will be logged and set to 0.
|
||||
*
|
||||
* @param red total Red mana to have.
|
||||
* @param green total Green mana to have.
|
||||
* @param blue total Blue mana to have.
|
||||
* @param white total White mana to have.
|
||||
* @param black total Black mana to have.
|
||||
* @param red total Red mana to have.
|
||||
* @param green total Green mana to have.
|
||||
* @param blue total Blue mana to have.
|
||||
* @param white total White mana to have.
|
||||
* @param black total Black mana to have.
|
||||
* @param colorless total Colorless mana to have.
|
||||
* @param any total Any mana to have.
|
||||
* @param any total Any mana to have.
|
||||
*/
|
||||
public Mana(final int red, final int green, final int blue, final int white,
|
||||
final int black, final int colorless, final int any) {
|
||||
final int black, final int colorless, final int any) {
|
||||
this.red = notNegative(red, "Red");
|
||||
this.green = notNegative(green, "Green");
|
||||
this.blue = notNegative(blue, "Blue");
|
||||
|
@ -88,9 +84,9 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.any = notNegative(any, "Any");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Copy constructor. Creates a {@link Mana} object from existing {@link Mana}
|
||||
* Copy constructor. Creates a {@link Mana} object from existing
|
||||
* {@link Mana}
|
||||
*
|
||||
* @param mana object to create copy from
|
||||
*/
|
||||
|
@ -106,10 +102,10 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.flag = mana.flag;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates {@link Mana} object from {@link ColoredManaSymbol}.
|
||||
* Created {@link Mana} will have a single mana of the passed in {@link ColoredManaSymbol} color.
|
||||
* Creates {@link Mana} object from {@link ColoredManaSymbol}. Created
|
||||
* {@link Mana} will have a single mana of the passed in
|
||||
* {@link ColoredManaSymbol} color.
|
||||
*
|
||||
* @param color The color to create the {@link Mana} object with.
|
||||
*/
|
||||
|
@ -136,7 +132,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of Red mana.
|
||||
* {@code num} can not be a negative value. Negative values will be logged
|
||||
|
@ -149,72 +144,71 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return new Mana(notNegative(num, "Red"), 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of Green mana.
|
||||
* {@code num} can not be a negative value. Negative values will be logged
|
||||
* and set to 0.
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of Green
|
||||
* mana. {@code num} can not be a negative value. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param num value of Green mana to create.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of Green mana.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of Green
|
||||
* mana.
|
||||
*/
|
||||
public static Mana GreenMana(int num) {
|
||||
return new Mana(0, notNegative(num, "Green"), 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of Blue mana.
|
||||
* {@code num} can not be a negative value. Negative values will be logged
|
||||
* and set to 0.
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of Blue
|
||||
* mana. {@code num} can not be a negative value. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param num value of Blue mana to create.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of Blue mana.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of Blue
|
||||
* mana.
|
||||
*/
|
||||
public static Mana BlueMana(int num) {
|
||||
return new Mana(0, 0, notNegative(num, "Blue"), 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of White mana.
|
||||
* {@code num} can not be a negative value. Negative values will be logged
|
||||
* and set to 0.
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of White
|
||||
* mana. {@code num} can not be a negative value. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param num value of White mana to create.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of White mana.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of White
|
||||
* mana.
|
||||
*/
|
||||
public static Mana WhiteMana(int num) {
|
||||
return new Mana(0, 0, 0, notNegative(num, "White"), 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of Black mana.
|
||||
* {@code num} can not be a negative value. Negative values will be logged
|
||||
* and set to 0.
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of Black
|
||||
* mana. {@code num} can not be a negative value. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param num value of Black mana to create.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of Black mana.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of Black
|
||||
* mana.
|
||||
*/
|
||||
public static Mana BlackMana(int num) {
|
||||
return new Mana(0, 0, 0, 0, notNegative(num, "Black"), 0, 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of Colorless mana.
|
||||
* {@code num} can not be a negative value. Negative values will be logged
|
||||
* and set to 0.
|
||||
* Creates a {@link Mana} object with the passed in {@code num} of Colorless
|
||||
* mana. {@code num} can not be a negative value. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param num value of Colorless mana to create.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of Colorless mana.
|
||||
* @return a {@link Mana} object with the passed in {@code num} of Colorless
|
||||
* mana.
|
||||
*/
|
||||
public static Mana ColorlessMana(int num) {
|
||||
return new Mana(0, 0, 0, 0, 0, notNegative(num, "Colorless"), 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Adds mana from the passed in {@link Mana} object to this object.
|
||||
*
|
||||
|
@ -230,7 +224,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
any += mana.getAny();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Increases the Red mana by one.
|
||||
*/
|
||||
|
@ -238,7 +231,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
red++;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Increases the Green mana by one.
|
||||
*/
|
||||
|
@ -246,7 +238,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
green++;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Increases the Blue mana by one.
|
||||
*/
|
||||
|
@ -254,7 +245,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
blue++;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Increases the White mana by one.
|
||||
*/
|
||||
|
@ -262,7 +252,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
white++;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Increases the Black mana by one.
|
||||
*/
|
||||
|
@ -270,7 +259,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
black++;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Increases the Colorless mana by one.
|
||||
*/
|
||||
|
@ -278,7 +266,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
colorless++;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Subtracts the passed in mana values from this instance.
|
||||
*
|
||||
|
@ -294,15 +281,15 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
any -= mana.any;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Subtracts the passed in mana values from this instance. The difference between this and
|
||||
* {@code subtract()} is that if we do not have the available colorless
|
||||
* mana to pay, we take mana from our colored mana pools.
|
||||
* Subtracts the passed in mana values from this instance. The difference
|
||||
* between this and {@code subtract()} is that if we do not have the
|
||||
* available colorless mana to pay, we take mana from our colored mana
|
||||
* pools.
|
||||
*
|
||||
* @param mana mana values to subtract
|
||||
* @throws ArithmeticException thrown if there is not enough available
|
||||
* colored mana to pay the colorless cost
|
||||
* colored mana to pay the colorless cost
|
||||
*/
|
||||
public void subtractCost(final Mana mana) throws ArithmeticException {
|
||||
red -= mana.red;
|
||||
|
@ -349,7 +336,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the total count of all combined mana.
|
||||
*
|
||||
|
@ -359,7 +345,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return red + green + blue + white + black + colorless + any;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the total count of all colored mana.
|
||||
*
|
||||
|
@ -369,13 +354,14 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return red + green + blue + white + black + any;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the count of filtered mana provided by the passed in {@link FilterMana}.
|
||||
* If {@link FilterMana} is null, the total mana count is returned via {@link #count() count}.
|
||||
* Returns the count of filtered mana provided by the passed in
|
||||
* {@link FilterMana}. If {@link FilterMana} is null, the total mana count
|
||||
* is returned via {@link #count() count}.
|
||||
*
|
||||
* @param filter the colors of mana to return the count for.
|
||||
* @return the count of filtered mana provided by the passed in {@link FilterMana}.
|
||||
* @return the count of filtered mana provided by the passed in
|
||||
* {@link FilterMana}.
|
||||
*/
|
||||
public int count(final FilterMana filter) {
|
||||
if (filter == null) {
|
||||
|
@ -403,7 +389,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return count;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets all mana to 0.
|
||||
*/
|
||||
|
@ -417,7 +402,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
any = 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns this objects values as a {@link String}.
|
||||
*
|
||||
|
@ -450,7 +434,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return sbMana.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a deep copy of this object.
|
||||
*
|
||||
|
@ -461,7 +444,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return new Mana(this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns if there is enough available mana to pay the mana provided by the
|
||||
* passed in {@link Mana} object.
|
||||
|
@ -516,7 +498,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the total mana needed to meet the passed in {@link Mana} object.
|
||||
*
|
||||
|
@ -586,7 +567,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return needed;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns total Red mana.
|
||||
*
|
||||
|
@ -596,10 +576,9 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return red;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the total Red mana. Can not be negative.
|
||||
* Negative values will be logged and set to 0.
|
||||
* Sets the total Red mana. Can not be negative. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param red total Red mana.
|
||||
*/
|
||||
|
@ -607,7 +586,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.red = notNegative(red, "Red");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns total Green mana.
|
||||
*
|
||||
|
@ -617,10 +595,9 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return green;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the total Green mana. Can not be negative.
|
||||
* Negative values will be logged and set to 0.
|
||||
* Sets the total Green mana. Can not be negative. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param green total Green mana.
|
||||
*/
|
||||
|
@ -628,7 +605,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.green = notNegative(green, "Green");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns total Blue mana.
|
||||
*
|
||||
|
@ -638,10 +614,9 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return blue;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the total Blue mana. Can not be negative.
|
||||
* Negative values will be logged and set to 0.
|
||||
* Sets the total Blue mana. Can not be negative. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param blue total Blue mana.
|
||||
*/
|
||||
|
@ -649,7 +624,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.blue = notNegative(blue, "Blue");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns total White mana.
|
||||
*
|
||||
|
@ -659,10 +633,9 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return white;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the total White mana. Can not be negative.
|
||||
* Negative values will be logged and set to 0.
|
||||
* Sets the total White mana. Can not be negative. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param white total White mana.
|
||||
*/
|
||||
|
@ -670,7 +643,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.white = notNegative(white, "White");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns total Black mana.
|
||||
*
|
||||
|
@ -680,10 +652,9 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return black;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the total Black mana. Can not be negative.
|
||||
* Negative values will be logged and set to 0.
|
||||
* Sets the total Black mana. Can not be negative. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param black total Black mana.
|
||||
*/
|
||||
|
@ -691,7 +662,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.black = notNegative(black, "Black");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns total Colorless mana.
|
||||
*
|
||||
|
@ -701,10 +671,9 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return colorless;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the total Colorless mana. Can not be negative.
|
||||
* Negative values will be logged and set to 0.
|
||||
* Sets the total Colorless mana. Can not be negative. Negative values will
|
||||
* be logged and set to 0.
|
||||
*
|
||||
* @param colorless total Colorless mana.
|
||||
*/
|
||||
|
@ -712,7 +681,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.colorless = notNegative(colorless, "Colorless");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns total Any mana.
|
||||
*
|
||||
|
@ -722,10 +690,9 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return any;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the total Any mana. Can not be negative.
|
||||
* Negative values will be logged and set to 0.
|
||||
* Sets the total Any mana. Can not be negative. Negative values will be
|
||||
* logged and set to 0.
|
||||
*
|
||||
* @param any total Any mana.
|
||||
*/
|
||||
|
@ -733,7 +700,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.any = notNegative(any, "Any");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns this objects total mana minus the passed in {@link Mana}'s mana.
|
||||
*
|
||||
|
@ -745,9 +711,9 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return this.count() - o.count();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns if this objects mana contains any number of the passed in {@link Mana}'s mana.
|
||||
* Returns if this objects mana contains any number of the passed in
|
||||
* {@link Mana}'s mana.
|
||||
*
|
||||
* @param mana the mana to check for
|
||||
* @return true if this contains any values that mana has
|
||||
|
@ -775,12 +741,13 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the total count of mana in this object as specified by the passed in {@link ColoredManaSymbol}.
|
||||
* Returns the total count of mana in this object as specified by the passed
|
||||
* in {@link ColoredManaSymbol}.
|
||||
*
|
||||
* @param color the color to return the count for.
|
||||
* @return the total count of mana in this object as specified by the passed in {@link ColoredManaSymbol}.
|
||||
* @return the total count of mana in this object as specified by the passed
|
||||
* in {@link ColoredManaSymbol}.
|
||||
*/
|
||||
public int getColor(final ColoredManaSymbol color) {
|
||||
if (color.equals(ColoredManaSymbol.G)) {
|
||||
|
@ -801,12 +768,13 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the total count of mana in this object as specified by the passed in {@link ManaType}.
|
||||
* Returns the total count of mana in this object as specified by the passed
|
||||
* in {@link ManaType}.
|
||||
*
|
||||
* @param manaType the type to return the count for.
|
||||
* @return the total count of mana in this object as specified by the passed in {@link ManaType}.
|
||||
* @return the total count of mana in this object as specified by the passed
|
||||
* in {@link ManaType}.
|
||||
*/
|
||||
public int get(final ManaType manaType) {
|
||||
switch (manaType) {
|
||||
|
@ -826,12 +794,12 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the color of mana specified by the passed in {@link ManaType} to {@code amount} .
|
||||
* Set the color of mana specified by the passed in {@link ManaType} to
|
||||
* {@code amount} .
|
||||
*
|
||||
* @param manaType the color of the mana to set
|
||||
* @param amount the value to set the mana too
|
||||
* @param amount the value to set the mana too
|
||||
*/
|
||||
public void set(final ManaType manaType, final int amount) {
|
||||
switch (manaType) {
|
||||
|
@ -858,7 +826,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public void setFlag(boolean flag) {
|
||||
this.flag = flag;
|
||||
}
|
||||
|
@ -867,7 +834,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return flag;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets this objects mana to that of the passed in {@link Mana}
|
||||
*
|
||||
|
@ -883,7 +849,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
this.colorless = mana.colorless;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns if the passed in {@link Mana} values are equal to this objects.
|
||||
*
|
||||
|
@ -900,13 +865,13 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
&& this.colorless == mana.colorless;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns if this {@link Mana} object has more than or equal values of mana
|
||||
* as the passed in {@link Mana} object.
|
||||
*
|
||||
* @param mana the mana to compare with
|
||||
* @return if this object has more than or equal mana to the passed in {@link Mana}.
|
||||
* @return if this object has more than or equal mana to the passed in
|
||||
* {@link Mana}.
|
||||
*/
|
||||
public boolean includesMana(Mana mana) {
|
||||
return this.green >= mana.green
|
||||
|
@ -919,7 +884,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the mana that is more colored or has a greater amount but does
|
||||
* not contain one less mana in any color but colorless if you call with
|
||||
|
@ -952,7 +916,6 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return moreMana;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the total count of mana colors that have at least one.
|
||||
*
|
||||
|
@ -978,21 +941,38 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
return count;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Mana mana = (Mana) o;
|
||||
|
||||
if (red != mana.red) return false;
|
||||
if (green != mana.green) return false;
|
||||
if (blue != mana.blue) return false;
|
||||
if (white != mana.white) return false;
|
||||
if (black != mana.black) return false;
|
||||
if (colorless != mana.colorless) return false;
|
||||
if (any != mana.any) return false;
|
||||
if (red != mana.red) {
|
||||
return false;
|
||||
}
|
||||
if (green != mana.green) {
|
||||
return false;
|
||||
}
|
||||
if (blue != mana.blue) {
|
||||
return false;
|
||||
}
|
||||
if (white != mana.white) {
|
||||
return false;
|
||||
}
|
||||
if (black != mana.black) {
|
||||
return false;
|
||||
}
|
||||
if (colorless != mana.colorless) {
|
||||
return false;
|
||||
}
|
||||
if (any != mana.any) {
|
||||
return false;
|
||||
}
|
||||
return flag == mana.flag;
|
||||
|
||||
}
|
||||
|
@ -1011,13 +991,14 @@ public class Mana implements Comparable<Mana>, Serializable, Copyable<Mana> {
|
|||
}
|
||||
|
||||
/**
|
||||
* Checks that the {@code value} passed in is not less than 0.
|
||||
* If the value is negative, it is logged and 0 is returned.
|
||||
* Checks that the {@code value} passed in is not less than 0. If the value
|
||||
* is negative, it is logged and 0 is returned.
|
||||
*
|
||||
* @param value the value to check.
|
||||
* @param name the name of the value to check. Used to make logging of
|
||||
* the {@code value} easier
|
||||
* @return the {@code value} passed in, unless it is minus, in which case 0 is returned.
|
||||
* @param name the name of the value to check. Used to make logging of the
|
||||
* {@code value} easier
|
||||
* @return the {@code value} passed in, unless it is minus, in which case 0
|
||||
* is returned.
|
||||
*/
|
||||
private static int notNegative(int value, final String name) {
|
||||
if (value < 0) {
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are
|
||||
* permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those of the
|
||||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
package mage.abilities.costs.mana;
|
||||
|
||||
import mage.Mana;
|
||||
import mage.abilities.Ability;
|
||||
import mage.constants.ColoredManaSymbol;
|
||||
import mage.game.Game;
|
||||
import mage.players.ManaPool;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class ColorlessManaCost extends ManaCostImpl {
|
||||
|
||||
protected int mana;
|
||||
|
||||
public ColorlessManaCost(int mana) {
|
||||
this.mana = mana;
|
||||
this.cost = Mana.ColorlessMana(mana);
|
||||
this.options.addMana(Mana.ColorlessMana(mana));
|
||||
}
|
||||
|
||||
public ColorlessManaCost(ColorlessManaCost manaCost) {
|
||||
super(manaCost);
|
||||
this.mana = manaCost.mana;
|
||||
}
|
||||
|
||||
public void setMana(int mana) {
|
||||
this.mana = mana;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int convertedManaCost() {
|
||||
return mana;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPaid() {
|
||||
if (paid) {
|
||||
return true;
|
||||
}
|
||||
return this.isColorlessPaid(mana);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void assignPayment(Game game, Ability ability, ManaPool pool) {
|
||||
this.assignColorless(ability, game, pool, mana);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < mana; i++) {
|
||||
sb.append("{C}");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ColorlessManaCost getUnpaid() {
|
||||
ColorlessManaCost unpaid = new ColorlessManaCost(mana - this.payment.count());
|
||||
if (sourceFilter != null) {
|
||||
unpaid.setSourceFilter(sourceFilter);
|
||||
}
|
||||
return unpaid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean testPay(Mana testMana) {
|
||||
return testMana.getColorless() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ColorlessManaCost copy() {
|
||||
return new ColorlessManaCost(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsColor(ColoredManaSymbol coloredManaSymbol) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -315,13 +315,14 @@ public class ManaCostsImpl<T extends ManaCost> extends ArrayList<T> implements M
|
|||
if (symbol.length() > 0) {
|
||||
if (symbol.length() == 1 || isNumeric(symbol)) {
|
||||
if (Character.isDigit(symbol.charAt(0))) {
|
||||
this.add((T) new GenericManaCost(Integer.valueOf(symbol)));
|
||||
this.add(new GenericManaCost(Integer.valueOf(symbol)));
|
||||
} else {
|
||||
if(symbol.equals("S")) {
|
||||
this.add((T) new SnowManaCost());
|
||||
}
|
||||
else if (!symbol.equals("X")) {
|
||||
this.add((T) new ColoredManaCost(ColoredManaSymbol.lookup(symbol.charAt(0))));
|
||||
if (symbol.equals("S")) {
|
||||
this.add(new SnowManaCost());
|
||||
} else if (symbol.equals("C")) {
|
||||
this.add(new ColorlessManaCost(1));
|
||||
} else if (!symbol.equals("X")) {
|
||||
this.add(new ColoredManaCost(ColoredManaSymbol.lookup(symbol.charAt(0))));
|
||||
} else {
|
||||
// check X wasn't added before
|
||||
if (modifierForX == 0) {
|
||||
|
@ -331,7 +332,7 @@ public class ManaCostsImpl<T extends ManaCost> extends ArrayList<T> implements M
|
|||
modifierForX++;
|
||||
}
|
||||
}
|
||||
this.add((T) new VariableManaCost(modifierForX));
|
||||
this.add(new VariableManaCost(modifierForX));
|
||||
}
|
||||
}
|
||||
//TODO: handle multiple {X} and/or {Y} symbols
|
||||
|
|
Loading…
Add table
Reference in a new issue