From 79bffeba5d42a5b228c52f69b9e0b4e88f2e60e8 Mon Sep 17 00:00:00 2001 From: Jannis Harder Date: Tue, 24 May 2011 22:33:08 +0200 Subject: 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 --- src/jrummikub/control/RoundControl.java | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/jrummikub/control/RoundControl.java') 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 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 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 tableDifference(ITable oldTable, ITable newTable) { -- cgit v1.2.3