diff options
author | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-05-24 22:33:08 +0200 |
---|---|---|
committer | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-05-24 22:33:08 +0200 |
commit | 79bffeba5d42a5b228c52f69b9e0b4e88f2e60e8 (patch) | |
tree | f6f3859bea3d8b7526e5f1b8bc71166ad23d5490 | |
parent | 21f866d2ea8aa4514b52b7117de326956d3daad9 (diff) | |
download | JRummikub-79bffeba5d42a5b228c52f69b9e0b4e88f2e60e8.tar JRummikub-79bffeba5d42a5b228c52f69b9e0b4e88f2e60e8.zip |
Fixed drawing single cards before the initial meld
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@269 72836036-5685-4462-b002-a69064685172
-rw-r--r-- | src/jrummikub/control/RoundControl.java | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/jrummikub/control/RoundControl.java b/src/jrummikub/control/RoundControl.java index d7a27bb..440e581 100644 --- a/src/jrummikub/control/RoundControl.java +++ b/src/jrummikub/control/RoundControl.java @@ -109,7 +109,7 @@ public class RoundControl { } } - private boolean laidOutEnough() { + private boolean laidOutValidPoints() { List<StoneSet> newSets = tableSetDifference(roundState.getTable(), clonedTable); @@ -118,13 +118,14 @@ public class RoundControl { totalValue += set.classify().getSecond(); } - return totalValue >= roundState.getGameSettings() - .getInitialMeldThreshold(); + return totalValue == 0 + || totalValue >= roundState.getGameSettings() + .getInitialMeldThreshold(); } private void endOfTurn() { checkTurn(); - + if (roundState.getLastPlayer() == null) { if (roundState.getGameHeap().getSize() == 0) { roundState.setLastPlayer(roundState.getNthNextPlayer(-1)); @@ -143,26 +144,27 @@ public class RoundControl { prepareTurn(); } } - + private void checkTurn() { if (!clonedTable.isValid()) { rejectMove(); return; - } + } if (!roundState.getActivePlayer().getLaidOut()) { // Player touched forbidden stones - if (!tableSetDifference(clonedTable, roundState.getTable()).isEmpty()) { + if (!tableSetDifference(clonedTable, roundState.getTable()) + .isEmpty()) { rejectMove(); return; } - if (!laidOutEnough()) { + if (!laidOutValidPoints()) { rejectMove(); return; } } Set<Stone> tableDiff = tableDifference(roundState.getTable(), clonedTable); - + roundState.setTable(clonedTable); if (tableDiff.isEmpty()) { @@ -182,7 +184,7 @@ public class RoundControl { // deal penalty, reset roundState.getGameHeap().putBack(tableDiff); dealPenalty(tableDiff.size()); - + } static Set<Stone> tableDifference(ITable oldTable, ITable newTable) { |