From 459ef9af94c75a18dd0c26017ea7b94e64998f7a Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sun, 6 May 2018 00:48:16 +0400 Subject: [PATCH] Refactoring: added mana color check and fix --- .../src/mage/cards/h/HallOfGemstone.java | 2 +- .../src/mage/cards/p/ProtectiveSphere.java | 2 +- Mage/src/main/java/mage/ObjectColor.java | 22 +++++++++++++++---- .../AnyColorPermanentTypesManaAbility.java | 2 +- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/Mage.Sets/src/mage/cards/h/HallOfGemstone.java b/Mage.Sets/src/mage/cards/h/HallOfGemstone.java index 15a65e890b8..9cd0715735c 100644 --- a/Mage.Sets/src/mage/cards/h/HallOfGemstone.java +++ b/Mage.Sets/src/mage/cards/h/HallOfGemstone.java @@ -123,7 +123,7 @@ class HallOfGemstoneEffect extends ReplacementEffectImpl { int genericAmount = mana.getGeneric(); int colorlessAmount = mana.getColorless(); int coloredAmount = mana.countColored(); - switch (colorChosen.getColoredManaSymbol()) { + switch (colorChosen.getOneColoredManaSymbol()) { case W: mana.setToMana(Mana.WhiteMana(coloredAmount)); break; diff --git a/Mage.Sets/src/mage/cards/p/ProtectiveSphere.java b/Mage.Sets/src/mage/cards/p/ProtectiveSphere.java index 61b81042325..17264baa7b5 100644 --- a/Mage.Sets/src/mage/cards/p/ProtectiveSphere.java +++ b/Mage.Sets/src/mage/cards/p/ProtectiveSphere.java @@ -124,7 +124,7 @@ class ProtectiveSphereEffect extends PreventionEffectImpl { if (event.getTargetId().equals(source.getControllerId()) && event.getSourceId().equals(target.getFirstTarget())) { colorsOfChosenSource = game.getObject(target.getFirstTarget()).getColor(game).getColors(); - if (colorsOfChosenSource.stream().anyMatch((c) -> (manaUsed.getColor(c.getColoredManaSymbol()) > 0))) { + if (colorsOfChosenSource.stream().anyMatch((c) -> (manaUsed.getColor(c.getOneColoredManaSymbol()) > 0))) { return true; } } diff --git a/Mage/src/main/java/mage/ObjectColor.java b/Mage/src/main/java/mage/ObjectColor.java index 0c055fa9d65..4d55762e60f 100644 --- a/Mage/src/main/java/mage/ObjectColor.java +++ b/Mage/src/main/java/mage/ObjectColor.java @@ -126,6 +126,8 @@ public class ObjectColor implements Serializable, Copyable, Compara newColor.black = black && other.black; newColor.red = red && other.red; newColor.green = green && other.green; + + newColor.gold = gold && other.gold; return newColor; } @@ -157,6 +159,7 @@ public class ObjectColor implements Serializable, Copyable, Compara List colors = new ArrayList<>(); int firstColor = 5000; int secondColor = -1; + if (this.isWhite()) { firstColor = 1; secondColor = 1; @@ -177,6 +180,7 @@ public class ObjectColor implements Serializable, Copyable, Compara firstColor = Math.min(firstColor, 5); secondColor = Math.max(secondColor, 5); } + if (this.isWhite()) { colors.add(ObjectColor.WHITE); } @@ -192,6 +196,7 @@ public class ObjectColor implements Serializable, Copyable, Compara if (this.isGreen()) { colors.add(ObjectColor.GREEN); } + if (colors.size() >= 2 && secondColor - firstColor >= 3) { Collections.swap(colors, 0, 1); } @@ -391,7 +396,11 @@ public class ObjectColor implements Serializable, Copyable, Compara if (test.green != this.green) { return false; } - return test.gold == this.gold; + if (test.gold != this.gold) { + return false; + } + + return true; } @Override @@ -465,10 +474,10 @@ public class ObjectColor implements Serializable, Copyable, Compara o1 = 4; } else if (this.isWhite()) { o1 = 5; - } else if (this.isGold()) { o1 = 6; } + if (o.isMulticolored()) { o2 = 7; } else if (o.isColorless()) { @@ -483,10 +492,10 @@ public class ObjectColor implements Serializable, Copyable, Compara o2 = 4; } else if (o.isWhite()) { o2 = 5; - } else if (o.isGold()) { o2 = 6; } + return o1 - o2; } @@ -496,7 +505,12 @@ public class ObjectColor implements Serializable, Copyable, Compara * * @return null or */ - public ColoredManaSymbol getColoredManaSymbol() { + public ColoredManaSymbol getOneColoredManaSymbol() { + + if (isMulticolored()) { + throw new IllegalStateException("Founded multicolored object, but it's must call with single mana color."); + } + if (isBlack()) { return ColoredManaSymbol.B; } diff --git a/Mage/src/main/java/mage/abilities/mana/AnyColorPermanentTypesManaAbility.java b/Mage/src/main/java/mage/abilities/mana/AnyColorPermanentTypesManaAbility.java index b94f573055c..e9c34732907 100644 --- a/Mage/src/main/java/mage/abilities/mana/AnyColorPermanentTypesManaAbility.java +++ b/Mage/src/main/java/mage/abilities/mana/AnyColorPermanentTypesManaAbility.java @@ -179,7 +179,7 @@ class AnyColorPermanentTypesManaEffect extends ManaEffect { else{ List permanentColors = permanent.getColor(game).getColors(); for (ObjectColor color : permanentColors){ - types.add(new Mana(color.getColoredManaSymbol())); + types.add(new Mana(color.getOneColoredManaSymbol())); } } }