heckstyle fixes in ManaPool.java

This commit is contained in:
slapshot5
2011-09-07 05:01:11 +00:00
parent a14ef78fd5
commit d785b7b5af

View File

@@ -1,6 +1,12 @@
package forge.card.mana;
import forge.*;
import forge.AllZone;
import forge.AllZoneUtil;
import forge.Card;
import forge.CardUtil;
import forge.Constant;
import forge.Player;
import forge.card.spellability.Ability_Mana;
import forge.card.spellability.SpellAbility;
import forge.gui.GuiUtils;
@@ -22,13 +28,13 @@ public class ManaPool extends Card {
private ArrayList<Mana> floatingMana = new ArrayList<Mana>();
private int[] floatingTotals = new int[7]; // WUBRGCS
/** Constant <code>map</code> */
private final static Map<String, Integer> map = new HashMap<String, Integer>();
/** Constant <code>map</code>. */
private static final Map<String, Integer> map = new HashMap<String, Integer>();
/** Constant <code>colors="WUBRG"</code> */
public final static String colors = "WUBRG";
/** Constant <code>mcolors="1WUBRG"</code> */
public final static String mcolors = "1WUBRG";
/** Constant <code>colors="WUBRG"</code>. */
public static final String colors = "WUBRG";
/** Constant <code>mcolors="1WUBRG"</code>. */
public static final String mcolors = "1WUBRG";
private Player owner;
/**
@@ -36,7 +42,7 @@ public class ManaPool extends Card {
*
* @param player a {@link forge.Player} object.
*/
public ManaPool(Player player) {
public ManaPool(final Player player) {
super();
updateObservers();
owner = player;
@@ -62,43 +68,58 @@ public class ManaPool extends Card {
*
* @return a {@link java.lang.String} object.
*/
public String getManaList() {
public final String getManaList() {
Mana[] pool = floatingMana.toArray(new Mana[floatingMana.size()]);
int[] normalMana = {0, 0, 0, 0, 0, 0};
int[] snowMana = {0, 0, 0, 0, 0, 0};
String[] manaStrings = {Constant.Color.White, Constant.Color.Blue, Constant.Color.Black, Constant.Color.Red, Constant.Color.Green, Constant.Color.Colorless};
String[] manaStrings = {
Constant.Color.White,
Constant.Color.Blue,
Constant.Color.Black,
Constant.Color.Red,
Constant.Color.Green,
Constant.Color.Colorless
};
for (Mana m : pool) {
if (m.isSnow())
if (m.isSnow()) {
snowMana[map.get(m.getColor())] += m.getAmount();
else
} else {
normalMana[map.get(m.getColor())] += m.getAmount();
}
}
StringBuilder sbNormal = new StringBuilder("");
StringBuilder sbSnow = new StringBuilder("");
if (!isEmpty()) {
for (int i = 0; i < 6; i++) {
if (i == 5) {
if (normalMana[i] > 0)
if (normalMana[i] > 0) {
sbNormal.append(normalMana[i] + " ");
if (snowMana[i] > 0)
}
if (snowMana[i] > 0) {
sbSnow.append(snowMana[i] + " ");
}
} else {
if (normalMana[i] > 0)
for (int j = 0; j < normalMana[i]; j++)
if (normalMana[i] > 0) {
for (int j = 0; j < normalMana[i]; j++) {
sbNormal.append(CardUtil.getShortColor(manaStrings[i])).append(" ");
if (snowMana[i] > 0)
for (int j = 0; j < snowMana[i]; j++)
}
}
if (snowMana[i] > 0) {
for (int j = 0; j < snowMana[i]; j++) {
sbSnow.append(CardUtil.getShortColor(manaStrings[i])).append(" ");
}
}
}
sbNormal.append("|");
sbSnow.append("|");
}
} else
} else {
return ("|||||||||||");
}
return sbNormal.append(sbSnow).toString();
@@ -106,19 +127,27 @@ public class ManaPool extends Card {
/** {@inheritDoc} */
@Override
public String getText() {
public final String getText() {
Mana[] pool = floatingMana.toArray(new Mana[floatingMana.size()]);
int[] normalMana = {0, 0, 0, 0, 0, 0};
int[] snowMana = {0, 0, 0, 0, 0, 0};
String[] manaStrings = {Constant.Color.White, Constant.Color.Blue, Constant.Color.Black, Constant.Color.Red, Constant.Color.Green, Constant.Color.Colorless};
String[] manaStrings = {
Constant.Color.White,
Constant.Color.Blue,
Constant.Color.Black,
Constant.Color.Red,
Constant.Color.Green,
Constant.Color.Colorless
};
for (Mana m : pool) {
if (m.isSnow())
if (m.isSnow()) {
snowMana[map.get(m.getColor())] += m.getAmount();
else
} else {
normalMana[map.get(m.getColor())] += m.getAmount();
}
}
StringBuilder sbNormal = new StringBuilder();
StringBuilder sbSnow = new StringBuilder();
@@ -126,15 +155,21 @@ public class ManaPool extends Card {
for (int i = 0; i < 6; i++) {
if (i == 5) {
// Put colorless first
if (normalMana[i] > 0)
if (normalMana[i] > 0) {
sbNormal.insert(0, normalMana[i] + " ");
if (snowMana[i] > 0)
}
if (snowMana[i] > 0) {
sbSnow.insert(0, snowMana[i] + " ");
}
} else {
if (normalMana[i] > 0)
sbNormal.append(CardUtil.getShortColor(manaStrings[i])).append("(").append(normalMana[i]).append(") ");
if (snowMana[i] > 0)
sbSnow.append(CardUtil.getShortColor(manaStrings[i])).append("(").append(snowMana[i]).append(") ");
if (normalMana[i] > 0) {
sbNormal.append(CardUtil.getShortColor(manaStrings[i]));
sbNormal.append("(").append(normalMana[i]).append(") ");
}
if (snowMana[i] > 0) {
sbSnow.append(CardUtil.getShortColor(manaStrings[i]));
sbSnow.append("(").append(snowMana[i]).append(") ");
}
}
}
}
@@ -151,7 +186,7 @@ public class ManaPool extends Card {
* @param color a {@link java.lang.String} object.
* @return a int.
*/
public int getAmountOfColor(String color) {
public final int getAmountOfColor(final String color) {
return floatingTotals[map.get(color)];
}
@@ -161,7 +196,7 @@ public class ManaPool extends Card {
* @param color a char.
* @return a int.
*/
public int getAmountOfColor(char color) {
public final int getAmountOfColor(final char color) {
return getAmountOfColor(Character.toString(color));
}
@@ -170,7 +205,7 @@ public class ManaPool extends Card {
*
* @return a boolean.
*/
public boolean isEmpty() {
public final boolean isEmpty() {
return floatingMana.size() == 0;
}
@@ -180,15 +215,23 @@ public class ManaPool extends Card {
* @param manaCost a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String oraclize(String manaCost) {
public static String oraclize(final String manaCost) {
// converts RB to (R/B)
String[] parts = manaCost.split(" ");
StringBuilder res = new StringBuilder();
for (String s : parts) {
if (s.length() == 2 && colors.contains(s.charAt(1) + "")) s = s.charAt(0) + "/" + s.charAt(1);
if (s.length() == 3) s = "(" + s + ")";
if (s.equals("S")) s = "(S)";//for if/when we implement snow mana
if (s.equals("X")) s = "(X)";//X costs?
if (s.length() == 2 && colors.contains(s.charAt(1) + "")) {
s = s.charAt(0) + "/" + s.charAt(1);
}
if (s.length() == 3) {
s = "(" + s + ")";
}
if (s.equals("S")) {
s = "(S)"; //for if/when we implement snow mana
}
if (s.equals("X")) {
s = "(X)"; //X costs?
}
res.append(s);
}
return res.toString();
@@ -200,14 +243,15 @@ public class ManaPool extends Card {
* @param pool a {@link java.util.ArrayList} object.
* @param mana a {@link forge.card.mana.Mana} object.
*/
public void addManaToPool(ArrayList<Mana> pool, Mana mana) {
public final void addManaToPool(final ArrayList<Mana> pool, final Mana mana) {
pool.add(mana);
if (pool.equals(floatingMana)) {
floatingTotals[map.get(mana.getColor())] += mana.getAmount();
if (mana.isSnow())
if (mana.isSnow()) {
floatingTotals[map.get(Constant.Color.Snow)] += mana.getAmount();
}
}
}
/**
* <p>addManaToFloating.</p>
@@ -215,7 +259,7 @@ public class ManaPool extends Card {
* @param manaStr a {@link java.lang.String} object.
* @param card a {@link forge.Card} object.
*/
public void addManaToFloating(String manaStr, Card card) {
public final void addManaToFloating(final String manaStr, final Card card) {
ArrayList<Mana> manaList = convertStringToMana(manaStr, card);
for (Mana m : manaList) {
addManaToPool(floatingMana, m);
@@ -230,7 +274,7 @@ public class ManaPool extends Card {
* @param card a {@link forge.Card} object.
* @return a {@link java.util.ArrayList} object.
*/
public static ArrayList<Mana> convertStringToMana(String manaStr, Card card) {
public static ArrayList<Mana> convertStringToMana(String manaStr, final Card card) {
ArrayList<Mana> manaList = new ArrayList<Mana>();
manaStr = manaStr.trim();
String[] manaArr = manaStr.split(" ");
@@ -241,9 +285,9 @@ public class ManaPool extends Card {
for (String c : manaArr) {
String longStr = Input_PayManaCostUtil.getLongColorString(c);
if (longStr.equals(Constant.Color.Colorless))
if (longStr.equals(Constant.Color.Colorless)) {
genericTotal += Integer.parseInt(c);
else if (color.equals("")) {
} else if (color.equals("")) {
color = longStr;
total = 1;
} else if (color.equals(longStr)) {
@@ -256,10 +300,12 @@ public class ManaPool extends Card {
total = 1;
}
}
if (total > 0)
if (total > 0) {
manaList.add(new Mana(color, total, card));
if (genericTotal > 0)
}
if (genericTotal > 0) {
manaList.add(new Mana(Constant.Color.Colorless, genericTotal, card));
}
return manaList;
}
@@ -267,8 +313,10 @@ public class ManaPool extends Card {
/**
* <p>clearPool.</p>
*/
public void clearPool() {
if (floatingMana.size() == 0) return;
public final void clearPool() {
if (floatingMana.size() == 0) {
return;
}
if (AllZoneUtil.isCardInPlay("Omnath, Locus of Mana", owner)) {
// Omnath in play, clear all non-green mana
@@ -280,9 +328,10 @@ public class ManaPool extends Card {
}
floatingMana.remove(i);
}
} else
} else {
floatingMana.clear();
}
}
/**
* <p>getManaFrom.</p>
@@ -291,28 +340,30 @@ public class ManaPool extends Card {
* @param manaStr a {@link java.lang.String} object.
* @return a {@link forge.card.mana.Mana} object.
*/
public Mana getManaFrom(ArrayList<Mana> pool, String manaStr) {
public final Mana getManaFrom(final ArrayList<Mana> pool, final String manaStr) {
String[] colors = manaStr.split("/");
boolean wantSnow = false;
for (int i = 0; i < colors.length; i++) {
colors[i] = Input_PayManaCostUtil.getLongColorString(colors[i]);
if (colors[i].equals(Constant.Color.Snow))
if (colors[i].equals(Constant.Color.Snow)) {
wantSnow = true;
}
}
Mana choice = null;
ArrayList<Mana> manaChoices = new ArrayList<Mana>();
for (Mana mana : pool) {
if (mana.isColor(colors)) {
if (choice == null)
if (choice == null) {
choice = mana;
else if (choice.isSnow() && !mana.isSnow())
} else if (choice.isSnow() && !mana.isSnow()) {
choice = mana;
}
} else if (wantSnow && mana.isSnow()) {
if (choice == null)
if (choice == null) {
choice = mana;
else if (choice.isColor(Constant.Color.Colorless)) {
} else if (choice.isColor(Constant.Color.Colorless)) {
// do nothing Snow Colorless should be used first to pay for Snow mana
} else if (mana.isColor(Constant.Color.Colorless)) {
// give preference to Colorless Snow mana over Colored snow mana
@@ -322,34 +373,44 @@ public class ManaPool extends Card {
choice = mana;
}
} else if (colors[0].equals(Constant.Color.Colorless)) { // colorless
if (choice == null && mana.isColor(Constant.Color.Colorless))
if (choice == null && mana.isColor(Constant.Color.Colorless)) {
choice = mana; // Colorless fits the bill nicely
else if (choice == null) {
} else if (choice == null) {
manaChoices.add(mana);
} else if (choice.isSnow() && !mana.isSnow()) { // nonSnow colorless is better to spend than Snow colorless
} else if (choice.isSnow() && !mana.isSnow()) {
// nonSnow colorless is better to spend than Snow colorless
choice = mana;
}
}
}
if (choice != null)
if (choice != null) {
return choice;
}
if (colors[0].equals(Constant.Color.Colorless)) {
if (manaChoices.size() == 1)
if (manaChoices.size() == 1) {
choice = manaChoices.get(0);
else if (manaChoices.size() > 1) {
} else if (manaChoices.size() > 1) {
int[] normalMana = {0, 0, 0, 0, 0, 0};
int[] snowMana = {0, 0, 0, 0, 0, 0};
String[] manaStrings = {Constant.Color.White, Constant.Color.Blue, Constant.Color.Black, Constant.Color.Red, Constant.Color.Green, Constant.Color.Colorless};
String[] manaStrings = {
Constant.Color.White,
Constant.Color.Blue,
Constant.Color.Black,
Constant.Color.Red,
Constant.Color.Green,
Constant.Color.Colorless
};
// loop through manaChoices adding
for (Mana m : manaChoices) {
if (m.isSnow())
if (m.isSnow()) {
snowMana[map.get(m.getColor())] += m.getAmount();
else
} else {
normalMana[map.get(m.getColor())] += m.getAmount();
}
}
int totalMana = 0;
ArrayList<String> alChoice = new ArrayList<String>();
@@ -377,9 +438,12 @@ public class ManaPool extends Card {
Object o;
if (owner.isHuman())
if (owner.isHuman()) {
o = GuiUtils.getChoiceOptional("Pay Mana from Mana Pool", alChoice.toArray());
else o = alChoice.get(0); //owner is computer
}
else {
o = alChoice.get(0); //owner is computer
}
if (o != null) {
String ch = o.toString();
@@ -390,15 +454,16 @@ public class ManaPool extends Card {
for (Mana m : manaChoices) {
if (m.isColor(ch) && (!grabSnow || (grabSnow && m.isSnow()))) {
if (choice == null)
if (choice == null) {
choice = m;
else if (choice.isSnow() && !m.isSnow())
} else if (choice.isSnow() && !m.isSnow()) {
choice = m;
}
}
}
}
}
}
return choice;
}
@@ -409,7 +474,7 @@ public class ManaPool extends Card {
* @param mc a {@link forge.card.mana.ManaCost} object.
* @param c a {@link forge.Card} object.
*/
public void removeManaFromFloating(ManaCost mc, Card c) {
public final void removeManaFromFloating(final ManaCost mc, final Card c) {
removeManaFrom(floatingMana, mc, c);
}
@@ -420,13 +485,15 @@ public class ManaPool extends Card {
* @param mc a {@link forge.card.mana.ManaCost} object.
* @param c a {@link forge.Card} object.
*/
public void removeManaFrom(ArrayList<Mana> pool, ManaCost mc, Card c) {
public final void removeManaFrom(final ArrayList<Mana> pool, final ManaCost mc, Card c) {
int i = 0;
Mana choice = null;
boolean flag = false;
while (i < pool.size()) {
Mana mana = pool.get(i);
if (flag) c = this;
if (flag) {
c = this;
}
if (c == this && mc.isNeeded(mana)) {
c = mana.getSourceCard();
flag = true;
@@ -445,7 +512,7 @@ public class ManaPool extends Card {
* @param pool a {@link java.util.ArrayList} object.
* @param mana a {@link forge.card.mana.Mana} object.
*/
public void findAndRemoveFrom(ArrayList<Mana> pool, Mana mana) {
public final void findAndRemoveFrom(final ArrayList<Mana> pool, final Mana mana) {
Mana set = null;
for (Mana m : pool) {
if (m.getSourceCard().equals(mana.getSourceCard()) && m.getColor().equals(mana.getColor())) {
@@ -462,19 +529,21 @@ public class ManaPool extends Card {
* @param pool a {@link java.util.ArrayList} object.
* @param choice a {@link forge.card.mana.Mana} object.
*/
public void removeManaFrom(ArrayList<Mana> pool, Mana choice) {
public final void removeManaFrom(final ArrayList<Mana> pool, final Mana choice) {
if (choice != null) {
if (choice.getAmount() == 1)
if (choice.getAmount() == 1) {
pool.remove(choice);
else
} else {
choice.decrementAmount();
}
if (pool.equals(floatingMana)) {
floatingTotals[map.get(choice.getColor())] -= choice.getAmount();
if (choice.isSnow())
if (choice.isSnow()) {
floatingTotals[map.get(Constant.Color.Snow)] -= choice.getAmount();
}
}
}
}
/**
@@ -483,48 +552,51 @@ public class ManaPool extends Card {
* @param manaAbility a {@link forge.card.spellability.Ability_Mana} object.
* @return an array of {@link java.lang.String} objects.
*/
public static String[] formatMana(Ability_Mana manaAbility) {
public static String[] formatMana(final Ability_Mana manaAbility) {
return formatMana(manaAbility.mana(), true);
} //wrapper
/**
* <p>formatMana.</p>
*
* @param Mana_2 a {@link java.lang.String} object.
* @param mana2 a {@link java.lang.String} object.
* @return an array of {@link java.lang.String} objects.
*/
public static String[] formatMana(String Mana_2) {
public static String[] formatMana(final String mana2) {
//turns "G G" -> {"G","G"}, "2 UG"->"{"2","U/G"}, "B W U R G" -> {"B","W","U","R","G"}, etc.
return formatMana(Mana_2, false);
return formatMana(mana2, false);
}
/**
* <p>formatMana.</p>
*
* @param Mana_2 a {@link java.lang.String} object.
* @param mana2 a {@link java.lang.String} object.
* @param parsed a boolean.
* @return an array of {@link java.lang.String} objects.
*/
public static String[] formatMana(String Mana_2, boolean parsed) {
String Mana = Mana_2;
public static String[] formatMana(final String mana2, final boolean parsed) {
String mana = mana2;
//if (Mana.isEmpty()) return null;
if (Mana.trim().equals("")) return null;
if (!parsed)
Mana = oraclize(Mana);
if (mana.trim().equals("")) {
return null;
}
if (!parsed) {
mana = oraclize(mana);
}
try {
String[] Colorless = {Integer.toString(Integer.parseInt(Mana))};
return Colorless;
String[] colorless = {Integer.toString(Integer.parseInt(mana))};
return colorless;
} catch (NumberFormatException ex) {
}
ArrayList<String> res = new ArrayList<String>();
int Colorless = 0;
int colorless = 0;
String clessString = "";
boolean parentheses = false;
String current = "";
for (int i = 0; i < Mana.length(); i++) {
char c = Mana.charAt(i);
for (int i = 0; i < mana.length(); i++) {
char c = mana.charAt(i);
if (c == '(') {
parentheses = true;
continue;
@@ -543,19 +615,24 @@ public class ManaPool extends Card {
String s = c + "";
if (colors.contains(s)) {
res.add(s);
if (clessString.trim().equals("")) continue;
if (clessString.trim().equals("")) {
continue;
}
try {
Colorless += Integer.parseInt(clessString.trim());
colorless += Integer.parseInt(clessString.trim());
} catch (NumberFormatException ex) {
throw new RuntimeException(
"Mana_Pool.getManaParts : Error, sum of noncolor mana parts is not a number - "
+ clessString);
}
clessString = "";
} else clessString += s;
} else {
clessString += s;
}
for (int i = 0; i < Colorless; i++)
}
for (int i = 0; i < colorless; i++) {
res.add("1");
}
return res.toArray(new String[0]);
}
@@ -568,10 +645,11 @@ public class ManaPool extends Card {
* @param m a {@link forge.card.mana.ManaCost} object.
* @return a {@link forge.card.mana.ManaCost} object.
*/
private ManaCost subtractMultiple(SpellAbility sa, String[] cost, ManaCost m) {
private ManaCost subtractMultiple(final SpellAbility sa, final String[] cost, ManaCost m) {
for (String s : cost) {
if (isEmpty())
if (isEmpty()) {
break;
}
int num = 1;
try {
@@ -581,8 +659,9 @@ public class ManaPool extends Card {
}
for (int i = 0; i < num; i++) {
if (isEmpty())
if (isEmpty()) {
break;
}
m = subtractOne(sa, m, s);
}
@@ -598,12 +677,14 @@ public class ManaPool extends Card {
* @param mAbilities a {@link forge.card.spellability.Ability_Mana} object.
* @return a {@link forge.card.mana.ManaCost} object.
*/
public ManaCost subtractMana(SpellAbility sa, ManaCost m, Ability_Mana... mAbilities) {
public final ManaCost subtractMana(final SpellAbility sa, ManaCost m, final Ability_Mana... mAbilities) {
ArrayList<Ability_Mana> paidAbs = sa.getPayingManaAbilities();
if (mAbilities.length == 0) {
// paying from Mana Pool
if (m.isPaid() || isEmpty()) return m;
if (m.isPaid() || isEmpty()) {
return m;
}
String[] cost = formatMana(m.toString());
return subtractMultiple(sa, cost, m);
@@ -624,14 +705,18 @@ public class ManaPool extends Card {
*
* @param manaStr a {@link java.lang.String} object.
*/
public void subtractOne(String manaStr) {
public final void subtractOne(final String manaStr) {
// Just subtract from floating, used by removeExtrinsicKeyword
ManaCost manaCost = new ManaCost(manaStr);
if (manaStr.trim().equals("") || manaCost.isPaid()) return;
if (manaStr.trim().equals("") || manaCost.isPaid()) {
return;
}
// get a mana of this type from floating, bail if none available
Mana mana = getManaFrom(floatingMana, manaStr);
if (mana == null) return; // no matching mana in the pool
if (mana == null) {
return; // no matching mana in the pool
}
Mana[] manaArray = mana.toSingleArray();
@@ -640,10 +725,11 @@ public class ManaPool extends Card {
if (manaCost.isNeeded(m)) {
manaCost.payMana(m);
findAndRemoveFrom(floatingMana, m);
} else
} else {
break;
}
}
}
/**
* <p>subtractOne.</p>
@@ -653,14 +739,18 @@ public class ManaPool extends Card {
* @param manaStr a {@link java.lang.String} object.
* @return a {@link forge.card.mana.ManaCost} object.
*/
public ManaCost subtractOne(SpellAbility sa, ManaCost manaCost, String manaStr) {
if (manaStr.trim().equals("") || manaCost.isPaid()) return manaCost;
public final ManaCost subtractOne(final SpellAbility sa, final ManaCost manaCost, final String manaStr) {
if (manaStr.trim().equals("") || manaCost.isPaid()) {
return manaCost;
}
ArrayList<Mana> payMana = sa.getPayingMana();
// get a mana of this type from floating, bail if none available
Mana mana = getManaFrom(floatingMana, manaStr);
if (mana == null) return manaCost; // no matching mana in the pool
if (mana == null) {
return manaCost; // no matching mana in the pool
}
Mana[] manaArray = mana.toSingleArray();
@@ -670,9 +760,10 @@ public class ManaPool extends Card {
manaCost.payMana(m);
payMana.add(m);
findAndRemoveFrom(floatingMana, m);
} else
} else {
break;
}
}
return manaCost;
}
@@ -681,10 +772,11 @@ public class ManaPool extends Card {
*
* @return a int.
*/
public int totalMana() {
public final int totalMana() {
int total = 0;
for (Mana c : floatingMana)
for (Mana c : floatingMana) {
total += c.getAmount();
}
return total;
}
@@ -694,16 +786,17 @@ public class ManaPool extends Card {
* @param ability a {@link forge.card.spellability.SpellAbility} object.
* @param refund a boolean.
*/
public void clearPay(SpellAbility ability, boolean refund) {
public final void clearPay(final SpellAbility ability, final boolean refund) {
ArrayList<Ability_Mana> payAbs = ability.getPayingManaAbilities();
ArrayList<Mana> payMana = ability.getPayingMana();
payAbs.clear();
// move non-undoable paying mana back to floating
if (refund) {
for (Mana m : payMana)
for (Mana m : payMana) {
addManaToPool(floatingMana, m);
}
}
payMana.clear();
}
@@ -716,8 +809,8 @@ public class ManaPool extends Card {
* @param c a {@link forge.Card} object.
* @return a boolean.
*/
public boolean accountFor(SpellAbility sa, String[] mana, Card c) {
// TODO: account for unpaying mana in payMana and floatingPool
public final boolean accountFor(final SpellAbility sa, final String[] mana, final Card c) {
// TODO account for unpaying mana in payMana and floatingPool
ArrayList<Mana> payMana = sa.getPayingMana();
ArrayList<Mana> removePaying = new ArrayList<Mana>();
@@ -730,8 +823,9 @@ public class ManaPool extends Card {
String manaStr = mana[i];
String color = Input_PayManaCostUtil.getLongColorString(manaStr);
if (!usePay && floatingMana.size() == 0)
if (!usePay && floatingMana.size() == 0) {
return false;
}
while (i < mana.length) {
@@ -741,27 +835,32 @@ public class ManaPool extends Card {
int amt = m.getColorlessAmount();
if (amt > 0) {
int difference = Integer.parseInt(manaStr) - amt;
if (difference > 0)
if (difference > 0) {
manaStr = Integer.toString(difference);
else {
} else {
i += amt;
if (i < mana.length)
if (i < mana.length) {
manaStr = mana[i];
}
}
} else {
i += m.getAmount();
if (i < mana.length)
if (i < mana.length) {
manaStr = mana[i];
}
}
color = Input_PayManaCostUtil.getLongColorString(manaStr);
if (usePay)
if (usePay) {
removePaying.add(m);
else
} else {
removeFloating.add(m);
}
if (i == mana.length) // If mana has been depleted, break from loop. All Accounted for!
// If mana has been depleted, break from loop. All Accounted for!
if (i == mana.length) {
break;
}
}
j++; // increase j until we reach the end of paying, then reset and use floating.
if (usePay) {
@@ -770,9 +869,10 @@ public class ManaPool extends Card {
usePay = false;
}
}
if (!usePay && floatingMana.size() == j && !flag)
if (!usePay && floatingMana.size() == j && !flag) {
return false;
}
}
for (int k = 0; k < removePaying.size(); k++) {
@@ -791,8 +891,8 @@ public class ManaPool extends Card {
* @param sa a {@link forge.card.spellability.SpellAbility} object.
* @param untap a boolean.
*/
public void unpaid(SpellAbility sa, boolean untap) {
// TODO: having some crash in here related to undo and not tracking abilities properly
public final void unpaid(final SpellAbility sa, final boolean untap) {
// TODO having some crash in here related to undo and not tracking abilities properly
ArrayList<Ability_Mana> payAbs = sa.getPayingManaAbilities();
// go through paidAbilities if they are undoable
@@ -815,21 +915,22 @@ public class ManaPool extends Card {
*/
private void updateKeywords() {
extrinsicKeyword.clear();
for (Mana m : floatingMana)
for (Mana m : floatingMana) {
extrinsicKeyword.add("ManaPool:" + m.toString());
}
}
private ArrayList<String> extrinsicKeyword = new ArrayList<String>();
/** {@inheritDoc} */
@Override
public ArrayList<String> getExtrinsicKeyword() {
public final ArrayList<String> getExtrinsicKeyword() {
return new ArrayList<String>(extrinsicKeyword);
}
/** {@inheritDoc} */
@Override
public void addExtrinsicKeyword(String s) {
public final void addExtrinsicKeyword(final String s) {
if (s.startsWith("ManaPool:")) {
extrinsicKeyword.add(s);
addManaToFloating(s.split(":")[1], this);
@@ -838,7 +939,7 @@ public class ManaPool extends Card {
/** {@inheritDoc} */
@Override
public void removeExtrinsicKeyword(String s) {
public final void removeExtrinsicKeyword(final String s) {
if (s.startsWith("ManaPool:")) {
updateKeywords();
extrinsicKeyword.remove(s);
@@ -849,7 +950,7 @@ public class ManaPool extends Card {
/** {@inheritDoc} */
@Override
public int getExtrinsicKeywordSize() {
public final int getExtrinsicKeywordSize() {
updateKeywords();
return extrinsicKeyword.size();
}