diff options
Diffstat (limited to 'src/jrummikub/model')
-rw-r--r-- | src/jrummikub/model/GameSettings.java | 26 | ||||
-rw-r--r-- | src/jrummikub/model/StoneSet.java | 43 |
2 files changed, 44 insertions, 25 deletions
diff --git a/src/jrummikub/model/GameSettings.java b/src/jrummikub/model/GameSettings.java index f52f8cf..2a2b45d 100644 --- a/src/jrummikub/model/GameSettings.java +++ b/src/jrummikub/model/GameSettings.java @@ -23,7 +23,7 @@ public class GameSettings implements Serializable { private int highestValue; private int stoneSetNumber; private int numberOfStonesDealt; - private int time; + private int totalTime; private boolean noLimits; private HashSet<StoneColor> stoneColors; @@ -34,6 +34,9 @@ public class GameSettings implements Serializable { reset(); } + /** + * Reset the game settings to the default values + */ public void reset() { initialMeldThreshold = 30; jokerPoints = 50; @@ -41,7 +44,7 @@ public class GameSettings implements Serializable { highestValue = 13; stoneSetNumber = 2; numberOfStonesDealt = 14; - time = 60; + totalTime = 60; noLimits = false; stoneColors = new HashSet<StoneColor>(Arrays.asList(BLACK, BLUE, ORANGE, RED)); @@ -151,12 +154,23 @@ public class GameSettings implements Serializable { this.stoneSetNumber = stoneSets; } - public int getTime() { - return time; + /** + * Getter for the time for a turn + * + * @return time for a turn + */ + public int getTotalTime() { + return totalTime; } - public void setTime(int time) { - this.time = time; + /** + * Setter for the time for a turn + * + * @param totalTime + * for a turn + */ + public void setTotalTime(int totalTime) { + this.totalTime = totalTime; } /** 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 * |