From 46e2ac3c65fedef5645fa2073cd2b2bb9d897ca5 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Thu, 25 Apr 2013 07:32:46 +0000 Subject: [PATCH] setColorsToPay, setSunburst moved from input/InputPayManaOfCostPayment.java to CostPartMana ManaPool.payManaFromAbility does not return ManaCostBeingPaid - that means it does not create a new instance, but alters the one passed as parameter a few mana-paying inputs: the player who is shown the input is taken from base class field, not from singletons --- src/main/java/forge/card/cost/CostPartMana.java | 3 +++ src/main/java/forge/card/mana/ManaPool.java | 7 +------ .../java/forge/control/input/InputPayManaBase.java | 2 +- .../control/input/InputPayManaExecuteCommands.java | 7 +++---- .../control/input/InputPayManaOfCostPayment.java | 5 +---- .../java/forge/control/input/InputPayManaSimple.java | 12 ------------ src/main/java/forge/game/ai/ComputerUtilMana.java | 2 +- 7 files changed, 10 insertions(+), 28 deletions(-) diff --git a/src/main/java/forge/card/cost/CostPartMana.java b/src/main/java/forge/card/cost/CostPartMana.java index 6e3b794d9ed..d39cbff42b0 100644 --- a/src/main/java/forge/card/cost/CostPartMana.java +++ b/src/main/java/forge/card/cost/CostPartMana.java @@ -133,6 +133,9 @@ public class CostPartMana extends CostPart { FThreads.setInputAndWait(inpPayment); if(!inpPayment.isPaid()) return false; + + source.setColorsPaid(toPay.getColorsPaid()); + source.setSunburstValue(toPay.getSunburst()); } if (this.getAmountOfX() > 0) { if( !ability.isAnnouncing("X") && !xWasBilled) { diff --git a/src/main/java/forge/card/mana/ManaPool.java b/src/main/java/forge/card/mana/ManaPool.java index ac66f403635..d428893bf45 100644 --- a/src/main/java/forge/card/mana/ManaPool.java +++ b/src/main/java/forge/card/mana/ManaPool.java @@ -493,11 +493,7 @@ public class ManaPool { * a {@link forge.card.spellability.AbilityMana} object. * @return a {@link forge.card.mana.ManaCostBeingPaid} object. */ - public final ManaCostBeingPaid payManaFromAbility(final SpellAbility sa, ManaCostBeingPaid manaCost, final SpellAbility ma) { - if (manaCost.isPaid() || this.isEmpty()) { - return manaCost; - } - + public final void payManaFromAbility(final SpellAbility sa, ManaCostBeingPaid manaCost, final SpellAbility ma) { // Mana restriction must be checked before this method is called final List paidAbs = sa.getPayingManaAbilities(); @@ -522,7 +518,6 @@ public class ManaPool { } } } - return manaCost; } /** diff --git a/src/main/java/forge/control/input/InputPayManaBase.java b/src/main/java/forge/control/input/InputPayManaBase.java index 397a39c6932..55167e2b614 100644 --- a/src/main/java/forge/control/input/InputPayManaBase.java +++ b/src/main/java/forge/control/input/InputPayManaBase.java @@ -308,7 +308,7 @@ public abstract class InputPayManaBase extends InputSyncronizedBase implements I public void onManaAbilityPlayed(final SpellAbility saPaymentSrc) { if ( saPaymentSrc != null) // null comes when they've paid from pool - this.manaCost = player.getManaPool().payManaFromAbility(saPaidFor, manaCost, saPaymentSrc); + player.getManaPool().payManaFromAbility(saPaidFor, manaCost, saPaymentSrc); onManaAbilityPaid(); if ( saPaymentSrc != null ) diff --git a/src/main/java/forge/control/input/InputPayManaExecuteCommands.java b/src/main/java/forge/control/input/InputPayManaExecuteCommands.java index a5bd6637570..09f51424009 100644 --- a/src/main/java/forge/control/input/InputPayManaExecuteCommands.java +++ b/src/main/java/forge/control/input/InputPayManaExecuteCommands.java @@ -17,7 +17,6 @@ */ package forge.control.input; -import forge.Singletons; import forge.card.cost.Cost; import forge.card.mana.ManaCost; import forge.card.mana.ManaCostBeingPaid; @@ -95,9 +94,9 @@ public class InputPayManaExecuteCommands extends InputPayManaBase { @Override protected void done() { if (this.phyLifeToLose > 0) { - Singletons.getControl().getPlayer().payLife(this.phyLifeToLose, null); + player.payLife(this.phyLifeToLose, null); } - Singletons.getControl().getPlayer().getManaPool().clearManaPaid(this.saPaidFor, false); + player.getManaPool().clearManaPaid(this.saPaidFor, false); bPaid = true; this.stop(); } @@ -105,7 +104,7 @@ public class InputPayManaExecuteCommands extends InputPayManaBase { /** {@inheritDoc} */ @Override protected final void onCancel() { - Singletons.getControl().getPlayer().getManaPool().refundManaPaid(this.saPaidFor, true); + player.getManaPool().refundManaPaid(this.saPaidFor, true); bPaid = false; this.stop(); } diff --git a/src/main/java/forge/control/input/InputPayManaOfCostPayment.java b/src/main/java/forge/control/input/InputPayManaOfCostPayment.java index 97eec07defb..c021fec3b21 100644 --- a/src/main/java/forge/control/input/InputPayManaOfCostPayment.java +++ b/src/main/java/forge/control/input/InputPayManaOfCostPayment.java @@ -1,7 +1,6 @@ package forge.control.input; import forge.Card; -import forge.Singletons; import forge.card.mana.ManaCostBeingPaid; import forge.card.spellability.SpellAbility; import forge.game.player.Player; @@ -32,10 +31,8 @@ public class InputPayManaOfCostPayment extends InputPayManaBase { protected void done() { final Card source = saPaidFor.getSourceCard(); if (this.phyLifeToLose > 0) { - Singletons.getControl().getPlayer().payLife(this.phyLifeToLose, source); + player.payLife(this.phyLifeToLose, source); } - source.setColorsPaid(this.manaCost.getColorsPaid()); - source.setSunburstValue(this.manaCost.getSunburst()); // If this is a spell with convoke, re-tap all creatures used for it. // This is done to make sure Taps triggers go off at the right time diff --git a/src/main/java/forge/control/input/InputPayManaSimple.java b/src/main/java/forge/control/input/InputPayManaSimple.java index ee6512ae6ef..af97580f2df 100644 --- a/src/main/java/forge/control/input/InputPayManaSimple.java +++ b/src/main/java/forge/control/input/InputPayManaSimple.java @@ -50,16 +50,6 @@ public class InputPayManaSimple extends InputPayManaBase { } - /** - *

- * resetManaCost. - *

- */ - private void resetManaCost() { - this.manaCost = new ManaCostBeingPaid(this.originalManaCost); - this.phyLifeToLose = 0; - } - protected void onManaAbilityPaid() { if (this.manaCost.isPaid()) { this.originalCard.setSunburstValue(this.manaCost.getSunburst()); @@ -92,7 +82,6 @@ public class InputPayManaSimple extends InputPayManaBase { } if (!this.saPaidFor.getSourceCard().isCopiedSpell()) { player.getManaPool().clearManaPaid(this.saPaidFor, false); - this.resetManaCost(); if (this.saPaidFor.isSpell()) { this.saPaidFor.setSourceCard(game.getAction().moveToStack(this.originalCard)); @@ -108,7 +97,6 @@ public class InputPayManaSimple extends InputPayManaBase { @Override protected final void onCancel() { handleConvokedCards(true); - this.resetManaCost(); player.getManaPool().refundManaPaid(this.saPaidFor, true); player.getZone(ZoneType.Battlefield).updateObservers(); // DO diff --git a/src/main/java/forge/game/ai/ComputerUtilMana.java b/src/main/java/forge/game/ai/ComputerUtilMana.java index 4a187deae4c..fc59e8d7bbd 100644 --- a/src/main/java/forge/game/ai/ComputerUtilMana.java +++ b/src/main/java/forge/game/ai/ComputerUtilMana.java @@ -216,7 +216,7 @@ public class ComputerUtilMana { //ma.resolve(); AbilityUtils.resolve(ma, false); // subtract mana from mana pool - cost = manapool.payManaFromAbility(sa, cost, ma); + manapool.payManaFromAbility(sa, cost, ma); } else { cost.payMultipleMana(manaProduced); }