From 45d5b3ae10ed8cfbecb5489636093c6fb0576970 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Wed, 8 Jun 2011 21:58:16 +0200 Subject: Implement pause function git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@390 72836036-5685-4462-b002-a69064685172 --- .../control/turn/AbstractTurnControl.java | 32 +++++++++++++++++---- src/jrummikub/control/turn/BaseAIControl.java | 26 +++++++++-------- src/jrummikub/control/turn/HumanTurnControl.java | 33 +++++++++++----------- src/jrummikub/control/turn/ITurnControl.java | 10 +++---- src/jrummikub/control/turn/TurnControlFactory.java | 8 +++--- 5 files changed, 65 insertions(+), 44 deletions(-) (limited to 'src/jrummikub/control/turn') diff --git a/src/jrummikub/control/turn/AbstractTurnControl.java b/src/jrummikub/control/turn/AbstractTurnControl.java index ae1e155..84c478a 100644 --- a/src/jrummikub/control/turn/AbstractTurnControl.java +++ b/src/jrummikub/control/turn/AbstractTurnControl.java @@ -16,7 +16,6 @@ import jrummikub.view.IView; * Abstract base class for TurnControls */ public abstract class AbstractTurnControl implements ITurnControl { - protected Event endOfTurnEvent = new Event(); protected Event redealEvent = new Event(); protected TurnInfo turnInfo; @@ -24,8 +23,7 @@ public abstract class AbstractTurnControl implements ITurnControl { protected IView view; protected ITurnTimer timer; protected List connections = new ArrayList(); - - + @Override public IEvent getEndOfTurnEvent() { return endOfTurnEvent; @@ -35,7 +33,17 @@ public abstract class AbstractTurnControl implements ITurnControl { public IEvent getRedealEvent() { return redealEvent; } - + + private void pauseTurn() { + timer.stopTimer(); + view.enablePauseMode(true); + } + + private void resumeTurn() { + timer.startTimer(); + view.enablePauseMode(false); + } + protected abstract void timeOut(); @Override @@ -52,15 +60,27 @@ public abstract class AbstractTurnControl implements ITurnControl { timeOut(); } })); + connections.add(view.getPauseEvent().add(new IListener() { + @Override + public void handle() { + pauseTurn(); + } + })); + connections.add(view.getEndPauseEvent().add(new IListener() { + @Override + public void handle() { + resumeTurn(); + } + })); } - + protected void cleanUp() { timer.stopTimer(); for (Connection c : connections) { c.remove(); } } - + public void abortTurn() { cleanUp(); } diff --git a/src/jrummikub/control/turn/BaseAIControl.java b/src/jrummikub/control/turn/BaseAIControl.java index 43ade18..11519c3 100644 --- a/src/jrummikub/control/turn/BaseAIControl.java +++ b/src/jrummikub/control/turn/BaseAIControl.java @@ -36,7 +36,7 @@ public class BaseAIControl extends AbstractTurnControl { timer.startTimer(); computeThread.start(); } - + protected void timeOut() { cleanUp(); endOfTurnEvent.emit(); @@ -49,15 +49,15 @@ public class BaseAIControl extends AbstractTurnControl { private void compute() { switch (turnInfo.getTurnMode()) { - case MAY_REDEAL: - emitRedeal(); - break; - case INSPECT_ONLY: - emitEndOfTurn(); - break; - case NORMAL_TURN: - turn(); - break; + case MAY_REDEAL: + emitRedeal(); + break; + case INSPECT_ONLY: + emitEndOfTurn(); + break; + case NORMAL_TURN: + turn(); + break; } } @@ -111,8 +111,10 @@ public class BaseAIControl extends AbstractTurnControl { for (Stone stone : set) { handStones.add(pickUpMatchingStone(stone)); } - turnInfo.getTable().drop(new StoneSet(handStones), new Position( - (float) Math.random() * 30 - 15, (float) Math.random() * 6 - 3)); + turnInfo.getTable().drop( + new StoneSet(handStones), + new Position((float) Math.random() * 30 - 15, + (float) Math.random() * 6 - 3)); } emitEndOfTurn(); diff --git a/src/jrummikub/control/turn/HumanTurnControl.java b/src/jrummikub/control/turn/HumanTurnControl.java index 02541d2..2ab7b21 100644 --- a/src/jrummikub/control/turn/HumanTurnControl.java +++ b/src/jrummikub/control/turn/HumanTurnControl.java @@ -48,7 +48,7 @@ public class HumanTurnControl extends AbstractTurnControl { HumanTurnControl(ITurnTimer testTimer) { this.timer = testTimer; } - + protected void timeOut() { endOfTurn(false); } @@ -97,13 +97,12 @@ public class HumanTurnControl extends AbstractTurnControl { } })); - connections.add(view.getPlayerPanel().getRedealEvent() - .add(new IListener() { - @Override - public void handle() { - endOfTurn(true); - } - })); + connections.add(view.getPlayerPanel().getRedealEvent().add(new IListener() { + @Override + public void handle() { + endOfTurn(true); + } + })); } private void addHandPanelHandlers() { @@ -304,8 +303,10 @@ public class HumanTurnControl extends AbstractTurnControl { } pickUpSelectedStones(); - turnInfo.getTable().drop(new StoneSet(selectedStones), new Position(position.getX() - - selectedStones.size() * 0.5f, position.getY() - 0.5f)); + turnInfo.getTable().drop( + new StoneSet(selectedStones), + new Position(position.getX() - selectedStones.size() * 0.5f, position + .getY() - 0.5f)); selectedStones.clear(); view.getTablePanel().setStoneSets(turnInfo.getTable()); @@ -421,15 +422,14 @@ public class HumanTurnControl extends AbstractTurnControl { turnInfo.getTable().drop(joinedSet, newPos); } else { StoneSet joinedSet = new StoneSet(selectedStones).join(newSet); - turnInfo.getTable().drop(joinedSet, new Position(newPos.getX() - - selectedStones.size(), newPos.getY())); + turnInfo.getTable().drop(joinedSet, + new Position(newPos.getX() - selectedStones.size(), newPos.getY())); } } else { turnInfo.getTable().drop( new StoneSet(selectedStones), - new Position(pos.getX() - + (set.getSize() - selectedStones.size()) * 0.5f, - pos.getY())); + new Position(pos.getX() + (set.getSize() - selectedStones.size()) + * 0.5f, pos.getY())); } selectedStones.clear(); @@ -521,8 +521,7 @@ public class HumanTurnControl extends AbstractTurnControl { static class HandStonePositionComparator implements Comparator> { @Override - public int compare(Pair pair1, - Pair pair2) { + public int compare(Pair pair1, Pair pair2) { Position pos1 = pair1.getSecond(), pos2 = pair2.getSecond(); if (pos1.getY() < pos2.getY()) { return -1; diff --git a/src/jrummikub/control/turn/ITurnControl.java b/src/jrummikub/control/turn/ITurnControl.java index 5a3d550..63290d5 100644 --- a/src/jrummikub/control/turn/ITurnControl.java +++ b/src/jrummikub/control/turn/ITurnControl.java @@ -43,6 +43,11 @@ public interface ITurnControl { */ public void startTurn(); + /** + * Abort the turn + */ + public void abortTurn(); + /** * The TurnInfo class encapsulates all information concerning the current turn */ @@ -108,9 +113,4 @@ public interface ITurnControl { return turnMode; } } - - /** - * Abort the turn - */ - public void abortTurn(); } \ No newline at end of file diff --git a/src/jrummikub/control/turn/TurnControlFactory.java b/src/jrummikub/control/turn/TurnControlFactory.java index 95396aa..b42f7ff 100644 --- a/src/jrummikub/control/turn/TurnControlFactory.java +++ b/src/jrummikub/control/turn/TurnControlFactory.java @@ -32,10 +32,10 @@ public abstract class TurnControlFactory { */ static public TurnControlFactory getFactory(Type type) { switch (type) { - case HUMAN: - return HumanTurnControl.getFactory(); - case COMPUTER: - return BaseAIControl.getFactory(); + case HUMAN: + return HumanTurnControl.getFactory(); + case COMPUTER: + return BaseAIControl.getFactory(); } return null; } -- cgit v1.2.3