diff --git a/forge-gui/src/main/java/forge/limited/DeckColors.java b/forge-gui/src/main/java/forge/limited/DeckColors.java index b93a20f06a6..99964e2de39 100644 --- a/forge-gui/src/main/java/forge/limited/DeckColors.java +++ b/forge-gui/src/main/java/forge/limited/DeckColors.java @@ -25,8 +25,8 @@ import forge.item.IPaperCard; public class DeckColors { - private ColorSet chosen; - private int colorMask; + protected ColorSet chosen; + protected int colorMask; public int MAX_COLORS = 2; diff --git a/forge-gui/src/main/java/forge/limited/FullDeckColors.java b/forge-gui/src/main/java/forge/limited/FullDeckColors.java index 770a5114e3b..62b87ae3262 100644 --- a/forge-gui/src/main/java/forge/limited/FullDeckColors.java +++ b/forge-gui/src/main/java/forge/limited/FullDeckColors.java @@ -1,5 +1,9 @@ package forge.limited; +import forge.card.ColorSet; +import forge.card.MagicColor; +import forge.item.IPaperCard; + /** * Created by maustin on 11/05/2017. */ @@ -7,4 +11,26 @@ public class FullDeckColors extends DeckColors { public FullDeckColors(){ MAX_COLORS = 5; } + + public void addColorsOf(final IPaperCard pickedCard) { + final ColorSet colorsCanAdd = chosen.inverse(); + final ColorSet toAdd = colorsCanAdd.getSharedColors(pickedCard.getRules().getColorIdentity()); + + int cntColorsAssigned = getChosenColors().countColors(); + final boolean haveSpace = cntColorsAssigned < MAX_COLORS; + if (!haveSpace || toAdd.isColorless()) { + return; + } + + for (final byte color : MagicColor.WUBRG) { + if (toAdd.hasAnyColor(color)) { + colorMask |= color; + chosen = null; // invalidate color set + cntColorsAssigned++; + } + if (cntColorsAssigned >= MAX_COLORS) { + break; + } + } + } }