summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/turn/BaseAIControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control/turn/BaseAIControl.java')
-rw-r--r--src/jrummikub/control/turn/BaseAIControl.java59
1 files changed, 56 insertions, 3 deletions
diff --git a/src/jrummikub/control/turn/BaseAIControl.java b/src/jrummikub/control/turn/BaseAIControl.java
index 98dceb3..2ed4c6e 100644
--- a/src/jrummikub/control/turn/BaseAIControl.java
+++ b/src/jrummikub/control/turn/BaseAIControl.java
@@ -1,21 +1,74 @@
package jrummikub.control.turn;
+import java.util.Date;
+
+import javax.swing.SwingUtilities;
+
import jrummikub.model.IHand;
import jrummikub.model.ITable;
import jrummikub.view.IView;
public class BaseAIControl extends AbstractTurnControl {
-
+ long startTime;
@Override
public void startTurn() {
+ Thread thread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ compute();
+ }
+ });
+ startTime = System.currentTimeMillis();
+ thread.start();
+
+ }
+
+ private void compute() {
if (mayRedeal) {
- redealEvent.emit();
+ emitRedeal();
} else {
- endOfTurnEvent.emit();
+ if (player.getLaidOut()) {
+ layOut();
+ } else {
+ emitEndOfTurn();
+ }
}
}
+ private void layOut() {
+ emitEndOfTurn();
+ }
+
+ private void emitRedeal() {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ redealEvent.emit();
+ }
+ });
+ }
+
+ private void emitEndOfTurn() {
+ long timeElapsed = System.currentTimeMillis() - startTime;
+ long waitTime = 2000 - timeElapsed;
+
+ if (waitTime > 0) {
+ try {
+ Thread.sleep(waitTime);
+ } catch (InterruptedException e) {
+ // This shouldn't happen
+ }
+ }
+
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ endOfTurnEvent.emit();
+ }
+ });
+ }
+
static public TurnControlFactory getFactory() {
return new TurnControlFactory() {
@Override