From 4e5b5e4d6c9810a89cfeca75ce6db6156d4354d3 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 14 Sep 2014 16:44:42 +0000 Subject: [PATCH] Simplify implementation of pre-announcing X --- .../src/main/java/forge/game/cost/CostPayment.java | 7 +++---- .../java/forge/game/mana/ManaCostAdjustment.java | 4 ---- forge-gui/src/main/java/forge/player/HumanPlay.java | 5 ++++- .../java/forge/player/HumanPlaySpellAbility.java | 12 ++---------- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/forge-game/src/main/java/forge/game/cost/CostPayment.java b/forge-game/src/main/java/forge/game/cost/CostPayment.java index 98f7a2016b7..56f998ee247 100644 --- a/forge-game/src/main/java/forge/game/cost/CostPayment.java +++ b/forge-game/src/main/java/forge/game/cost/CostPayment.java @@ -132,14 +132,13 @@ public class CostPayment { } public boolean payCost(final CostDecisionMakerBase decisionMaker) { - final List costParts = this.getCost().getCostPartsWithZeroMana(); for (final CostPart part : costParts) { PaymentDecision pd = part.accept(decisionMaker); - - if ( null == pd || !part.payAsDecided(decisionMaker.getPlayer(), pd, ability)) - return false; + if (pd == null || !part.payAsDecided(decisionMaker.getPlayer(), pd, ability)) { + return false; + } this.paidCostParts.add(part); } diff --git a/forge-game/src/main/java/forge/game/mana/ManaCostAdjustment.java b/forge-game/src/main/java/forge/game/mana/ManaCostAdjustment.java index 2778d939e9c..b861ad3ff09 100644 --- a/forge-game/src/main/java/forge/game/mana/ManaCostAdjustment.java +++ b/forge-game/src/main/java/forge/game/mana/ManaCostAdjustment.java @@ -29,11 +29,7 @@ public class ManaCostAdjustment { public static final void adjust(ManaCostBeingPaid cost, final SpellAbility sa, boolean test) { final Game game = sa.getActivatingPlayer().getGame(); - // Beached final Card originalCard = sa.getHostCard(); - if (sa.isXCost() && !originalCard.isCopiedSpell()) { - originalCard.setXManaCostPaid(0); - } if (sa.isTrigger()) { return; diff --git a/forge-gui/src/main/java/forge/player/HumanPlay.java b/forge-gui/src/main/java/forge/player/HumanPlay.java index 2119365d306..0d4937e3ba1 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlay.java +++ b/forge-gui/src/main/java/forge/player/HumanPlay.java @@ -696,6 +696,9 @@ public class HumanPlay { toPay.setXManaCostPaid(xPaid, ability.getParam("XColor")); source.setXManaCostPaid(xPaid); } + else if (source.getXManaCostPaid() > 0) { //ensure pre-announced X value retained + toPay.setXManaCostPaid(source.getXManaCostPaid(), ability.getParam("XColor")); + } int timesMultikicked = source.getKickerMagnitude(); if (timesMultikicked > 0 && ability.isAnnouncing("Multikicker")) { @@ -716,7 +719,7 @@ public class HumanPlay { if (isActivatedSa) { ManaCostAdjustment.adjust(toPay, ability, false); } - + InputPayMana inpPayment; if (ability.isOffering() && ability.getSacrificedAsOffering() == null) { System.out.println("Sacrifice input for Offering cancelled"); diff --git a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java index ea8e1081aa0..7fda2c75d2c 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java +++ b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java @@ -229,20 +229,12 @@ public class HumanPlaySpellAbility { if (needX && manaCost != null && manaCost.getAmountOfX() > 0) { String sVar = ability.getSVar("X"); //only prompt for new X value if card doesn't determine it another way - if ("Count$xPaid".equals(sVar) || StringUtils.isNumeric(sVar) || sVar.isEmpty()) { + if ("Count$xPaid".equals(sVar) || sVar.isEmpty()) { Integer value = controller.announceRequirements(ability, "X", allowZero && manaCost.canXbe0()); if (value == null) { return false; } - - ability.setSVar("X", value.toString()); - card.setSVar("X", value.toString()); - - // announce to sub-abilities - SpellAbility sub = ability; - while ((sub = sub.getSubAbility()) != null) { - sub.setSVar("X", value.toString()); - } + card.setXManaCostPaid(value); } } return true;