summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/model/StoneHeap.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/model/StoneHeap.java')
-rw-r--r--src/jrummikub/model/StoneHeap.java23
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) {