diff options
author | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-05-30 01:31:36 +0200 |
---|---|---|
committer | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-05-30 01:31:36 +0200 |
commit | b19a46b7b259f3a6e189ba594446be3ad54801f5 (patch) | |
tree | 405d28e31fd04009d49749ed0d8d87365b0bb6b4 /src/jrummikub/control/RoundControl.java | |
parent | 15558d7138efbf16a52d49484a6923b03514f453 (diff) | |
download | JRummikub-b19a46b7b259f3a6e189ba594446be3ad54801f5.tar JRummikub-b19a46b7b259f3a6e189ba594446be3ad54801f5.zip |
Implemented view code for AI turns
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@319 72836036-5685-4462-b002-a69064685172
Diffstat (limited to 'src/jrummikub/control/RoundControl.java')
-rw-r--r-- | src/jrummikub/control/RoundControl.java | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/jrummikub/control/RoundControl.java b/src/jrummikub/control/RoundControl.java index 5f46fd5..e1d2e97 100644 --- a/src/jrummikub/control/RoundControl.java +++ b/src/jrummikub/control/RoundControl.java @@ -7,6 +7,7 @@ import java.util.Set; import jrummikub.control.turn.ITurnControl; import jrummikub.control.turn.TurnControlFactory; +import static jrummikub.control.turn.TurnControlFactory.Type.*; import jrummikub.model.Hand; import jrummikub.model.IHand; import jrummikub.model.IPlayer; @@ -35,6 +36,7 @@ public class RoundControl { private Event restartRoundEvent = new Event(); private Event1<Score> endOfRoundEvent = new Event1<Score>(); private List<Connection> connections = new ArrayList<Connection>(); + private ITurnControl turnControl; private boolean roundFinished; /** @@ -76,26 +78,39 @@ public class RoundControl { } private void prepareTurn() { + boolean isHuman = roundState.getActivePlayer().getPlayerSettings().getTurnControlType() == HUMAN; clonedTable = (ITable) roundState.getTable().clone(); - view.enableStartTurnPanel(true); + + if (isHuman) { + view.enableStartTurnPanel(true); + } else { + view.enableThinkPanel(true); + } + view.getTablePanel().setStoneSets(clonedTable); view.setCurrentPlayerName(roundState.getActivePlayer() .getPlayerSettings().getName()); view.setCurrentPlayerColor(roundState.getActivePlayer() .getPlayerSettings().getColor()); view.setHasLaidOut(roundState.getActivePlayer().getLaidOut()); - + + if (!isHuman) + startTurn(); } private void startTurn() { + if (turnControl != null) + return; + boolean isHuman = roundState.getActivePlayer().getPlayerSettings().getTurnControlType() == HUMAN; boolean inspectOnly = roundState.getTurnNumber() < 1; boolean mayRedeal = inspectOnly && roundState.getActivePlayer().getHand() .getIdenticalStoneCount() >= 3; - view.getPlayerPanel().setEndTurnMode(inspectOnly, mayRedeal); - - ITurnControl turnControl = TurnControlFactory.getFactory(roundState.getActivePlayer() + if (isHuman) { + view.getPlayerPanel().setEndTurnMode(inspectOnly, mayRedeal); + } + turnControl = TurnControlFactory.getFactory(roundState.getActivePlayer() .getPlayerSettings().getTurnControlType()).create(); turnControl.setup(roundState.getActivePlayer(), clonedTable, view, inspectOnly, mayRedeal); @@ -142,6 +157,8 @@ public class RoundControl { } private void endOfTurn() { + view.enableThinkPanel(false); + turnControl = null; if (roundState.getTurnNumber() >= 1) { checkTurn(); } @@ -335,6 +352,7 @@ public class RoundControl { } private void redeal() { + turnControl = null; for (Connection c : new ArrayList<Connection>(connections)) { c.remove(); } |