summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control')
-rw-r--r--src/jrummikub/control/RoundControl.java34
1 files changed, 26 insertions, 8 deletions
diff --git a/src/jrummikub/control/RoundControl.java b/src/jrummikub/control/RoundControl.java
index 8f8180d..00ebb6e 100644
--- a/src/jrummikub/control/RoundControl.java
+++ b/src/jrummikub/control/RoundControl.java
@@ -60,6 +60,7 @@ public class RoundControl {
endOfTurn();
}
});
+
turnControl.startTurn();
}
@@ -74,7 +75,27 @@ public class RoundControl {
}
private void endOfTurn() {
+ Set<Stone> tableDiff = tableDifference(gameState.getTable(), clonedTable);
+
+ if (!tableDiff.isEmpty()) { // Player has made a move
+ if (clonedTable.isValid()) {
+ gameState.setTable(clonedTable);
+
+ // TODO Win check
+ } else {
+ gameState.getGameHeap().putBack(tableDiff);
+ dealPenalty(tableDiff.size());
+ }
+ } else { // Player hasn't made a move
+ if (clonedTable.isValid()) {
+ gameState.setTable(clonedTable);
+ }
+
+ dealStone();
+ }
+ gameState.nextPlayer();
+ prepareTurn();
}
static Set<Stone> tableDifference(ITable oldTable, ITable newTable) {
@@ -94,15 +115,12 @@ public class RoundControl {
return ret;
}
- private void resetTable() {
-
- }
-
- private void preparePlayerTurn() {
-
- }
-
private void dealStone() {
+ // gameState.getActivePlayer().getHand().drop(object, position)
+ }
+ private void dealPenalty(int count) {
+ for (int i = 0; i < count + 3; ++i)
+ dealStone();
}
}