From 0125f88611aec6682e55b931f114b51ff3ad8474 Mon Sep 17 00:00:00 2001 From: Neil Gentleman <ngentleman@gmail.com> Date: Sun, 17 Jul 2016 23:27:09 -0700 Subject: [PATCH] add mana-generation helpers to ChoiceColor --- .../src/mage/cards/c/CoalitionRelic.java | 12 +------ .../src/mage/cards/d/DawnsReflection.java | 12 +------ Mage.Sets/src/mage/cards/f/FoodChain.java | 18 ++--------- .../src/mage/cards/m/MarketFestival.java | 19 +++--------- Mage.Sets/src/mage/cards/p/PlasmCapture.java | 12 +------ .../src/mage/cards/v/VedalkenEngineer.java | 13 +------- .../decorator/ConditionalManaEffect.java | 15 ++------- .../AddConditionalManaOfAnyColorEffect.java | 15 ++------- ...dManaAnyColorAttachedControllerEffect.java | 16 ++-------- .../common/AddManaOfAnyColorEffect.java | 17 ++-------- .../effects/common/DynamicManaEffect.java | 19 ++---------- .../main/java/mage/choices/ChoiceColor.java | 31 +++++++++++++++++++ 12 files changed, 55 insertions(+), 144 deletions(-) diff --git a/Mage.Sets/src/mage/cards/c/CoalitionRelic.java b/Mage.Sets/src/mage/cards/c/CoalitionRelic.java index 5c8943206b..b9ae158113 100644 --- a/Mage.Sets/src/mage/cards/c/CoalitionRelic.java +++ b/Mage.Sets/src/mage/cards/c/CoalitionRelic.java @@ -107,17 +107,7 @@ class CoalitionRelicEffect extends OneShotEffect { } player.choose(outcome, choice, game); } - if (choice.getColor().isBlack()) { - mana.increaseBlack(); - } else if (choice.getColor().isBlue()) { - mana.increaseBlue(); - } else if (choice.getColor().isRed()) { - mana.increaseRed(); - } else if (choice.getColor().isGreen()) { - mana.increaseGreen(); - } else if (choice.getColor().isWhite()) { - mana.increaseWhite(); - } + choice.increaseMana(mana); choice.clearChoice(); } player.getManaPool().addMana(mana, game, source); diff --git a/Mage.Sets/src/mage/cards/d/DawnsReflection.java b/Mage.Sets/src/mage/cards/d/DawnsReflection.java index be7ff51afd..17f7aef0b7 100644 --- a/Mage.Sets/src/mage/cards/d/DawnsReflection.java +++ b/Mage.Sets/src/mage/cards/d/DawnsReflection.java @@ -140,17 +140,7 @@ class DawnsReflectionManaEffect extends ManaEffect { while (controller.canRespond() && !controller.choose(Outcome.Benefit, choiceColor, game)) { } - if (choiceColor.getColor().isBlack()) { - mana.increaseBlack(); - } else if (choiceColor.getColor().isBlue()) { - mana.increaseBlue(); - } else if (choiceColor.getColor().isRed()) { - mana.increaseRed(); - } else if (choiceColor.getColor().isGreen()) { - mana.increaseGreen(); - } else if (choiceColor.getColor().isWhite()) { - mana.increaseWhite(); - } + choiceColor.increaseMana(mana); } controller.getManaPool().addMana(mana, game, source); diff --git a/Mage.Sets/src/mage/cards/f/FoodChain.java b/Mage.Sets/src/mage/cards/f/FoodChain.java index 9b51e2515e..3a001b430d 100644 --- a/Mage.Sets/src/mage/cards/f/FoodChain.java +++ b/Mage.Sets/src/mage/cards/f/FoodChain.java @@ -30,7 +30,6 @@ package mage.cards.f; import java.util.UUID; import mage.ConditionalMana; import mage.Mana; -import mage.ObjectColor; import mage.abilities.Ability; import mage.abilities.costs.Cost; import mage.abilities.costs.common.ExileTargetCost; @@ -116,22 +115,11 @@ class FoodChainManaEffect extends ManaEffect { } ChoiceColor choice = new ChoiceColor(); controller.choose(Outcome.PutManaInPool, choice, game); - ObjectColor chosenColor = choice.getColor(); - if (chosenColor == null) { + if (choice.getColor() == null) { return false; } - Mana mana = null; - if (chosenColor.isBlack()) { - mana = new FoodChainManaBuilder().setMana(Mana.BlackMana(manaCostExiled + 1), source, game).build(); - } else if (chosenColor.isBlue()) { - mana = new FoodChainManaBuilder().setMana(Mana.BlueMana(manaCostExiled + 1), source, game).build(); - } else if (chosenColor.isRed()) { - mana = new FoodChainManaBuilder().setMana(Mana.RedMana(manaCostExiled + 1), source, game).build(); - } else if (chosenColor.isGreen()) { - mana = new FoodChainManaBuilder().setMana(Mana.GreenMana(manaCostExiled + 1), source, game).build(); - } else if (chosenColor.isWhite()) { - mana = new FoodChainManaBuilder().setMana(Mana.WhiteMana(manaCostExiled + 1), source, game).build(); - } + Mana chosen = choice.getMana(manaCostExiled + 1); + Mana mana = new FoodChainManaBuilder().setMana(chosen, source, game).build(); if (mana != null) { checkToFirePossibleEvents(mana, game, source); controller.getManaPool().addMana(mana, game, source); diff --git a/Mage.Sets/src/mage/cards/m/MarketFestival.java b/Mage.Sets/src/mage/cards/m/MarketFestival.java index 2631f07870..8d4a7261ca 100644 --- a/Mage.Sets/src/mage/cards/m/MarketFestival.java +++ b/Mage.Sets/src/mage/cards/m/MarketFestival.java @@ -135,11 +135,11 @@ class MarketFestivalManaEffect extends ManaEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); MageObject sourceObject = game.getObject(source.getSourceId()); - if(controller != null && sourceObject != null){ - int x = 2; + if (controller != null && sourceObject != null) { + int x = 2; Mana mana = new Mana(); - for(int i = 0; i < x; i++){ + for (int i = 0; i < x; i++) { ChoiceColor choiceColor = new ChoiceColor(); if (i == 0) { choiceColor.setMessage("First mana color for " + sourceObject.getLogName()); @@ -152,22 +152,11 @@ class MarketFestivalManaEffect extends ManaEffect { } } - if (choiceColor.getColor().isBlack()) { - mana.increaseBlack(); - } else if (choiceColor.getColor().isBlue()) { - mana.increaseBlue(); - } else if (choiceColor.getColor().isRed()) { - mana.increaseRed(); - } else if (choiceColor.getColor().isGreen()) { - mana.increaseGreen(); - } else if (choiceColor.getColor().isWhite()) { - mana.increaseWhite(); - } + choiceColor.increaseMana(mana); } checkToFirePossibleEvents(mana, game, source); controller.getManaPool().addMana(mana, game, source); return true; - } return false; } diff --git a/Mage.Sets/src/mage/cards/p/PlasmCapture.java b/Mage.Sets/src/mage/cards/p/PlasmCapture.java index 4431c64c7c..99fa7e161b 100644 --- a/Mage.Sets/src/mage/cards/p/PlasmCapture.java +++ b/Mage.Sets/src/mage/cards/p/PlasmCapture.java @@ -134,17 +134,7 @@ class PlasmCaptureManaEffect extends ManaEffect { } } - if (choiceColor.getColor().isBlack()) { - mana.increaseBlack(); - } else if (choiceColor.getColor().isBlue()) { - mana.increaseBlue(); - } else if (choiceColor.getColor().isRed()) { - mana.increaseRed(); - } else if (choiceColor.getColor().isGreen()) { - mana.increaseGreen(); - } else if (choiceColor.getColor().isWhite()) { - mana.increaseWhite(); - } + choiceColor.increaseMana(mana); } player.getManaPool().addMana(mana, game, source); diff --git a/Mage.Sets/src/mage/cards/v/VedalkenEngineer.java b/Mage.Sets/src/mage/cards/v/VedalkenEngineer.java index 5f25dc340b..fa8b83edfa 100644 --- a/Mage.Sets/src/mage/cards/v/VedalkenEngineer.java +++ b/Mage.Sets/src/mage/cards/v/VedalkenEngineer.java @@ -156,24 +156,13 @@ class VedalkenEngineerEffect extends ManaEffect { return false; } - Mana mana = new Mana(); ChoiceColor choiceColor = new ChoiceColor(true); while (!controller.choose(Outcome.Benefit, choiceColor, game)) { if (!controller.canRespond()) { return false; } } - if (choiceColor.getColor().isBlack()) { - mana.setBlack(amount); - } else if (choiceColor.getColor().isBlue()) { - mana.setBlue(amount); - } else if (choiceColor.getColor().isRed()) { - mana.setRed(amount); - } else if (choiceColor.getColor().isGreen()) { - mana.setGreen(amount); - } else if (choiceColor.getColor().isWhite()) { - mana.setWhite(amount); - } + Mana mana = choiceColor.getMana(amount); Mana condMana = manaBuilder.setMana(mana, source, game).build(); checkToFirePossibleEvents(condMana, game, source); controller.getManaPool().addMana(condMana, game, source); diff --git a/Mage/src/main/java/mage/abilities/decorator/ConditionalManaEffect.java b/Mage/src/main/java/mage/abilities/decorator/ConditionalManaEffect.java index acac47195f..3f3ad49580 100644 --- a/Mage/src/main/java/mage/abilities/decorator/ConditionalManaEffect.java +++ b/Mage/src/main/java/mage/abilities/decorator/ConditionalManaEffect.java @@ -90,17 +90,7 @@ public class ConditionalManaEffect extends ManaEffect { return false; // it happens, don't know how } - if (choice.getColor().isBlack()) { - createdMana = Mana.BlackMana(amount); - } else if (choice.getColor().isBlue()) { - createdMana = Mana.BlueMana(amount); - } else if (choice.getColor().isRed()) { - createdMana = Mana.RedMana(amount); - } else if (choice.getColor().isGreen()) { - createdMana = Mana.GreenMana(amount); - } else if (choice.getColor().isWhite()) { - createdMana = Mana.WhiteMana(amount); - } + createdMana = choice.getMana(amount); } mana = createdMana; } @@ -117,8 +107,7 @@ public class ConditionalManaEffect extends ManaEffect { } @Override - public Mana getMana(Game game, Ability source - ) { + public Mana getMana(Game game, Ability source) { Mana mana = null; if (condition.apply(game, source)) { mana = effect.getMana(); diff --git a/Mage/src/main/java/mage/abilities/effects/common/AddConditionalManaOfAnyColorEffect.java b/Mage/src/main/java/mage/abilities/effects/common/AddConditionalManaOfAnyColorEffect.java index 8259edb065..2da6d5747f 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/AddConditionalManaOfAnyColorEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/AddConditionalManaOfAnyColorEffect.java @@ -94,19 +94,10 @@ public class AddConditionalManaOfAnyColorEffect extends ManaEffect { return false; } } - Mana mana = null; - if (choice.getColor().isBlack()) { - mana = manaBuilder.setMana(Mana.BlackMana(1), source, game).build(); - } else if (choice.getColor().isBlue()) { - mana = manaBuilder.setMana(Mana.BlueMana(1), source, game).build(); - } else if (choice.getColor().isRed()) { - mana = manaBuilder.setMana(Mana.RedMana(1), source, game).build(); - } else if (choice.getColor().isGreen()) { - mana = manaBuilder.setMana(Mana.GreenMana(1), source, game).build(); - } else if (choice.getColor().isWhite()) { - mana = manaBuilder.setMana(Mana.WhiteMana(1), source, game).build(); + Mana mana = choice.getMana(1); + if (mana != null) { + mana = manaBuilder.setMana(mana, source, game).build(); } - if (mana != null) { checkToFirePossibleEvents(mana, game, source); controller.getManaPool().addMana(mana, game, source); diff --git a/Mage/src/main/java/mage/abilities/effects/common/AddManaAnyColorAttachedControllerEffect.java b/Mage/src/main/java/mage/abilities/effects/common/AddManaAnyColorAttachedControllerEffect.java index a1d718350c..fa2847daee 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/AddManaAnyColorAttachedControllerEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/AddManaAnyColorAttachedControllerEffect.java @@ -64,22 +64,10 @@ public class AddManaAnyColorAttachedControllerEffect extends ManaEffect { return false; } } - int amount = 1; - Mana mana = null; - if (choice.getColor().isBlack()) { - mana = Mana.BlackMana(amount); - } else if (choice.getColor().isBlue()) { - mana = Mana.BlueMana(amount); - } else if (choice.getColor().isRed()) { - mana = Mana.RedMana(amount); - } else if (choice.getColor().isGreen()) { - mana = Mana.GreenMana(amount); - } else if (choice.getColor().isWhite()) { - mana = Mana.WhiteMana(amount); - } + Mana mana = choice.getMana(1); if (mana != null) { checkToFirePossibleEvents(mana, game, source); - player.getManaPool().addMana(mana, game, source); + player.getManaPool().addMana(mana, game, source); return true; } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/AddManaOfAnyColorEffect.java b/Mage/src/main/java/mage/abilities/effects/common/AddManaOfAnyColorEffect.java index a2c556ce82..4cf9e476c0 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/AddManaOfAnyColorEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/AddManaOfAnyColorEffect.java @@ -46,7 +46,7 @@ public class AddManaOfAnyColorEffect extends BasicManaEffect { } public AddManaOfAnyColorEffect(final int amount) { - super(new Mana(0,0,0,0,0,0, amount, 0)); + super(new Mana(0, 0, 0, 0, 0, 0, amount, 0)); this.amount = amount; this.staticText = new StringBuilder("add ") .append(CardUtil.numberToText(amount)) @@ -75,18 +75,7 @@ public class AddManaOfAnyColorEffect extends BasicManaEffect { if (choice.getColor() == null) { return false; // it happens, don't know how } - Mana createdMana = null; - if (choice.getColor().isBlack()) { - createdMana = Mana.BlackMana(amount); - } else if (choice.getColor().isBlue()) { - createdMana = Mana.BlueMana(amount); - } else if (choice.getColor().isRed()) { - createdMana = Mana.RedMana(amount); - } else if (choice.getColor().isGreen()) { - createdMana = Mana.GreenMana(amount); - } else if (choice.getColor().isWhite()) { - createdMana = Mana.WhiteMana(amount); - } + Mana createdMana = choice.getMana(amount); if (createdMana != null) { checkToFirePossibleEvents(createdMana, game, source); controller.getManaPool().addMana(createdMana, game, source); @@ -103,7 +92,7 @@ public class AddManaOfAnyColorEffect extends BasicManaEffect { @Override public Mana getMana() { - return (new Mana(0,0,0,0,0,0,amount, 0)); + return new Mana(0, 0, 0, 0, 0, 0, amount, 0); } } diff --git a/Mage/src/main/java/mage/abilities/effects/common/DynamicManaEffect.java b/Mage/src/main/java/mage/abilities/effects/common/DynamicManaEffect.java index 7cfb211811..1c510e7d04 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/DynamicManaEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/DynamicManaEffect.java @@ -42,7 +42,6 @@ import mage.players.Player; */ public class DynamicManaEffect extends BasicManaEffect { - private final Mana computedMana; private final DynamicValue amount; private final DynamicValue netAmount; private String text = null; @@ -73,7 +72,6 @@ public class DynamicManaEffect extends BasicManaEffect { public DynamicManaEffect(Mana mana, DynamicValue amount, String text, boolean oneChoice, DynamicValue netAmount) { super(mana); this.amount = amount; - computedMana = new Mana(); this.text = text; this.oneChoice = oneChoice; this.netAmount = netAmount; @@ -81,7 +79,6 @@ public class DynamicManaEffect extends BasicManaEffect { public DynamicManaEffect(final DynamicManaEffect effect) { super(effect); - this.computedMana = effect.computedMana.copy(); this.amount = effect.amount.copy(); this.text = effect.text; this.oneChoice = effect.oneChoice; @@ -99,7 +96,7 @@ public class DynamicManaEffect extends BasicManaEffect { @Override public boolean apply(Game game, Ability source) { - computeMana(false, game, source); + Mana computedMana = computeMana(false, game, source); checkToFirePossibleEvents(computedMana, game, source); game.getPlayer(source.getControllerId()).getManaPool().addMana(computedMana, game, source); return true; @@ -119,7 +116,7 @@ public class DynamicManaEffect extends BasicManaEffect { } public Mana computeMana(boolean netMana, Game game, Ability source) { - this.computedMana.clear(); + Mana computedMana = new Mana(); int count; if (netMana && netAmount != null) { // calculate the maximum available mana @@ -155,17 +152,7 @@ public class DynamicManaEffect extends BasicManaEffect { } } } - if (choiceColor.getColor().isBlack()) { - computedMana.increaseBlack(); - } else if (choiceColor.getColor().isBlue()) { - computedMana.increaseBlue(); - } else if (choiceColor.getColor().isRed()) { - computedMana.increaseRed(); - } else if (choiceColor.getColor().isGreen()) { - computedMana.increaseGreen(); - } else if (choiceColor.getColor().isWhite()) { - computedMana.increaseWhite(); - } + choiceColor.increaseMana(computedMana); if (!oneChoice) { choiceColor.clearChoice(); } diff --git a/Mage/src/main/java/mage/choices/ChoiceColor.java b/Mage/src/main/java/mage/choices/ChoiceColor.java index 35a1f3ba01..30208b8b7e 100644 --- a/Mage/src/main/java/mage/choices/ChoiceColor.java +++ b/Mage/src/main/java/mage/choices/ChoiceColor.java @@ -29,6 +29,8 @@ package mage.choices; import java.util.ArrayList; + +import mage.Mana; import mage.ObjectColor; /** @@ -90,4 +92,33 @@ public class ChoiceColor extends ChoiceImpl { return color; } + public Mana getMana(int amount) { + Mana mana = null; + if (getColor().isBlack()) { + mana = Mana.BlackMana(amount); + } else if (getColor().isBlue()) { + mana = Mana.BlueMana(amount); + } else if (getColor().isRed()) { + mana = Mana.RedMana(amount); + } else if (getColor().isGreen()) { + mana = Mana.GreenMana(amount); + } else if (getColor().isWhite()) { + mana = Mana.WhiteMana(amount); + } + return mana; + } + + public void increaseMana(Mana mana) { + if (getColor().isBlack()) { + mana.increaseBlack(); + } else if (getColor().isBlue()) { + mana.increaseBlue(); + } else if (getColor().isRed()) { + mana.increaseRed(); + } else if (getColor().isGreen()) { + mana.increaseGreen(); + } else if (getColor().isWhite()) { + mana.increaseWhite(); + } + } }