diff options
Diffstat (limited to 'src/jrummikub/model/StoneHeap.java')
-rw-r--r-- | src/jrummikub/model/StoneHeap.java | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/jrummikub/model/StoneHeap.java b/src/jrummikub/model/StoneHeap.java index 8199672..27c8d01 100644 --- a/src/jrummikub/model/StoneHeap.java +++ b/src/jrummikub/model/StoneHeap.java @@ -3,7 +3,6 @@ package jrummikub.model; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.EnumSet; import java.util.List; import java.util.Random; @@ -24,21 +23,25 @@ public class StoneHeap { * */ public StoneHeap(GameSettings gameSettings) { heap = new ArrayList<Stone>(); - for (int i = 1; i <= 13; i++) { + for (int i = 1; i <= gameSettings.getHighestCard(); i++) { for (int j = 0; j < gameSettings.getStoneSetNumber(); j++) { - for (StoneColor c : EnumSet.allOf(StoneColor.class)) { + for (StoneColor c : gameSettings.getStoneColors()) { heap.add(new Stone(i, c)); } } } // Joker - - ArrayList<StoneColor> jokerColors = new ArrayList<StoneColor>(Arrays.asList(StoneColor.values())); - - StoneColor temp = jokerColors.get(1); - jokerColors.set(1, jokerColors.get(3)); - jokerColors.set(3, temp); - + + ArrayList<StoneColor> jokerColors = new ArrayList<StoneColor>( + Arrays.asList(StoneColor.values())); + jokerColors.retainAll(gameSettings.getStoneColors()); + + if (jokerColors.size() >= 4) { + StoneColor temp = jokerColors.get(1); + jokerColors.set(1, jokerColors.get(3)); + jokerColors.set(3, temp); + } + int jokersLeft = gameSettings.getJokerNumber(); done: while (true) { for (StoneColor c : jokerColors) { |