summaryrefslogtreecommitdiffstats
path: root/src/jrummikub
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub')
-rw-r--r--src/jrummikub/control/RoundControl.java22
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) {