From 38f6f0dc24bd2755786f8a7947743feadb505b7f Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Thu, 5 May 2011 21:13:59 +0200 Subject: Add some endOfTurn handling to RoundControl git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@155 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/control/RoundControl.java | 34 +++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'src/jrummikub/control') 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 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 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(); } } -- cgit v1.2.3