diff options
Diffstat (limited to 'src/jrummikub/model/StoneSet.java')
-rw-r--r-- | src/jrummikub/model/StoneSet.java | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/src/jrummikub/model/StoneSet.java b/src/jrummikub/model/StoneSet.java index c1d7a5d..02fd797 100644 --- a/src/jrummikub/model/StoneSet.java +++ b/src/jrummikub/model/StoneSet.java @@ -84,25 +84,7 @@ public class StoneSet implements Iterable<Stone>, Sizeable, Serializable { } if (nonJoker == -1) { - if (stones.size() > settings.getHighestValue() - && stones.size() > settings.getStoneColors().size() - && !settings.isNoLimits()) { - return new Pair<Type, Integer>(INVALID, 0); - } else if (stones.size() > settings.getStoneColors().size()) { - int value = 0; - int stoneValue = settings.getHighestValue(); - for (int i = 0; i < stones.size(); i++) { - value += stoneValue; - stoneValue--; - if (stoneValue == 0) { - stoneValue = settings.getHighestValue(); - } - } - return new Pair<Type, Integer>(RUN, value); - } else { - return new Pair<Type, Integer>(GROUP, stones.size() - * settings.getHighestValue()); - } + return classifyJokersOnly(settings, nonJoker); } int runScore = isValidRun(nonJoker, settings); @@ -117,6 +99,29 @@ public class StoneSet implements Iterable<Stone>, Sizeable, Serializable { } } + private Pair<Type, Integer> classifyJokersOnly(GameSettings settings, + int nonJoker) { + if (stones.size() > settings.getHighestValue() + && stones.size() > settings.getStoneColors().size() + && !settings.isNoLimits()) { + return new Pair<Type, Integer>(INVALID, 0); + } else if (stones.size() > settings.getStoneColors().size()) { + int value = 0; + int stoneValue = settings.getHighestValue(); + for (int i = 0; i < stones.size(); i++) { + value += stoneValue; + stoneValue--; + if (stoneValue == 0) { + stoneValue = settings.getHighestValue(); + } + } + return new Pair<Type, Integer>(RUN, value); + } else { + return new Pair<Type, Integer>(GROUP, stones.size() + * settings.getHighestValue()); + } + } + /** * Test for rule conflict within the StoneSet, assuming we have a run * |