optional cost minor refactor

This commit is contained in:
Maxmtg
2013-04-16 07:46:32 +00:00
parent 6baf8cf43b
commit 4a6834a9cb
3 changed files with 26 additions and 28 deletions

View File

@@ -92,7 +92,7 @@ public abstract class SpellAbility implements ISpellAbility {
private final ArrayList<Mana> payingMana = new ArrayList<Mana>(); private final ArrayList<Mana> payingMana = new ArrayList<Mana>();
private final List<SpellAbility> paidAbilities = new ArrayList<SpellAbility>(); private final List<SpellAbility> paidAbilities = new ArrayList<SpellAbility>();
private ArrayList<String> optionalAdditionalCosts = new ArrayList<String>(); private List<String> optionalAdditionalCosts = new ArrayList<String>();
private HashMap<String, List<Card>> paidLists = new HashMap<String, List<Card>>(); private HashMap<String, List<Card>> paidLists = new HashMap<String, List<Card>>();
@@ -671,14 +671,14 @@ public abstract class SpellAbility implements ISpellAbility {
/** /**
* @return the optionalAdditionalCosts * @return the optionalAdditionalCosts
*/ */
public ArrayList<String> getOptionalAdditionalCosts() { public List<String> getOptionalAdditionalCosts() {
return optionalAdditionalCosts; return optionalAdditionalCosts;
} }
/** /**
* @param costs the optionalAdditionalCosts to set * @param costs the optionalAdditionalCosts to set
*/ */
public final void setOptionalAdditionalCosts(ArrayList<String> costs) { public final void setOptionalAdditionalCosts(List<String> costs) {
this.optionalAdditionalCosts = costs; this.optionalAdditionalCosts = costs;
} }

View File

@@ -1287,9 +1287,9 @@ public final class GameActionUtil {
* the original sa * the original sa
* @return an ArrayList<SpellAbility>. * @return an ArrayList<SpellAbility>.
*/ */
public static ArrayList<SpellAbility> getOptionalAdditionalCosts(final SpellAbility original) { public static List<SpellAbility> getOptionalAdditionalCosts(final SpellAbility original) {
final ArrayList<SpellAbility> abilities = new ArrayList<SpellAbility>(); final List<SpellAbility> abilities = new ArrayList<SpellAbility>();
final ArrayList<SpellAbility> newAbilities = new ArrayList<SpellAbility>(); final List<SpellAbility> newAbilities = new ArrayList<SpellAbility>();
final Card source = original.getSourceCard(); final Card source = original.getSourceCard();
abilities.add(original); abilities.add(original);
if (!original.isSpell()) { if (!original.isSpell()) {
@@ -1304,12 +1304,12 @@ public final class GameActionUtil {
newSA.setBasicSpell(false); newSA.setBasicSpell(false);
newSA.setPayCosts(new Cost(keyword.substring(8), false).add(newSA.getPayCosts())); newSA.setPayCosts(new Cost(keyword.substring(8), false).add(newSA.getPayCosts()));
newSA.setDescription(sa.getDescription() + " (with Buyback)"); newSA.setDescription(sa.getDescription() + " (with Buyback)");
ArrayList<String> newoacs = new ArrayList<String>();
newoacs.addAll(sa.getOptionalAdditionalCosts()); ArrayList<String> newoacs = new ArrayList<String>(sa.getOptionalAdditionalCosts());
newoacs.add(keyword);
newSA.setOptionalAdditionalCosts(newoacs); newSA.setOptionalAdditionalCosts(newoacs);
newSA.addOptionalAdditionalCosts(keyword);
if (newSA.canPlay()) { if (newSA.canPlay()) {
newAbilities.add(newAbilities.size(), newSA); newAbilities.add(newSA);
} }
} }
abilities.addAll(0, newAbilities); abilities.addAll(0, newAbilities);
@@ -1321,12 +1321,12 @@ public final class GameActionUtil {
final Cost cost = new Cost(keyword.substring(7), false); final Cost cost = new Cost(keyword.substring(7), false);
newSA.setDescription(sa.getDescription() + " (Kicker " + cost.toSimpleString() + ")"); newSA.setDescription(sa.getDescription() + " (Kicker " + cost.toSimpleString() + ")");
newSA.setPayCosts(cost.add(newSA.getPayCosts())); newSA.setPayCosts(cost.add(newSA.getPayCosts()));
ArrayList<String> newoacs = new ArrayList<String>();
newoacs.addAll(sa.getOptionalAdditionalCosts()); ArrayList<String> newoacs = new ArrayList<String>(sa.getOptionalAdditionalCosts());
newoacs.add(keyword);
newSA.setOptionalAdditionalCosts(newoacs); newSA.setOptionalAdditionalCosts(newoacs);
newSA.addOptionalAdditionalCosts(keyword);
if (newSA.canPlay()) { if (newSA.canPlay()) {
newAbilities.add(newAbilities.size(), newSA); newAbilities.add(newSA);
} }
} }
abilities.addAll(0, newAbilities); abilities.addAll(0, newAbilities);
@@ -1337,24 +1337,23 @@ public final class GameActionUtil {
for (SpellAbility sa : abilities) { for (SpellAbility sa : abilities) {
final SpellAbility newSA = sa.copy(); final SpellAbility newSA = sa.copy();
newSA.setBasicSpell(false); newSA.setBasicSpell(false);
newSA.setPayCosts(new Cost(costString1, false).add(newSA.getPayCosts()));
final Cost cost1 = new Cost(costString1, false); final Cost cost1 = new Cost(costString1, false);
newSA.setDescription(sa.getDescription() + " (Additional cost " + cost1.toSimpleString() + ")"); newSA.setDescription(sa.getDescription() + " (Additional cost " + cost1.toSimpleString() + ")");
ArrayList<String> newoacs = new ArrayList<String>(); newSA.setPayCosts(cost1.add(sa.getPayCosts()));
newoacs.addAll(sa.getOptionalAdditionalCosts()); newSA.setOptionalAdditionalCosts(new ArrayList<String>(sa.getOptionalAdditionalCosts()));
newSA.setOptionalAdditionalCosts(newoacs);
if (newSA.canPlay()) { if (newSA.canPlay()) {
newAbilities.add(newAbilities.size(), newSA); newAbilities.add(newSA);
} }
//second option //second option
final SpellAbility newSA2 = sa.copy(); final SpellAbility newSA2 = sa.copy();
newSA2.setBasicSpell(false); newSA2.setBasicSpell(false);
newSA.setPayCosts(new Cost(costString2, false).add(newSA.getPayCosts()));
final Cost cost2 = new Cost(costString2, false); final Cost cost2 = new Cost(costString2, false);
newSA2.setDescription(sa.getDescription() + " (Additional cost " + cost2.toSimpleString() + ")"); newSA2.setDescription(sa.getDescription() + " (Additional cost " + cost2.toSimpleString() + ")");
ArrayList<String> newoacs2 = new ArrayList<String>(); newSA2.setPayCosts(cost2.add(sa.getPayCosts()));
newoacs.addAll(sa.getOptionalAdditionalCosts()); newSA2.setOptionalAdditionalCosts(new ArrayList<String>(sa.getOptionalAdditionalCosts()));
newSA2.setOptionalAdditionalCosts(newoacs2);
if (newSA2.canPlay()) { if (newSA2.canPlay()) {
newAbilities.add(newAbilities.size(), newSA2); newAbilities.add(newAbilities.size(), newSA2);
} }
@@ -1370,10 +1369,10 @@ public final class GameActionUtil {
+ " that shares a color with " + source.getName() + ">"; + " that shares a color with " + source.getName() + ">";
newSA.setPayCosts(new Cost(conspireCost, false).add(newSA.getPayCosts())); newSA.setPayCosts(new Cost(conspireCost, false).add(newSA.getPayCosts()));
newSA.setDescription(sa.getDescription() + " (Conspire)"); newSA.setDescription(sa.getDescription() + " (Conspire)");
ArrayList<String> newoacs = new ArrayList<String>();
newoacs.addAll(sa.getOptionalAdditionalCosts()); ArrayList<String> newoacs = new ArrayList<String>(sa.getOptionalAdditionalCosts());
newoacs.add(keyword);
newSA.setOptionalAdditionalCosts(newoacs); newSA.setOptionalAdditionalCosts(newoacs);
newSA.addOptionalAdditionalCosts(keyword);
if (newSA.canPlay()) { if (newSA.canPlay()) {
newAbilities.add(newAbilities.size(), newSA); newAbilities.add(newAbilities.size(), newSA);
} }

View File

@@ -17,7 +17,6 @@
*/ */
package forge.game.player; package forge.game.player;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import forge.Card; import forge.Card;
@@ -218,7 +217,7 @@ public class HumanPlayer extends Player {
*/ */
public SpellAbility chooseOptionalAdditionalCosts(final SpellAbility original) { public SpellAbility chooseOptionalAdditionalCosts(final SpellAbility original) {
//final HashMap<String, SpellAbility> map = new HashMap<String, SpellAbility>(); //final HashMap<String, SpellAbility> map = new HashMap<String, SpellAbility>();
final ArrayList<SpellAbility> abilities = GameActionUtil.getOptionalAdditionalCosts(original); final List<SpellAbility> abilities = GameActionUtil.getOptionalAdditionalCosts(original);
if (!original.isSpell()) { if (!original.isSpell()) {
return original; return original;