diff options
Diffstat (limited to 'src/jrummikub')
-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) { |