diff options
author | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-05-24 01:51:53 +0200 |
---|---|---|
committer | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-05-24 01:51:53 +0200 |
commit | d9a0b0e37dbdde6d60fa4ee41c2a100547e7824b (patch) | |
tree | 3d711c9b7d75ebdda72966d7cfaf72d92fe12216 /src/jrummikub/control | |
parent | b20961b89dd07be5ac2ff3b7fd1132eca0944ac4 (diff) | |
download | JRummikub-d9a0b0e37dbdde6d60fa4ee41c2a100547e7824b.tar JRummikub-d9a0b0e37dbdde6d60fa4ee41c2a100547e7824b.zip |
Implemented special case round end (heap empty)
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@262 72836036-5685-4462-b002-a69064685172
Diffstat (limited to 'src/jrummikub/control')
-rw-r--r-- | src/jrummikub/control/GameControl.java | 3 | ||||
-rw-r--r-- | src/jrummikub/control/RoundControl.java | 22 |
2 files changed, 22 insertions, 3 deletions
diff --git a/src/jrummikub/control/GameControl.java b/src/jrummikub/control/GameControl.java index b5d763a..1d93c63 100644 --- a/src/jrummikub/control/GameControl.java +++ b/src/jrummikub/control/GameControl.java @@ -1,6 +1,7 @@ package jrummikub.control; import jrummikub.model.GameSettings; +import jrummikub.model.IRoundState; import jrummikub.model.RoundState; import jrummikub.util.IListener; import jrummikub.view.IView; @@ -51,7 +52,7 @@ public class GameControl { return; } - RoundState roundState = new RoundState(gameSettings); + IRoundState roundState = new RoundState(gameSettings); roundControl = new RoundControl(roundState, view); roundControl.getEndRoundEvent().add(new IListener() { diff --git a/src/jrummikub/control/RoundControl.java b/src/jrummikub/control/RoundControl.java index 072aa7f..2080cf4 100644 --- a/src/jrummikub/control/RoundControl.java +++ b/src/jrummikub/control/RoundControl.java @@ -28,6 +28,7 @@ public class RoundControl { private ITable clonedTable; private Event endRoundEvent = new Event(); private List<Connection> connections = new ArrayList<Connection>(); + private boolean roundFinished; /** * Create a new RoundControl using the given gameState and view @@ -123,8 +124,24 @@ public class RoundControl { private void endOfTurn() { checkTurn(); - roundState.nextPlayer(); - prepareTurn(); + + if (roundState.getLastPlayer() == null) { + if (roundState.getGameHeap().getSize() == 0) { + roundState.setLastPlayer(roundState.getNthNextPlayer(-1)); + } else { + roundState.nextPlayer(); + } + } else { + if (roundState.getActivePlayer() == roundState.getLastPlayer()) { + // TODO check who has won + win(); + } else { + roundState.nextPlayer(); + } + } + if (!roundFinished) { + prepareTurn(); + } } private void checkTurn() { @@ -224,5 +241,6 @@ public class RoundControl { } endRoundEvent.emit(); view.enableWinPanel(true); + roundFinished = true; } } |