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
This commit is contained in:
parent
21f866d2ea
commit
79bffeba5d
1 changed files with 12 additions and 10 deletions
|
@ -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) {
|
||||
|
|
Reference in a new issue