From b8e92ef7e5d612246f678d67a4533eba6e398397 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Tue, 9 Apr 2013 06:49:40 +0000 Subject: [PATCH] removed some variable.matches("[0-9][0-9]?") in favour of StringUtils.isNumeric and AbilityUtils.calculateAmount (that handles plain numbers correctly) --- .../ability/effects/ChooseCardEffect.java | 7 +++--- .../ability/effects/ChooseNumberEffect.java | 23 +++++------------- .../ability/effects/ChooseSourceEffect.java | 7 +++--- src/main/java/forge/card/mana/ManaPool.java | 2 +- .../spellability/SpellAbilityRestriction.java | 3 +-- .../StaticAbilityContinuous.java | 24 ++++++++----------- 6 files changed, 26 insertions(+), 40 deletions(-) diff --git a/src/main/java/forge/card/ability/effects/ChooseCardEffect.java b/src/main/java/forge/card/ability/effects/ChooseCardEffect.java index a3ab985b427..f266c04c79a 100644 --- a/src/main/java/forge/card/ability/effects/ChooseCardEffect.java +++ b/src/main/java/forge/card/ability/effects/ChooseCardEffect.java @@ -3,6 +3,8 @@ package forge.card.ability.effects; import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.StringUtils; + import forge.Card; import forge.CardLists; import forge.CardPredicates.Presets; @@ -49,9 +51,8 @@ public class ChooseCardEffect extends SpellAbilityEffect { choices = CardLists.filterControlledBy(choices, tgtPlayers.get(0)); } - final String numericAmount = sa.hasParam("Amount") ? sa.getParam("Amount") : "1"; - final int validAmount = !numericAmount.matches("[0-9][0-9]?") - ? CardFactoryUtil.xCount(host, host.getSVar(sa.getParam("Amount"))) : Integer.parseInt(numericAmount); + final String numericAmount = sa.getParamOrDefault("Amount", "1"); + final int validAmount = StringUtils.isNumeric(numericAmount) ? Integer.parseInt(numericAmount) : CardFactoryUtil.xCount(host, host.getSVar(numericAmount)); for (final Player p : tgtPlayers) { if (sa.hasParam("EachBasicType")) { diff --git a/src/main/java/forge/card/ability/effects/ChooseNumberEffect.java b/src/main/java/forge/card/ability/effects/ChooseNumberEffect.java index 5aa53a30902..d72690b5b20 100644 --- a/src/main/java/forge/card/ability/effects/ChooseNumberEffect.java +++ b/src/main/java/forge/card/ability/effects/ChooseNumberEffect.java @@ -3,6 +3,8 @@ package forge.card.ability.effects; import java.util.List; import java.util.Random; +import org.apache.commons.lang.StringUtils; + import forge.Card; import forge.card.ability.SpellAbilityEffect; import forge.card.cardfactory.CardFactoryUtil; @@ -36,23 +38,10 @@ public class ChooseNumberEffect extends SpellAbilityEffect { //final int max = sa.containsKey("Max") ? Integer.parseInt(sa.get("Max")) : 99; final boolean random = sa.hasParam("Random"); - final int min; - if (!sa.hasParam("Min")) { - min = Integer.parseInt("0"); - } else if (sa.getParam("Min").matches("[0-9][0-9]?")) { - min = Integer.parseInt(sa.getParam("Min")); - } else { - min = CardFactoryUtil.xCount(card, card.getSVar(sa.getParam("Min"))); - } // Allow variables for Min - - final int max; - if (!sa.hasParam("Max")) { - max = Integer.parseInt("99"); - } else if (sa.getParam("Max").matches("[0-9][0-9]?")) { - max = Integer.parseInt(sa.getParam("Max")); - } else { - max = CardFactoryUtil.xCount(card, card.getSVar(sa.getParam("Max"))); - } // Allow variables for Max + final String sMin = sa.getParamOrDefault("Min", "0"); + final int min = StringUtils.isNumeric(sMin) ? Integer.parseInt(sMin) : CardFactoryUtil.xCount(card, card.getSVar(sMin)); + final String sMax = sa.getParamOrDefault("Max", "99"); + final int max = StringUtils.isNumeric(sMax) ? Integer.parseInt(sMax) : CardFactoryUtil.xCount(card, card.getSVar(sMax)); final String[] choices = new String[max + 1]; if (!random) { diff --git a/src/main/java/forge/card/ability/effects/ChooseSourceEffect.java b/src/main/java/forge/card/ability/effects/ChooseSourceEffect.java index 6b8fb0a4698..d0f1422bbcc 100644 --- a/src/main/java/forge/card/ability/effects/ChooseSourceEffect.java +++ b/src/main/java/forge/card/ability/effects/ChooseSourceEffect.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Stack; +import org.apache.commons.lang3.StringUtils; + import com.google.common.base.Predicate; import forge.Card; @@ -122,9 +124,8 @@ public class ChooseSourceEffect extends SpellAbilityEffect { return; } - final String numericAmount = sa.hasParam("Amount") ? sa.getParam("Amount") : "1"; - final int validAmount = !numericAmount.matches("[0-9][0-9]?") - ? CardFactoryUtil.xCount(host, host.getSVar(sa.getParam("Amount"))) : Integer.parseInt(numericAmount); + final String numericAmount = sa.getParamOrDefault("Amount", "1"); + final int validAmount = StringUtils.isNumeric(numericAmount) ? Integer.parseInt(numericAmount) : CardFactoryUtil.xCount(host, host.getSVar(numericAmount)); for (final Player p : tgtPlayers) { if ((tgt == null) || p.canBeTargetedBy(sa)) { diff --git a/src/main/java/forge/card/mana/ManaPool.java b/src/main/java/forge/card/mana/ManaPool.java index dc06eae51be..96bdf42af96 100644 --- a/src/main/java/forge/card/mana/ManaPool.java +++ b/src/main/java/forge/card/mana/ManaPool.java @@ -348,7 +348,7 @@ public class ManaPool { } int numColorless = 0; - if (manaStr.matches("[0-9][0-9]?")) { + if (StringUtils.isNumeric(manaStr)) { numColorless = Integer.parseInt(manaStr); } if (numColorless >= totalMana) { diff --git a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java index f112d3f620e..de8c6ec247d 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java +++ b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java @@ -318,8 +318,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { if (this.getLimitToCheck() != null) { String limit = this.getLimitToCheck(); - int activationLimit = limit.matches("[0-9][0-9]?") - ? Integer.parseInt(limit) : AbilityUtils.calculateAmount(c, limit, sa); + int activationLimit = AbilityUtils.calculateAmount(c, limit, sa); this.setActivationLimit(activationLimit); if ((this.getActivationLimit() != -1) && (this.getNumberTurnActivations() >= this.getActivationLimit())) { diff --git a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java index cf353085aca..42740bd678f 100644 --- a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java +++ b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java @@ -22,6 +22,8 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; +import org.apache.commons.lang3.StringUtils; + import forge.Card; import forge.CardLists; import forge.CardUtil; @@ -104,30 +106,26 @@ public class StaticAbilityContinuous { if (params.containsKey("SetPower")) { setP = params.get("SetPower"); - setPower = setP.matches("[0-9][0-9]?") ? Integer.parseInt(setP) - : AbilityUtils.calculateAmount(hostCard, setP, null); + setPower = AbilityUtils.calculateAmount(hostCard, setP, null); } if (params.containsKey("SetToughness")) { setT = params.get("SetToughness"); - setToughness = setT.matches("[0-9][0-9]?") ? Integer.parseInt(setT) - : AbilityUtils.calculateAmount(hostCard, setT, null); + setToughness = AbilityUtils.calculateAmount(hostCard, setT, null); } if (params.containsKey("AddPower")) { addP = params.get("AddPower"); - powerBonus = addP.matches("[0-9][0-9]?") ? Integer.parseInt(addP) - : AbilityUtils.calculateAmount(hostCard, addP, null); - if (!addP.matches("[0-9][0-9]?") && !addP.equals("AffectedX")) { + powerBonus = AbilityUtils.calculateAmount(hostCard, addP, null); + if (!StringUtils.isNumeric(addP) && !addP.equals("AffectedX")) { se.setXValue(powerBonus); } } if (params.containsKey("AddToughness")) { addT = params.get("AddToughness"); - toughnessBonus = addT.matches("[0-9][0-9]?") ? Integer.parseInt(addT) - : AbilityUtils.calculateAmount(hostCard, addT, null); - if (!addT.matches("[0-9][0-9]?") && !addT.equals("AffectedX")) { + toughnessBonus = AbilityUtils.calculateAmount(hostCard, addT, null); + if (!StringUtils.isNumeric(addT) && !addT.equals("AffectedX")) { se.setYValue(toughnessBonus); } } @@ -312,16 +310,14 @@ public class StaticAbilityContinuous { if (mhs.equals("Unlimited")) { p.setUnlimitedHandSize(true); } else { - int max = mhs.matches("[0-9][0-9]?") ? Integer.parseInt(mhs) - : AbilityUtils.calculateAmount(hostCard, mhs, null); + int max = AbilityUtils.calculateAmount(hostCard, mhs, null); p.setMaxHandSize(max); } } if (params.containsKey("RaiseMaxHandSize")) { String rmhs = params.get("RaiseMaxHandSize"); - int rmax = rmhs.matches("[0-9][0-9]?") ? Integer.parseInt(rmhs) - : AbilityUtils.calculateAmount(hostCard, rmhs, null); + int rmax = AbilityUtils.calculateAmount(hostCard, rmhs, null); p.setMaxHandSize(p.getMaxHandSize() + rmax); } }